Morris 法スクリーニングシミュレーター 戻る
不確かさ定量化 (UQ)

Morris 法(基本効果)スクリーニングシミュレーター

大域感度解析の最安価な手法「Morris の基本効果(Elementary Effects)法」を Web 上で実行できるツールです。因子数・軌道数・グリッドレベルを変えると、μ*(重要度)と σ(非線形・相互作用)が同時に求まり、Sobol 解析に進む前にどの入力因子を残すべきかを直感的に判断できます。

パラメータ設定
因子数 k
スクリーニング対象の入力因子の数(モデル次元)
軌道数 r
OAT 軌道の本数。μ*・σ の推定精度に直結
グリッドレベル p
入力空間の離散化(偶数、Δ = p/(2(p−1)))
テスト関数
スクリーニングの対象となるサロゲートモデル
G* 関数係数 a
小さいほど因子の影響が大きい(a→0 で支配的)
計算結果
因子数 k
サンプル数 r·(k+1)
ステップ Δ
重要因子 #1 μ*
重要因子数(μ* > 平均)
相互作用が顕著な因子数
OAT 軌道サンプリング(μ-σ 平面)

各因子を μ*(横軸)と σ(縦軸)で散布。右上ほど「重要かつ非線形・相互作用が強い」因子。軌道は r 本の OAT パスを動的にサンプリングする様子を示します。

因子重要度ランキング μ*
μ-σ 散布図(非線形・相互作用の検知)
理論・主要公式

$$EE_i = \frac{y(x+\Delta e_i) - y(x)}{\Delta},\quad \mu_i^* = \frac{1}{r}\sum_{j=1}^{r}|EE_i^{(j)}|,\quad \sigma_i = \mathrm{std}(EE_i)$$

μ* が大きい因子は重要、σ が μ* に対して大きい因子は非線形・相互作用が強い。Δ = p/(2(p−1))、サンプル数 = r·(k+1)。

$$g(x)=\prod_{i=1}^{k}\frac{|4x_i-2|+a_i}{1+a_i},\qquad a_i = 0.5\,i$$

Sobol-g 関数(標準ベンチマーク)。係数 a_i が小さい因子ほど出力への寄与が大きくなる。

Morris 法(基本効果)スクリーニングとは

🙋
「感度解析」って聞いたことはあるんですけど、Morris 法って何が特別なんですか?Sobol 法とどう違うのかも、いまいちピンとこなくて……。
🎓
いい質問だね。ざっくり言うと、Morris 法は「安いスクリーニング」、Sobol 法は「高精度な定量化」だ。Sobol で全因子の感度指標を厳密に求めようとすると、典型的に N·(2k+2) 回くらいモデルを回す。N=1000、k=20 なら 42,000 回。CAE で 1 回 1 時間かかるモデルだと現実的じゃない。Morris はそれを r·(k+1)、たとえば 10·21=210 回くらいで「とりあえず重要そうな因子はこれ」と当たりをつける手法なんだ。
🙋
なるほど、まず Morris で絞ってから Sobol、って流れですね。でも「OAT」って書いてあるじゃないですか。OAT って大学では「ダメな方法の代表」って習った気がするんですけど……。
🎓
よく覚えてたね(笑)。確かに古典的な OAT(1 因子だけ動かして他を固定)は、空間の 1 点周りしか見ないから大域的な感度を取れない。Morris の賢いところは、OAT を 1 本の「軌道」として、それを r 本ランダムに散らすこと。各軌道は (k+1) 点を踏むから、合計 r·(k+1) 点が入力空間全体に広がる。これで「いろんな場所での 1 階差分」が集まるから、平均すれば大域的な感度になるんだ。
🙋
右の μ-σ 平面、面白いですね。点が右上に行くほど何かが起きてる感じです。これって何を見てるんですか?
🎓
縦軸 σ が大きい因子は「他の因子の値によって効き方が変わる」、つまり相互作用や非線形が強い。横軸 μ* が大きいのは「総合的に効く重要因子」。だから右上の点は 「重要だけど一筋縄でいかない要注意因子」。左下は「効かないので落として OK」。Morris の真骨頂は、この 1 枚の図で因子を 4 象限に振り分けられることなんだ。
🙋
じゃあ、相互作用が強い右上の因子は Sobol に持ち込んで詳しく調べる、という使い方ですか?
🎓
その通り。重要かつ σ も大きい因子は、Sobol の「全次効果指標 S_T」と「一次効果 S_1」の差を見ると、どの因子と組んで効いているかが分かる。実務では、たとえば 「軸受の摩擦係数と潤滑温度」みたいに、単独では小さくても掛け合わせで効くペアが見つかることがある。Morris で右上に出てきた因子は、Sobol に渡す前にメッシュやモデル化方針も再点検する価値があるよ。

