Skip to main content
感度解析は、入力パラメータの変化がモデル出力にどのように影響するかを定量化します。この実装は SALib ライブラリを通じて分散ベースの SOBOL 指数を使用し、モデル予測に最も強く影響するパラメータを特定します。

主要な概念

一次指数 (S1)

各パラメータが出力分散に直接寄与する割合。S1 が 0.3 であれば、そのパラメータ単独で分散の 30% を説明することを意味します。

全次指数 (ST)

そのパラメータが関わる直接効果と全相互作用効果の合計。ST - S1 は相互作用の強さを示します。

二次指数 (S2)

パラメータ間の 2 者間相互作用。計算コストは高いものの、パラメータ間の結合を明らかにします。

ワークフロー

感度解析はモデルのフィット後に実行します。フィットがパラメータの範囲を定め、感度解析はその範囲をサンプリングして、各パラメータがモデル出力にどれだけ影響するかを集計します。
感度解析は ionworkspipelineフィット後・プロセス内の機能です。ionworks-schema の要素や ionworks-api のエンドポイントとしては公開されていないため、Ionworks に送信するパイプライン設定に含めることはできません。

結果の解釈

感度解析は次の形式で SOBOL 指数を返します。

解釈の例

S1 = [0.65, 0.25]ST = [0.72, 0.35] の場合:
  • 説明されない分散: 1 - sum(S1) = 10% は結合的な相互作用に起因
  • 総合効果の合計が 1 を超える理由: 相互作用の寄与は両方のパラメータにまたがって数えられるため
あるパラメータの ST がほぼ 0 の場合、そのパラメータは指定した範囲内でモデル出力にほとんど影響しません。そのパラメータを固定するか、範囲が物理的に妥当かどうかを確認することを検討してください。

設定オプション

サンプルサイズ

SOBOL アルゴリズムは n_samples × (2 × n_params + 2) 回の評価を生成します。推奨事項:
  • 2 のべき乗を使う: 256、512、1024
  • 値を大きくすると信頼区間は狭まりますが、計算時間は増加します
  • 探索的な解析ではまず 256 から始めてください

二次指数

要素 S2[i,j] は、パラメータ ij の個別の効果を超えた相互作用を定量化します。計算にはより多くのサンプルが必要ですが、どのパラメータが結合しているかを明らかにします。

実践的なワークフロー

1

初期パラメータスクリーニング

中程度のサンプルサイズ(256)で実行し、重要なパラメータを特定します。ST < 0.05 のパラメータは通常無視できます。
2

解析の精緻化

重要なパラメータについては、サンプルサイズを増やして(例: 1024)信頼区間を狭めます。
3

相互作用の調査

複数のパラメータで ST − S1 が大きい場合は、二次指数を有効にしてどのペアが結合しているかを調べます。

評価失敗への対処

一部のパラメータの組み合わせでモデル評価が失敗した場合、解析は警告を出します — 例えば「15 out of 853 evaluations (1.76%) failed」のように。失敗した評価が多い場合(5% 超):
  • パラメータ範囲が物理的に妥当か確認する
  • パラメータ空間全体でモデルの安定性を検証する
  • フィット済みの値の周りで範囲を狭めることを検討する

対数変換オプション

コスト関数の値域が極端に広い場合は、解析中に対数変換を適用してください。対数変換を使うと、感度はパラメータによるコストの加法的な変化ではなく、乗法的な変化を表すようになります。

数学的背景

SOBOL 指数は分散ベースの尺度であり、出力の全分散を個々のパラメータとその相互作用による寄与に分解します。この手法はモデルをブラックボックスとして扱い、パラメータ空間全体をサンプリングするため、大域的 な感度解析手法にあたります。これは、単一の点付近の挙動しか特徴づけない勾配ベースの感度のような局所的手法とは対照的です。

分散分解

モデル Y=f(X1,X2,,Xp)Y = f(X_1, X_2, \ldots, X_p) を考えます。ここで XiX_i は独立な入力パラメータです。出力の全分散は次のように分解できます。 V(Y)=iVi+i<jVij++V1,2,,pV(Y) = \sum_i V_i + \sum_{i<j} V_{ij} + \cdots + V_{1,2,\ldots,p} ここで ViV_i はパラメータ ii 単独による分散への寄与、VijV_{ij} はパラメータ iijj の相互作用を表し、それ以上の高次の相互作用についても同様です。

一次指数

