🎓 レベル:標準 | 重要度:A(必須)
📎 前提:多属性効用理論(MAUT)・階層分析法(AHP) | 関連:経営の意思決定とシナリオ分析
要点(BLUF)
- 多基準評価の結論は重みに依存します。重みは主観なので、「その重みが少し違ったら結論は変わるか」を必ず確かめます——これが感度分析です。
- 重みを動かして最良案が入れ替わる点(順位逆転点) を探し、現在の重みがそこからどれだけ離れているかで結論の頑健性を測ります。
- 僅差の結論ほど重みのブレに弱い。感度分析は「この結論をどれだけ信じてよいか」を定量化し、意思決定の説得力を高めます。
1. なぜ感度分析が必須か
重み(多属性効用理論(MAUT))や一対比較(階層分析法(AHP))は、突き詰めれば主観です。コストの重みが0.5なのか0.55なのか、厳密な根拠はありません。だとすれば問うべきは「重みがこの範囲で動いても、選ぶべき案は同じか?」。
- 結論が重みに鈍感なら:多少重みがズレても安心して採用できる(頑健)。
- 結論が重みに敏感なら:重みのわずかな違いで勝者が変わる。重みの根拠をもっと詰めるか、僅差として複数案を残す。
感度分析をしない多基準評価は、「たまたまその重みだから出た結論」を絶対視する危うさを抱えます。
2. 重みを動かして順位逆転を探す
多属性効用理論(MAUT)の車の例で、コストの重み を動かし、残りを性能:快適性=3:2 で配分しながら、最良案の変化を追います。
import numpy as np
names = ["A", "B", "C"]
# 正規化済みの部分効用(04-02 と同じ):[コスト, 性能, 快適性]
norm = {
"A": np.array([0.000, 1.0, 0.4]),
"B": np.array([1.000, 0.0, 0.0]),
"C": np.array([0.333, 0.5, 1.0]),
}
print("コスト重み w_cost を動かす(残りは性能:快適性=3:2)")
for wc in [0.2, 0.4, 0.5, 0.55, 0.6, 0.8]:
rest = 1 - wc
w = np.array([wc, rest*0.6, rest*0.4]) # コスト・性能・快適性
scores = {a: np.dot(w, norm[a]) for a in names}
best = max(scores, key=scores.get)
s_str = " ".join(f"{a}={scores[a]:.3f}" for a in names)
print(f" w_cost={wc:.2f}: {s_str} -> 最良 {best}")
出力:
コスト重み w_cost を動かす(残りは性能:快適性=3:2)
w_cost=0.20: A=0.608 B=0.200 C=0.627 -> 最良 C
w_cost=0.40: A=0.456 B=0.400 C=0.553 -> 最良 C
w_cost=0.50: A=0.380 B=0.500 C=0.517 -> 最良 C
w_cost=0.55: A=0.342 B=0.550 C=0.498 -> 最良 B
w_cost=0.60: A=0.304 B=0.600 C=0.480 -> 最良 B
w_cost=0.80: A=0.152 B=0.800 C=0.407 -> 最良 B
出力の意味:コストの重みが低い〜中程度(〜0.50)ではバランス型の C が勝ち、0.55を超えると最安の B に逆転します。順位逆転点は 付近。現在の重み0.50はこの境界のすぐ手前——つまり結論「Cが最良」は重みに敏感で僅差です。コストをあと少し重視する人なら結論はBになる。「Cが最良」を採用するなら、「コスト重視がそこまで強くないという前提で」と注釈すべき、と分かります。
3. 感度分析の読み方
感度分析の結果は、次の3つの観点で読みます。
- 逆転点までの距離:現在の重みが順位逆転点から遠いほど、結論は頑健。上の例は距離が小さく、結論は脆い。
- どの属性に敏感か:コスト重みに敏感(B↔C)だが、快適性重みにはそれほど敏感でないかもしれない。鍵となる属性を特定できる。
- 僅差の扱い:スコア差が小さい(0.50付近のCとBは0.017差)なら、無理に1つに決めず「実質互角、他の定性的理由で選ぶ」のも合理的。
感度分析は「結論を覆す」ためでなく、「結論がどんな前提に支えられているかを可視化する」ために行います。これは経営の意思決定とシナリオ分析のシナリオ思考——前提を変えて結論の安定性を見る——と同じ精神です。
数式の直観的意味:順位逆転は線形の交点
総合スコア は、重み について線形です。2案 のスコア差 も の線形関数。だから重みを1次元的に動かすと、各案のスコアは直線で、順位逆転は2直線の交点として現れます。上の例で C と B のスコアは の直線で、交点 がちょうど逆転点。線形だからこそ、逆転点は連立方程式で厳密に解けます—— を について解けば、グリッド探索なしで境界が出ます。重み空間が高次元なら、この交点は「超平面」になり、現在の重みからその超平面までの距離が頑健性の尺度になります。
⚠️ よくある誤解
- 「最良案が1つ出たら確定」ではない:その案がどんな重みのもとで最良かを確かめないと、結論の意味が分かりません。僅差なら逆転は容易です。
- 「重みを1つずつ動かせば十分」とは限らない:1要素ずつ(OAT: one-at-a-time)の感度分析は相互作用を見落とします。重要な決定では複数重みを同時に動かす(ランダムサンプリングやシナリオ)方が安全です。
- 「感度が高い=悪い分析」ではない:感度が高いのは問題の性質(案が拮抗している)であって分析の欠陥ではありません。むしろ「拮抗している」と知ることが価値です。
- 「正規化を変えても感度は同じ」ではない:部分効用の正規化(min-maxか別か)を変えると逆転点も動きます。感度分析は使った正規化・重み定義の上での結論です。
対応シミュレーション
本文のコードで、動かす重みをコスト以外(性能・快適性)に変えると、逆転点や敏感さが属性ごとに違うことが見えます。逆転点を二分探索や連立方程式で厳密に求める拡張も容易です。
関連ノート
- 第4章 多基準意思決定 目次
- 多属性効用理論(MAUT) — 前提:重み付き和のスコア
- 階層分析法(AHP) — 重みの出どころ(一対比較)も感度の対象
- 経営の意思決定とシナリオ分析 — 前提を変えて結論の安定性を見る思考
- 意思決定分析・リスク分析 全体目次