Sobol 感度指標シミュレーター 戻る
不確かさ定量化 (UQ)

Sobol 感度指標 (S₁/S_T) シミュレーター

入力の不確かさが出力分散にどう効くかを「主効果」と「相互作用」に分解して見える化する大域感度解析ツールです。解析モデル f = a₁X₁ + a₂X₂ + a₃X₁X₂ で、係数と分散をスライダーで変えながら 1次 Sobol 指標 S_i、全 Sobol 指標 S_Ti、相互作用 S_ij の寄与率をリアルタイムに比較できます。

パラメータ設定
a₁ (X₁線形係数)
X₁ の主効果の強さ。0 にすると X₁ の主効果は消える
a₂ (X₂線形係数)
X₂ の主効果の強さ
a₃ (X₁X₂相互作用係数)
交互作用項の強さ。0 で加法モデルになり S_T = S が成立
X₁の分散 σ₁²
X₁ の不確かさ(平均 0 を仮定)
X₂の分散 σ₂²
X₂ の不確かさ(平均 0 を仮定、X₁と独立)
計算結果
全分散 Var[Y]
1次 Sobol S₁
1次 Sobol S₂
全 Sobol S_T₁
全 Sobol S_T₂
相互作用 S₁₂ (%)
ANOVA 分解の可視化 — 入力分布から出力分散へ

X₁ と X₂ の入力分布から f(X) の出力分布が生まれ、その分散が V₁・V₂・V₁₂ の3成分に分解されます。色の幅が各寄与の大きさ(S_i)を表します。

寄与率の積み上げ棒 — V₁ / V₂ / V₁₂
相互作用係数 a₃ に対する全指標 S_T₁ の変化
理論・主要公式

$$Var[Y] = \sum_i V_i + \sum_{i\lt j} V_{ij} + \cdots,\quad S_i = \frac{V_i}{Var[Y]},\quad S_{Ti} = S_i + \sum_{j\neq i} S_{ij} + \cdots$$

ANOVA分解で全分散を主効果 V_i と交互作用 V_{ij} に分解する。1次指標 S_i と全指標 S_Ti の差が、入力 i が他の入力と絡んで効く「交互作用の重要度」を示す。

$$f(X_1,X_2) = a_1 X_1 + a_2 X_2 + a_3 X_1 X_2,\quad V_1 = a_1^2\sigma_1^2,\; V_2 = a_2^2\sigma_2^2,\; V_{12} = a_3^2\sigma_1^2\sigma_2^2$$

独立な X₁・X₂(平均 0)に対しては各成分が閉形式で求まる。a₃ = 0 のとき加法モデルとなり S_T = S が成立する。

Sobol感度指標と大域感度解析

🙋
「感度解析」って、入力を少し動かして出力がどれだけ変わるか見るやつですよね?それと「Sobol 指標」って何が違うんですか?
🎓
いいところを突くね。学部で習う感度って ∂f/∂x をある点で計算する「局所感度」がほとんどなんだけど、Sobol はそれと別物で「大域感度解析(GSA)」と呼ばれる流派なんだ。入力 X_i を確率変数とみなして、その分布全体を回したときに出力 Y の分散がどれだけ X_i のせいで動いているか、を寄与率(0〜1)で答える。だから出力が非線形・非加法的でも正確に効き目を比べられる。CFD や気候モデルみたいに動作点が広範囲なものでは、これがほぼ標準だね。
🙋
右下の「1次 S₁」と「全 S_T₁」って、似てるけど別の値が出てますね。デフォルトだと S₁=0.643 で S_T₁=0.714。この差は何ですか?
🎓
そこが Sobol の一番面白いところ。1次 S_i は「X_i 単独で固定したときに出力分散がどれだけ減るか」、つまり主効果だけの寄与率。全 S_Ti は「X_i 以外を全部固定したときに残る分散の割合」、つまり主効果+他の入力との交互作用を全部含めた寄与率なんだ。差 S_T₁ − S₁ = 0.071 がちょうど「X₁ が X₂ と絡んで効いている量」で、これがゼロなら加法モデル、ゼロでなければ非加法。スライダーの a₃ を 0 にすると S₁ と S_T₁ が一致するのが見えるよ。
🙋
なるほど!じゃあ、相互作用係数 a₃ を大きくすると、S_T₁ がどんどん大きくなる…ってことですか?
🎓
そう。下の「a₃ に対する S_T₁ の変化」グラフを見ると、|a₃| を増やすほど S_T₁ が 1 に近づくのが分かる。物理的には「X₁ の効きが X₂ の値次第で変わる」状況。例えば翼の揚力係数を「迎角×マッハ数」の関数で考えると、迎角の効きはマッハ数によって全然違うよね。そういう場面では、S₁ だけ見て「迎角は中くらい重要」と判断するとミスリードで、S_T を見て初めて「本当の重要度」が分かるんだ。
🙋
実際の CFD や FEM では、こんなにキレイな解析式は無いと思うんですが、どうやって Sobol を計算してるんですか?
🎓
サンプリングだね。Saltelli の推定法というのが標準で、入力次元 d に対し N×(d+2) 回モデルを評価して S_i と S_Ti を一気に出す。例えば d=10、N=1024 なら約 12,000 回。CFD で 1 ケース 1 時間なら 500 日コース…なので、実務では先に「サロゲートモデル」(クリギング・PCE・NN)を作って、安いその上で Sobol を回す。さらに、まず Morris の初等効果でスクリーニングして S_T が大きそうな数本に絞る、という二段構えがコスパ的に主流だよ。
🙋
S_T が小さい入力は、もうモデルから消しちゃっていいんですか?
🎓
基本的にはイエスで、それが「次元削減」と呼ばれる Sobol のもう一つの主用途。S_Ti ≈ 0 なら出力分散にほぼ効かないので、平均値で固定してパラメータ数を減らせる。ただし2点だけ注意。まず「今の入力分布範囲内」での話なので、レンジを広げると寄与が復活することがある。もう一つ、Sobol は分散ベースなので「平均値(バイアス)には効くけど分散には効かない」入力を見落とす。安全率や設計余裕みたいに「平均がどこにあるか」が大事な量には、別途感度を見ること。これ忘れて「S_T 小さいから無視」とやって痛い目を見るチーム、けっこう多いよ。

