感度分析は、特定の条件下での従属変数に対する独立因子のコレクションの影響を判断するために使用されます。
これは、モデルの出力がモデルの入力によって一般的にどのように影響を受けるかを判断するための強力なアプローチです。 この投稿では、無料のPython感度分析パッケージであるSALibを使用した感度分析の概要を簡単に説明します。
感度指数と呼ばれる数値は、多くの場合、各入力の感度を表します。 感度指数には多くの種類があります。
- 一次指数:単一のモデル入力の出力分散への寄与を計算します。
- XNUMX次インデックス:出力分散に対するXNUMXつのモデル入力の寄与を計算します。
- 全順序指数:XNUMX次効果(入力が単独で変動する)と高次の交互作用の両方を含む、出力分散に対するモデル入力の寄与を定量化します。
SALibとは何ですか?
SALib Pythonベースです オープンソースの 感度評価を行うためのツールキット。 独立したワークフローがあります。つまり、数学モデルや計算モデルと直接相互作用することはありません。 代わりに、SALibは、モデル入力の生成(サンプル関数のXNUMXつを介して)と、モデル出力からの感度インデックスの計算(分析関数のXNUMXつを介して)を担当します。
典型的なSALib感度分析は、次のXNUMXつのステップで構成されます。
- モデル入力(パラメーター)とそれぞれのサンプル範囲を決定します。
- モデル入力を作成するには、サンプル関数を実行します。
- 生成された入力を使用してモデルを評価し、モデルの結果を保存します。
- 感度指数を計算するには、出力で分析関数を使用します。
Sobol、Morris、およびFASTは、SALibが提供する感度分析メソッドのほんの一部です。 後で説明するように、特定のアプリケーションに最適なアプローチには多くの要因が影響します。 当面は、使用する手法に関係なく、サンプリングと分析のXNUMXつの関数を使用するだけでよいことに注意してください。 SALibの利用方法を説明するための基本的な例を紹介します。
SALibの例–Sobolの感度分析
この例では、以下に示すように、石神関数のSobolの感度を調べます。 非線形性と非単調性が高いため、石神関数は不確実性と感度分析の方法論を評価するために広く使用されています。
手順は次のとおりです。
1.SALibのインポート
最初のステップは、必要なライブラリを追加することです。 SALibのサンプル関数と分析関数は、Pythonモジュールで区別されています。 たとえば、衛星サンプルとSobol分析機能のインポートを以下に示します。
SALibでテスト関数として使用できるIshigami関数も使用します。 最後に、SALibがNumPyを使用してモデルの入力と出力をマトリックスに格納するため、NumPyをインポートします。
2.モデル入力
次に、モデル入力を定義する必要があります。 Ishigami関数は、x1、x2、およびx3のXNUMXつの入力を受け入れます。 SALibでは、以下に示すように、入力の数、それらの名前、および各入力の制限を指定するdictを作成します。
3.サンプルとモデルを生成します
次に、サンプルが生成されます。 Sobol感度分析を行っているため、Saltelliサンプラーを使用してサンプルを作成する必要があります。 この場合、param値はNumPyマトリックスです。 param values.shapeを実行すると、行列が8000x3であることがわかります。 Saltelliサンプラーを使用して8000個のサンプルが作成されました。 Saltelliサンプラーはサンプルを作成します。ここで、Nは1024(提供したパラメーター)、Dは3(モデル入力の数)です。
前述のように、SALibは数学的または計算モデルの評価には関与していません。 モデルがPythonで記述されている場合は、通常、各サンプル入力をループしてモデルを評価します。
モデルがPythonで開発されていない場合は、サンプルをテキストファイルに保存できます。
param values.txtの各行は、XNUMXつのモデル入力を表します。 モデルの出力は、各行にXNUMXつの出力を使用して、同様のスタイルで別のファイルに保存する必要があります。 その後、出力には次のものがロードされます。
この例では、SALibのIshigami関数を使用します。 これらのテスト機能は、次のように評価できます。
4.分析を実行します
モデルの結果をPythonに読み込んだ後、最終的に感度インデックスを計算できます。 この例では、sobol.analyzeを使用して、XNUMX次、XNUMX次、および全順序のインデックスを計算します。
Siは、「S1」、「S2」、「ST」、「S1 conf」、「S2 conf」、「STconf」のキーを持つPython辞書です。 _confキーは、関連する信頼区間を保持します。これは通常、95パーセントに設定されています。 すべてのインデックスを出力するには、キーワードパラメータprint to console=Trueを使用します。 または、以下に示すように、Siから個々の値を出力することもできます。
x1とx2には一次感度があることがわかりますが、x3には一次影響がないようです。
全順序指数がXNUMX次指数よりも大幅に大きい場合、高次の交互作用が最も確実に発生します。 これらの高次の相互作用は、XNUMX次のインデックスを見るとわかります。
x1とx3には重要な相互作用があることがわかります。 その後、結果はさらに調査するためにPandasDataFrameに変換される場合があります。
5.プロット
あなたの便宜のために、基本的なチャート作成機能が提供されます。 plot()関数は、後続の操作のためにmatplotlib軸オブジェクトを生成します。
まとめ
SALibは、洗練された感度分析ツールキットです。 SALibの他の手法には、フーリエ振幅感度テスト(FAST)、モリス法、およびデルタモーメントに依存しない測定が含まれます。 これはPythonライブラリですが、あらゆる種類のモデルで動作することを目的としています。
SALibは、モデル入力を作成し、モデル出力を評価するための使いやすいコマンドラインインターフェイスを提供します。 チェックアウト SALibドキュメント to learn more.
コメントを残す