🙋
「感度解析」って聞いたことはあるんですけど、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 のような手法のほうが適している場合があります。