よくある質問

1次指標 S_i は「入力 X_i 単独」の主効果による分散寄与率で、S_i = V_i/Var[Y] です。全指標 S_Ti は X_i を含む全ての項(主効果+全ての相互作用)の寄与率で、S_Ti = S_i + Σ_{j≠i} S_{ij} + … になります。両者の差 S_Ti − S_i が「X_i が他の入力とどれだけ絡んで効いているか」の指標で、これが大きい入力は単独で固定しても出力分散が思ったほど減らない、という診断に使えます。
Morris法(要素的初等効果)や偏相関係数 PCC・標準化回帰係数 SRC は計算が速い反面、入力分布の局所での感度しか見ません。出力が非線形・非加法的な場合、これらの局所指標は誤った順位を返すことがあります。Sobol は「入力の確率分布全体」を考慮した大域感度解析(GSA)で、加法性も線形性も仮定しません。代わりに収束には N×(d+2) 程度の評価が必要(Saltelli推定)でコストが高いため、まず Morris でスクリーニングし、絞った数本に Sobol を当てる、という二段構えが実務的です。
Saltelli 法では、入力次元 d と基底サンプル数 N に対して合計 N×(d+2) 回の評価で S_i と S_Ti を両方とも推定できます(拡張型は N×(2d+2))。例えば d=5、N=1024 なら約 7,000 回のモデル評価が必要です。CFD/FEM など 1 回数十分かかる解析では、サロゲートモデル(クリギング・PCE・ニューラルネット)を先に学習し、その上で Sobol を回すのが定石です。本ツールのように解析式が分かっていれば閉形式で正確な値が出ますが、現実のモデルではほぼ常にサンプリング法を使います。
S_Ti ≈ 0 の入力は出力分散にほぼ寄与しないので、UQ の範囲内では「固定値に置き換えてもよい入力」と判断できます。これが Sobol の代表的な用途である「次元削減」と「スクリーニング」です。ただし注意点が2つあります。第一に、削るのは「現在の入力分布の範囲内」での話で、分布範囲を広げると寄与が復活する可能性があること。第二に、S_T は分散ベースの指標なので、出力の平均値(バイアス)には影響する入力を見落とすこと。安全率や設計許容値など平均値が重要な量には、別途感度を確認してください。

実世界での応用

CFD 設計最適化:翼型まわりの抗力係数 C_D を出力にして、迎角・マッハ数・レイノルズ数・乱流モデル定数など 10〜30 個の入力で Sobol を回すと、設計に対する真の支配パラメータが分かります。「マッハ数の S_T₁ が 0.7」など定量的な順位が出るので、設計空間の絞り込みやサロゲート学習サンプリングの優先度付けに直結します。OpenFOAM + Dakota や SU2 + UQpy の組み合わせが典型例です。

FEM 構造解析の許容設計:材料定数(ヤング率・降伏応力・密度)と形状寸法(厚さ・R 形状)のばらつきが、最大応力や固有振動数の分散にどう寄与するかを Sobol で評価します。S_T が突出した入力は許容公差を厳しくする、S_T がほぼ 0 の入力は規格上限まで緩めてコストを下げる、といった設計判断ができます。航空・自動車の認証文書でも UQ レポートが要求されつつあります。