よくある質問

Morris 法は安価な「スクリーニング」、Sobol 法は厳密な「定量化」と覚えるとよいです。Morris は r·(k+1) 回程度のモデル評価で μ* と σ を得られ、重要因子の選別と非線形性の検知に向きます。一方 Sobol 法は分散分解で一次・全次の感度指標を厳密に求められますが、N·(2k+2) 回(典型的に N=1000 程度)と一桁以上多くのモデル評価が必要です。実務では高コスト CAE モデルにまず Morris を当てて「動かす意味のある因子」を 5〜10 個程度に絞り、その後 Sobol で詳細指標を計算するワークフローが標準です。
μ* は基本効果 EE の絶対値の平均で、その因子が出力に与える「総合的な影響力(重要度)」を表します。σ は EE の標準偏差で、因子の効果が他因子の値や入力位置に依存する度合い、つまり「非線形性 + 相互作用」を表します。読み方の典型は次の 4 通りです。(1) μ* 小・σ 小:効果なし、削除可。(2) μ* 大・σ 小:単独で線形に効く重要因子。(3) μ* 大・σ 大:重要だが相互作用や非線形が強く要注意。(4) μ* 小・σ 大:単独効果は小さいが他因子と組合せで効くケース。
実用的な目安は r = 10〜20、p = 4 または 6(偶数、Δ = p/(2(p−1)))です。r を増やすと μ* と σ の推定誤差は概ね 1/√r で減りますが、計算コストは r·(k+1) で線形に増えます。p を大きくすると入力空間を細かくサンプリングできますが、Δ が小さくなり差分が数値ノイズに埋もれやすくなります。OAT 軌道の代わりに Campolongo(2007)の最大化拡散軌道や、Saltelli 流のラジアル設計を使うと、同じ r でも空間カバレッジが上がり推定が安定します。
3 つあります。(1) 出力が不連続・閾値型のモデル:差分 EE が大きく振れて σ が無意味になります。前処理で出力を平滑化するか、感度指標自体を Sobol で計算してください。(2) 強い相互作用がある場合:μ と μ* が乖離し、符号情報が消えるため Campolongo 改良版(μ* を使う)が必須です。(3) 因子数 k が極端に大きい(k>100):r·(k+1) でも数千評価になるため、まずグループ化 Morris(因子を群として扱う)で粗くスクリーニングし、重要群の内部だけを個別に Morris で詳しく見るのが定石です。

実世界での応用

自動車衝突 CAE のモデル校正:クラッシュ FEM では、降伏応力、硬化指数、シェル板厚、接触摩擦、減衰係数など、不確かさを伴うパラメータが数十個並びます。1 ケース 6〜12 時間かかるため、Sobol を直接掛けると数週間。実務では Morris を r=10、k=30 程度で当てて 1 晩で予備計算し、上位 5〜7 因子を Sobol に渡す流れが定着しています。重要因子だけ実車試験で測り直すことで校正コストも下がります。