一次指数 SiS_i は、相互作用を除いた、パラメータ XiX_i の出力分散への直接的な寄与を測定します。 Si=VXi(EXi(YXi))V(Y)S_i = \frac{V_{X_i}(E_{X_{\sim i}}(Y|X_i))}{V(Y)} 記法 XiX_{\sim i} は「XiX_i を除くすべてのパラメータ」を意味します。内側の期待値 EXi(YXi)E_{X_{\sim i}}(Y|X_i) は、XiX_i を固定した状態で他のすべてのパラメータについて平均を取ります。外側の分散 VXi()V_{X_i}(\cdot) は、この条件付き平均が XiX_i の変化に応じてどれだけ変動するかを測定します。 解釈: Si=0.3S_i = 0.3 であれば、出力分散の 30% は相互作用を考慮しない XiX_i 単独に直接起因します。

全次指数

全次指数 STiS_{T_i} は、XiX_i の直接効果と XiX_i が関わるすべての相互作用の両方を捉えます。 STi=EXi(VXi(YXi))V(Y)=1VXi(EXi(YXi))V(Y)S_{T_i} = \frac{E_{X_{\sim i}}(V_{X_i}(Y|X_{\sim i}))}{V(Y)} = 1 - \frac{V_{X_{\sim i}}(E_{X_i}(Y|X_{\sim i}))}{V(Y)} STiSiS_{T_i} - S_i は、パラメータ ii の影響のうちどれだけが他のパラメータとの相互作用を通じて生じているかを定量化します。 解釈: STi0S_{T_i} \approx 0 であれば、そのパラメータは相互作用を含めても出力にほとんど影響を与えておらず、モデルの忠実度を損なうことなく固定できる可能性があります。

二次指数

二次指数 SijS_{ij} は、パラメータ iijj の間の相互作用効果のみを取り出します。 Sij=VXi,Xj(EXij(YXi,Xj))V(Y)SiSjS_{ij} = \frac{V_{X_i,X_j}(E_{X_{\sim ij}}(Y|X_i,X_j))}{V(Y)} - S_i - S_j これは個々の一次効果を差し引くことで、どちらか一方のパラメータだけには帰属できない結合的な寄与のみを明らかにします。 解釈: SijS_{ij} が大きい場合、パラメータ ii の効果がパラメータ jj の値に依存する(またはその逆)ことを示します。この結合は、物理的な依存関係や識別可能性の問題を示唆している可能性があります。

Saltelli 推定量

SOBOL 指数の計算には高次元の積分評価が必要です。Saltelli サンプリング方式は、それぞれサイズ n×pn \times p の 2 つの独立なサンプル行列 A\mathbf{A}B\mathbf{B} を用いて、効率的なモンテカルロ推定量を提供します。 各パラメータ ii について、ハイブリッド行列 AB(i)\mathbf{A}_B^{(i)} は、列 ii を除くすべての列を A\mathbf{A} から取り、その列は B\mathbf{B} から取って構成されます。 一次指数の推定量: S^i=1nj=1nf(B)j(f(AB(i))jf(A)j)V(Y)\hat{S}_i = \frac{\frac{1}{n}\sum_{j=1}^{n} f(\mathbf{B})_j(f(\mathbf{A}_B^{(i)})_j - f(\mathbf{A})_j)}{V(Y)} 全次指数の推定量: S^Ti=12nj=1n(f(A)jf(AB(i))j)2V(Y)\hat{S}_{T_i} = \frac{\frac{1}{2n}\sum_{j=1}^{n} (f(\mathbf{A})_j - f(\mathbf{A}_B^{(i)})_j)^2}{V(Y)} この方式では、一次指数と全次指数の計算に n(2p+2)n(2p + 2) 回のモデル評価が必要です。ここで nn は基本サンプルサイズ、pp はパラメータ数です。計算コストはパラメータ数に対して線形にスケールするため、中程度の次元の問題であれば扱いやすくなっています。

他の手法との比較

本格的な MCMC サンプリングを行う前に感度解析を実施し、どのパラメータが計算コストをかける価値があるかを見極めてください。

参考文献

  1. Herman, J., & Usher, W. (2017). SALib: An open-source Python library for Sensitivity Analysis. Journal of Open Source Software, 2(9), 97.
  2. Saltelli, A., et al. (2010). Variance based sensitivity analysis of model output. Computer Physics Communications, 181(2), 259-270.