気候・環境モデル:大気循環モデル GCM では数百のパラメタライゼーション定数があり、雲量や気温感度(ECS)の不確かさのどれが何由来かを解きほぐすのに Sobol が標準ツール。IPCC 報告書の不確かさ評価でも分散分解の考え方が使われています。1 回数時間〜数日のモデルを直接 Sobol するのは無理なので、PCE(多項式カオス展開)でサロゲートを作り、その上で計算するのが主流です。

機械学習モデルの説明性:近年は ML モデル(NN、勾配ブースティング)の特徴量重要度を SHAP の代わりに Sobol で算出する研究が増えています。SHAP がローカルな寄与に強いのに対し、Sobol は入力分布全体での寄与を見るので、データセット全体の挙動を要約するのに向いています。バイオ・医療・金融の規制対応で「説明可能 AI」の根拠として採用されはじめています。

よくある誤解と注意点

まず最大の落とし穴が、「入力どうしが相関している場合の S_i・S_Ti の解釈」です。本ツールも標準 Sobol も「入力は互いに独立」を前提にしています。実務では「降水量と気温」のように相関する入力が普通で、独立を仮定したまま Sobol を回すと、相関する入力どうしで寄与を奪い合って解釈不能な順位になります。対策としては相関込みの拡張版(Kucherenko の方法、Mara & Tarantola の Shapley 効果)を使うか、PCA で無相関な主成分に変換してから感度解析するのが定石です。「とりあえず Sobol を回した」結果を、入力の独立性を確認せずに信じてはいけません。

次に、「サンプリングのコンバージェンスを見ない」こと。Saltelli 推定は N→∞ で真値に収束しますが、有限 N では推定誤差があり、特に S_T はバイアスが残りやすい。N=128 で出した S_T₁=0.3 が、N=4096 に増やすと S_T₁=0.6 だった、というのは普通に起きます。実務では N を 2 倍ずつ増やして S_i・S_Ti が安定するまで監視する、ブートストラップで信頼区間を出す、という当たり前のチェックが必要です。学会発表のスライドで S_T の数字だけ並んでいて、収束プロットと信頼区間がない論文は、まず信用しないこと。

最後に、「Sobol だけで設計を決める」こと。Sobol は分散ベースなので、出力分布の「形」全体ではなく「広がり」しか見ません。例えば「大半は安全だが、ごく稀に壊滅的に大きな値が出る」分布(ヘビーテール)では、Sobol で順位の低い入力が実はテールリスクの主因、ということが起こります。重要度の評価軸は分散だけでなく、平均、テール確率(VaR/CVaR)、特定閾値超過確率など複数あり、それぞれ別の感度指標(モーメント独立指標 δ_i、PAWN、Borgonovo の δ)を併用するのが UQ の現代的なお作法です。Sobol を「全能の感度ツール」と思い込まないこと。

使い方ガイド

  1. 左側のパネルで f = a₁X₁ + a₂X₂ + a₃X₁X₂ の各係数(a₁、a₂、a₃)を入力します。例えば鋼製フレーム解析では a₁=150、a₂=80、a₃=5 のように設定します。
  2. X₁とX₂の入力分散(varX1、varX2)を指定します。Var[X₁]=0.25、Var[X₂]=0.16 など均一分布の範囲から決定します。
  3. シミュレータが ANOVA 分解に基づき全分散 Var[Y]、1次感度指標 S₁・S₂、全感度指標 S_T₁・S_T₂、相互作用項 S₁₂ をリアルタイム計算し、各寄与率(%)を表示します。

具体的な計算例

熱伝導パネルの熱流束 Y = 120X₁ + 95X₂ + 3X₁X₂ を想定(X₁:温度差、X₂:面積)。Var[X₁]=0.04、Var[X₂]=0.09 のとき、全分散 Var[Y]=576(W²)、S₁≈83.3%(X₁単独寄与)、S₂≈15.6%(X₂単独寄与)、S₁₂≈1.1%(相互作用)となります。S_T₁≈84.4% と S₁ の差異は高次相互作用を示唆しています。

実務での注意点

  1. 相互作用係数 a₃ が大きい場合(機械的クリアランスとはめあい公差など),S_T₁ と S₁ の乖離が顕著になります。単独効果だけでなく全感度で制御対象を選定してください。
  2. 入力分散の非対称性(例:Var[X₁]=0.01、Var[X₂]=0.49)は感度ランキングを大きく変化させます。実験計画時に設計領域の不確実性を正確に反映させることが重要です。
  3. S_Tᵢ < 0.05 の入力パラメータは低感度として固定値化することで計算コストを削減できます。航空機構造設計の Monte Carlo サンプリング削減に有効です。