🎓 レベル:発展 | 重要度:B(標準)
📎 前提:交差検証とLOO | 数理:事前・尤度・事後・周辺尤度
要点(BLUF)
- ベイズファクター は周辺尤度の比。データがどちらのモデルを何倍支持するかを表す、モデル比較・仮説検定のベイズ版です。
- 周辺尤度はオッカムの剃刀を内蔵:広い事前を持つ複雑なモデルは自動的に罰されます。ただし事前の幅に強く依存します(リンドリーの逆説)。
- **ベイズモデル平均化(BMA)**は単一モデルを選ばず、事後モデル確率で予測を重み付け平均し、モデル不確実性を取り込みます。
1. ベイズファクター:周辺尤度の比
2つのモデル をデータで比べます。各モデルの周辺尤度 (事前・尤度・事後・周辺尤度)の比がベイズファクターです。
事前オッズを にすれば、 がそのまま事後オッズ。解釈の目安(Kass–Raftery)は、–:言うほどでない、–:肯定的、–:強い、:非常に強い、です。
2. コード:公平なコインかを検定する
「コインは公平 」対「偏りうる 」を、ベイズファクターで比べます。 の周辺尤度はベータ二項(ベータ二項モデル)です。
import numpy as np
from scipy.special import betaln
def log_marg_M0(n, k): return k*np.log(0.5) + (n-k)*np.log(0.5) # θ=0.5 固定
def log_marg_M1(n, k, a=1, b=1): return betaln(a+k, b+n-k) - betaln(a, b) # θ自由(一様事前)
print("BF10 = p(D|M1)/p(D|M0)(M1:θ自由, M0:公平)")
for (n, k) in [(100, 52), (100, 60), (100, 70)]:
BF = np.exp(log_marg_M1(n, k) - log_marg_M0(n, k))
print(f" n={n}, k={k} (率{k/n:.2f}): BF10={BF:.3g} ({'M1支持' if BF>1 else 'M0支持'})")
出力:
BF10 = p(D|M1)/p(D|M0)(M1:θ自由, M0:公平)
n=100, k=52 (率0.52): BF10=0.135 (M0支持)
n=100, k=60 (率0.60): BF10=0.913 (M0支持)
n=100, k=70 (率0.70): BF10=427 (M1支持)
出力の意味:(ほぼ公平)では =公平モデル を約 倍支持。(明らかに偏り)では =偏りモデル を非常に強く支持。 は でほぼ互角(どちらとも言えない)。注目は、 が「 自由」と柔軟なのに、率が 近くだとかえって が勝つこと——次の剃刀の効果です。
3. オッカムの剃刀とリンドリーの逆説
周辺尤度は を事前で平均するので、広い事前を持つモデルは「どこにでも賭けた」ぶん、当たったときの密度が薄まり、自動的に罰されます(ベイズ的オッカムの剃刀)。 で が勝つのはこのため——柔軟な は無駄な自由度のぶん損をします。
ところがこの剃刀は事前の幅に過敏です。同じデータでも、 の事前を広げるほど が罰され、ベイズファクターがひっくり返る。正規平均の検定 対 で見ます。
import numpy as np
from scipy import stats
# データは μ≠0 を弱く支持(ȳ=2.5×標準誤差・頻度論なら「有意」級)
se, ybar = 1.0, 2.5
print("リンドリーの逆説:同じデータで事前SD τ を変える")
for tau in [1, 3, 10, 100, 1000]:
BF = np.exp(stats.norm(0, np.sqrt(se**2 + tau**2)).logpdf(ybar)
- stats.norm(0, se).logpdf(ybar))
print(f" 事前SD τ={tau:>4}: BF10={BF:.3g} ({'M1支持' if BF>1 else 'M0支持'})")
出力:
リンドリーの逆説:同じデータで事前SD τ を変える
事前SD τ= 1: BF10=3.37 (M1支持)
事前SD τ= 3: BF10=5.27 (M1支持)
事前SD τ= 10: BF10=2.2 (M1支持)
事前SD τ= 100: BF10=0.228 (M0支持)
事前SD τ=1000: BF10=0.0228 (M0支持)
出力の意味:観測は SE(頻度論なら「有意」級)で を示すのに、 の事前を広げる( 大)ほど が下がり、 で公平=帰無 支持に逆転します。これがリンドリー(ジェフリーズ–リンドリー)の逆説——「無情報のつもりで事前を極端に広げると、対立仮説が不当に罰され、帰無仮説が勝ってしまう」。ベイズファクターは事前に本質的に依存するので、無情報事前を安易に使えず、意味のある事前を慎重に選ぶ必要があります。
4. ベイズモデル平均化(BMA)
「どれか1つのモデルを選ぶ」こと自体がモデル不確実性を捨てています。BMA は選ばず、各モデルの予測を事後モデル確率で重み付け平均します。
よく当たるモデルに大きな重み、不確かなら複数に分散。単一モデルより予測が頑健になることが多い反面、周辺尤度の事前依存(§3)を引き継ぐので、重みの計算には注意が要ります。
5. ベイズファクター vs WAIC/LOO の使い分け
| ベイズファクター | WAIC / LOO | |
|---|---|---|
| 測るもの | 周辺尤度(事前込みの証拠) | 予測性能(elpd) |
| 事前依存 | 強い(リンドリー) | 弱い |
| 無情報事前 | 使えない(変則だと未定義) | 使える |
| 向く場面 | 意味ある事前での仮説比較 | 予測重視のモデル選択 |
「仮説検定的に2モデルを比べたい・意味ある事前がある」ならベイズファクター、「予測の良いモデルを選びたい」なら WAIC/LOO(情報量規準WAICとDIC・交差検証とLOO)、と目的で使い分けます。
⚠️ よくある誤解
- 「ベイズファクターは事前に依存しない客観指標」ではない:周辺尤度は事前の積分なので、事前の幅に強く依存(リンドリーの逆説、§3)。無情報事前と相性が悪い。
- 「BF が大きい=真のモデル」ではない:比べた2モデルの相対比。どちらも間違っていることもあります(事後予測チェック 事後予測チェック で絶対評価を)。
- 「BF と WAIC は同じ結論」ではない:BF は事前込みの証拠、WAIC/LOO は予測性能。目的が違えば結論も違いえます。
- 「モデルは1つ選ぶべき」ではない:モデル不確実性が大きいなら BMA で平均するほうが頑健なことがあります。
まとめ(Phase 8)
第8章では、組んだモデルを評価・比較する道具を揃えました——欠陥を探す事後予測チェック(事後予測チェック)、予測性能で比べる WAIC(情報量規準WAICとDIC)と LOO-CV(交差検証とLOO)、証拠で比べるベイズファクターと BMA(本ノート)。診断は PPC、予測比較は WAIC/LOO、仮説比較はベイズファクター——目的で使い分けます。次章では、ここまで手で実装してきた推論を、確率的プログラミング(PPL)で宣言的に書く方法へ進みます。
関連ノート
- 交差検証とLOO
- 事後予測チェック(モデルの絶対評価)
- 情報量規準WAICとDIC(予測性能での比較)
- 事前・尤度・事後・周辺尤度(周辺尤度=証拠)
- ベータ二項モデル(M1 の周辺尤度=ベータ二項)
- 第8章 モデル評価と選択 目次
- ベイズ統計テキスト 全体目次