気候・水文モデルの寡少観測条件:地表面熱収支や土壌水分モデルでは、観測の少ない地域でパラメータ範囲が広く設定されます。Morris で「観測が無くてもよい因子」と「観測精度を上げないと予測がぶれる因子」を切り分け、限られた観測予算をどこに集中させるかの意思決定に使います。気候モデルでは Saltelli らが Morris ベースのスクリーニングを推奨しています。

創薬・PK/PD モデル:母集団薬物動態モデルでは個体差を含むと数十変数になり、ベイズ推定が重い。Morris でクリアランス・分布容積・吸収速度などの中から個体差をモデル化すべき因子だけを選び、残りは固定して MCMC を高速化する手順が報告されています。FDA への承認資料でも感度解析の事前スクリーニングとして使われます。

制御系・ロバスト設計:ゲイン・時定数・遅れ・センサノイズなど、制御ループのパラメータ感度を Morris で当たり、重要因子をモンテカルロでロバスト性評価、非重要因子は中央値固定でシミュレーション本数を削減します。Six Sigma の DOE と組み合わせて「実験計画を絞り込むための事前解析」としても活用されます。

よくある誤解と注意点

まず最大の落とし穴は、「μ が小さいから効かない、と判断する」こと。Morris の原典では μ(符号付き平均)を使いますが、効果の符号が因子位置によって反転する場合、μ は正負で打ち消し合ってゼロに近づきます。実は強く効いているのに「効かない」と誤判定してしまう。Campolongo らが提案した μ*(絶対値平均) を使えばこの問題は解消されます。本ツールも μ* を主指標として表示しています。新しい感度解析ライブラリ(SALib、UQLab 等)は標準で μ* を返しますが、古い実装では μ のままのものもあるので注意してください。

次に、「軌道数 r を増やせばいくらでも精度が上がる」という誤解。推定誤差は確かに 1/√r で減りますが、r=4 と r=10 の差は大きくても、r=20 と r=50 の差は意外と小さいことが多い。コストは k+1 倍されるので、r=50・k=20 だと 1050 評価になります。実務的な閾値は r=10〜20、もしくは「上位 3 因子のランキングが r を増やしても変わらない」状態です。Campolongo の「最大化拡散軌道」を使うと、ランダム OAT と比べて少ない r で同等の精度が得られます。SALib の morris.sample(num_levels=p, optimal_trajectories=r) で簡単に使えます。

最後に、「Morris のスコアを Sobol の感度指標と同列に解釈してはいけない」。μ* はあくまで「平均的な勾配の大きさ」であって、Sobol の分散ベース指標とは数学的に異なります。論文等で「感度 30%」のような寄与率の数字を出す場合は必ず Sobol(または PCE)で再計算してください。Morris の結果は ランキングと有意性の閾値 として使い、絶対値の解釈は控えるのが安全です。また、不連続な出力(あり/なし、閾値超え)には Morris は不向きで、決定木ベースの SHAP のような手法のほうが適している場合があります。

使い方ガイド

  1. 因子数(k)を設定します。例えば化学反応器の温度・圧力・触媒濃度など3~8因子を想定
  2. 軌道数(r)とグリッドレベル(p)を入力。r=10軌道、p=4レベル(0.25刻み)が標準設定です
  3. シミュレーション実行後、μ*(平均絶対感度)と σ(標準偏差)の2次元プロットで因子を分類。μ*が大きい因子を重要因子として Sobol 解析に進めます

具体的な計算例

射出成形金型の冷却解析で因子数k=5(冷却水温度・流量・金型材料の熱伝導率・インゲート径・成形温度)、r=20軌道、p=5レベルでスクリーニング。結果:μ*が冷却水流量で0.89、インゲート径で0.67、その他因子で平均0.23。σが冷却水流量で0.34、成形温度で0.42(非線形・相互作用が強い)と判定されます

実務での注意点