Mímisbrunnr知恵の泉

← 意思決定分析 一覧

🎓 レベル:発展 | 重要度:A(必須)

📎 前提:期待効用と効用関数期待効用への反例(Allais・Ellsberg) | 関連:フレーミング効果リスクの測り方(分散・下方リスク)

要点(BLUF)

1. 期待効用の何を変えたか

期待効用(期待効用と効用関数)は jpju(wj)\sum_j p_j\,u(w_j) ——確率はそのまま、効用は富の絶対水準の関数でした。プロスペクト理論はこれを2点で変えます。

V=jw(pj)v(xj)V = \sum_j w(p_j)\, v(x_j)

この2つの変更が、規範理論では説明できなかった現実の選択を記述します。

2. 価値関数:参照点・損失回避

価値関数 v(x)v(x) は3つの特徴を持ちます。Tversky–Kahneman (1992) の標準形は v(x)=xαv(x) = x^\alpha(利得)、v(x)=λ(x)βv(x) = -\lambda(-x)^\beta(損失)、α=β=0.88, λ=2.25\alpha=\beta=0.88,\ \lambda=2.25

import numpy as np

alpha, beta, lam = 0.88, 0.88, 2.25
def value(x):
    return x**alpha if x >= 0 else -lam*(-x)**beta

print(f"v(+100) = {value(100):.2f}")
print(f"v(-100) = {value(-100):.2f}")
print(f"損失/利得の感応度比 = |v(-100)/v(+100)| = {abs(value(-100)/value(100)):.2f}")

出力:

v(+100) = 57.54
v(-100) = -129.47
損失/利得の感応度比 = |v(-100)/v(+100)| = 2.25

出力の意味:同じ100でも、利得の価値は+57.5、損失の価値は−129.5。損失の痛みは利得の喜びの2.25倍です。これが損失回避。「1万円拾う嬉しさ」より「1万円落とす悔しさ」が大きいという普遍的な感覚を、λ=2.25\lambda=2.25 という1つの数字で表現しています。損失回避は、保有効果(持っているものを手放したくない)・現状維持バイアス・サンクコストへの固執など、多くの現象の根にあります。

3. 確率加重関数:小確率の過大評価

確率加重関数 w(p)w(p) は、客観確率 pp を意思決定上の重み w(p)w(p) に変換します。標準形 w(p)=pγ(pγ+(1p)γ)1/γw(p) = \dfrac{p^\gamma}{(p^\gamma + (1-p)^\gamma)^{1/\gamma}}γ=0.61\gamma=0.61

import numpy as np

gamma = 0.61
def w(p):
    return p**gamma / (p**gamma + (1-p)**gamma)**(1/gamma)

print("客観確率 p -> 決定加重 w(p):")
for p in [0.01, 0.05, 0.10, 0.50, 0.90, 0.99]:
    rel = "過大評価" if w(p) > p else "過小評価"
    print(f"  p={p:.2f}: w(p)={w(p):.3f}  ({rel})")

出力:

客観確率 p -> 決定加重 w(p):
  p=0.01: w(p)=0.055  (過大評価)
  p=0.05: w(p)=0.132  (過大評価)
  p=0.10: w(p)=0.186  (過大評価)
  p=0.50: w(p)=0.421  (過小評価)
  p=0.90: w(p)=0.712  (過小評価)
  p=0.99: w(p)=0.912  (過小評価)

出力の意味:確率1%は決定上5.5%の重みで効きます(5倍以上の過大評価)。一方、確率90%は71%の重みに縮む(過小評価)。小さい確率を過大、中〜大を過小に評価するのが確率加重の特徴です。これが「宝くじ(極小確率の大当たり)を買う」かつ「保険(極小確率の大損失に備える)に入る」という、期待効用では両立しにくい行動を同時に説明します。そして期待効用への反例(Allais・Ellsberg)のAllaisの確実性効果——確実(p=1p=1)が特別扱いされる——も、w(1)=1w(1)=1 だが w(0.99)=0.91w(0.99)=0.91 と、確実性の手前で重みが急落することから自然に出てきます。

4. 図で見る2つの関数

価値関数の屈折と、確率加重のS字を並べます。

import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib

alpha, beta, lam = 0.88, 0.88, 2.25
value = lambda x: np.where(x >= 0, np.abs(x)**alpha, -lam*np.abs(x)**beta)
gamma = 0.61
w = lambda p: p**gamma / (p**gamma + (1-p)**gamma)**(1/gamma)

fig, ax = plt.subplots(1, 2, figsize=(11, 4.2))
x = np.linspace(-100, 100, 400)
ax[0].plot(x, value(x), lw=2, color="crimson")
ax[0].plot(x, x, "--", color="gray", alpha=0.6, label="参照(線形)")
ax[0].axhline(0, color="gray", lw=0.8); ax[0].axvline(0, color="gray", lw=0.8)
ax[0].set_title("価値関数:損失側が急(損失回避)")
ax[0].set_xlabel("参照点からの変化 x"); ax[0].set_ylabel("価値 v(x)")
ax[0].legend(); ax[0].grid(alpha=0.3)

p = np.linspace(0, 1, 200)
ax[1].plot(p, w(p), lw=2, color="navy", label="確率加重 w(p)")
ax[1].plot(p, p, "--", color="gray", alpha=0.6, label="客観確率 p")
ax[1].set_title("確率加重:小確率を過大・中〜大を過小")
ax[1].set_xlabel("客観確率 p"); ax[1].set_ylabel("決定加重 w(p)")
ax[1].legend(); ax[1].grid(alpha=0.3)
plt.tight_layout(); plt.show()

図の意味:左は価値関数。原点で折れ曲がり、損失側(左下)の傾きが利得側(右上)より急——損失回避が一目で分かります。右は確率加重。対角線(客観確率)より、小確率では上(過大)、大確率では下(過小) にあるS字。2つの非線形性が、期待効用の直線的な評価を曲げ、現実の選択に合わせています。

数式の直観的意味:規範からの「3つのねじれ」

プロスペクト理論は、期待効用 pju(wj)\sum p_j u(w_j) に3つのねじれを加えたものです。

重要なのは、プロスペクト理論が規範を否定するのでなく記述すること。「人はこうねじれて評価する」と言うだけで、「こう評価すべきだ」とは言いません。だから期待効用(規範)とプロスペクト理論(記述)は対立せず、役割が違う——規範はベンチマーク、記述は現実の予測。両方を持って初めて、人の選択を理解し(記述)、改善を設計できる(ナッジと選択アーキテクチャ)。

⚠️ よくある誤解

対応シミュレーション

本文のコードで、λ\lambda(損失回避)や γ\gamma(確率加重の曲率)を変えると、価値関数の屈折や加重のS字が変わります。これらを使ってフレーミング効果の選好反転を数値で再現できます。

関連ノート