Mímisbrunnr知恵の泉

← 意思決定分析 一覧

🎓 レベル:標準 | 重要度:A(必須)

📎 前提:重み付けと感度分析 | 関連:モンテカルロ・シミュレーションによるリスク分析・経営戦略(シナリオプランニング)

要点(BLUF)

1. シナリオ分析:結論の幅を見る

経営判断では、需要・価格・コストの確率分布を正確に与えるのは困難です。そこで、いくつかの代表シナリオで結論がどう変わるかを見ます。

結論(利益・NPVなど)が3シナリオでどう動くかを見れば、「最悪でも耐えられるか」「最良でどこまで伸びるか」が分かります。これはマクシミン・マクシマックス基準の最悪・最良の考え方を、複数の要因が絡む現実の計画に広げたものです。

2. トルネード図:何が結論を左右するか

シナリオ分析の弱点は、複数の要因を同時に動かすので「どの要因が効いたか」が分からないこと。これを補うのが一方向感度分析=トルネード図です。各要因を1つずつ、その変動範囲の端から端まで動かし(他は基準値に固定)、結論の振れ幅を測ります。

import numpy as np

base = dict(price=100, unit_cost=60, volume=1000, fixed=20000)
def profit(price, unit_cost, volume, fixed):
    return (price - unit_cost)*volume - fixed

base_profit = profit(**base)
print(f"ベース利益 = {base_profit:.0f}")

# 各要因の変動範囲(他は基準値に固定して、単独で動かす)
ranges = {"単価": ("price", 90, 110), "単位原価": ("unit_cost", 50, 70),
          "数量": ("volume", 800, 1200), "固定費": ("fixed", 15000, 25000)}
swings = {}
for label, (k, lo, hi) in ranges.items():
    p_lo = profit(**{**base, k: lo})
    p_hi = profit(**{**base, k: hi})
    swings[label] = abs(p_hi - p_lo)
    print(f"  {label}: 利益 {min(p_lo,p_hi):.0f}{max(p_lo,p_hi):.0f}  振れ幅 {swings[label]:.0f}")

order = sorted(swings, key=swings.get, reverse=True)
print("影響の大きい順:", order)

出力:

ベース利益 = 20000
  単価: 利益 10000〜30000  振れ幅 20000
  単位原価: 利益 10000〜30000  振れ幅 20000
  数量: 利益 12000〜28000  振れ幅 16000
  固定費: 利益 15000〜25000  振れ幅 10000

出力の意味:利益を最も左右するのは単価と単位原価(ともに振れ幅20000)、次いで数量(16000)、固定費(10000)。トルネード図はこれを「振れ幅の大きい順に上から並べた横棒」で描き、上ほど長い棒が並ぶ竜巻状の形になります。経営の含意は明確:単価と原価の精度向上・コントロールに資源を集中し、固定費の精緻な見積りには労力をかけすぎない。「すべてを等しく分析する」のでなく、結論を動かす変数を見極めて注力する——これが感度分析の実務的価値です。

3. シナリオ思考と頑健な意思決定

トルネードで重要要因を特定したら、その要因について深掘りします。

シナリオ分析もトルネードも、目的は「正確な予測」ではなく「結論がどの前提に支えられ、どこで覆るかを知る」こと。不確実な経営環境で、決定の頑健性を確かめる安全装置です。

数式の直観的意味:一方向感度は偏微分、シナリオは同時変動

トルネード図の各棒は、結論 YY の要因 xkx_k に対する偏微分(の有限差分) に、その変動幅を掛けたものに近い量です。

振れ幅kYxk×(xk の変動幅)\text{振れ幅}_k \approx \left|\frac{\partial Y}{\partial x_k}\right| \times (\text{$x_k$ の変動幅})

利益 Y=(pc)VFY = (p - c)V - F なら、Y/p=V=1000\partial Y/\partial p = V = 1000Y/V=pc=40\partial Y/\partial V = p - c = 40。単価の感度(係数1000)が数量の感度(係数40)より大きく見えても、変動幅(単価±10 vs 数量±200)を掛けると順位が変わりうる——だから「係数の大きさ」でなく「係数×変動幅」で並べるのがトルネードの要点です。一方、シナリオ分析は複数の xkx_k同時に動かすので、要因間の相互作用(2Y/pV\partial^2 Y/\partial p\,\partial V など)や相関を捉えられますが、個々の寄与は分離できません。両者は補完関係——トルネードで犯人を特定し、シナリオで合わせ技の影響を見る。さらに各要因に確率分布を与えて全要因を同時にランダムに動かせば、次のモンテカルロ・シミュレーションによるリスク分析になります。一方向(偏微分)→ 数シナリオ(離散の同時変動)→ モンテカルロ(連続の同時変動)と、感度分析は解像度を上げていきます。

⚠️ よくある誤解

対応シミュレーション

本文のコードで、各要因の変動範囲を変えるとトルネードの順位が変わります。係数の大きい要因でも変動幅が小さければ順位が下がる——「係数×幅」が効くことを確認できます。

関連ノート