Mímisbrunnr知恵の泉

← ベイズ統計 一覧

🎓 レベル:基礎 | 重要度:A(必須)

📎 前提:事前・尤度・事後・周辺尤度 | 数理:共役事前分布(統計)

要点(BLUF)

1. 共役性の定義

Phase 1 では事後を「尤度 × 事前を正規化したもの」として、ときに数値積分で求めました。ここで事前の選び方にある相性を持ち込むと、その積分が消えます

定義:尤度 p(Dθ)p(D\mid\theta) に対し、事後 p(θD)p(\theta\mid D) が事前 p(θ)p(\theta)同じ分布族になるとき、その事前を尤度に対する**共役事前分布(conjugate prior)**と呼ぶ。

p(θ) と p(Dθ) が共役  p(θD) が p(θ) と同じ分布族p(\theta)\ \text{と}\ p(D\mid\theta)\ \text{が共役}\ \Longleftrightarrow\ p(\theta\mid D)\ \text{が}\ p(\theta)\ \text{と同じ分布族}

たとえば「二項尤度 × ベータ事前 → ベータ事後」。事前も事後も同じベータ族にとどまるので、ベイズ更新が「ベータのパラメータをどう動かすか」だけの話になります。

2. なぜ閉形式になるのか:カーネルの一致

鍵はカーネル——密度から「θ\theta に依存しない定数」を \propto の外に追い出した、θ\theta を含む本体部分です。事後はベイズの定理より尤度 × 事前に比例するので、

p(θD)    p(Dθ)尤度カーネル    p(θ)事前カーネルp(\theta\mid D)\;\propto\;\underbrace{p(D\mid\theta)}_{\text{尤度カーネル}}\;\cdot\;\underbrace{p(\theta)}_{\text{事前カーネル}}

この積を θ\theta の関数として眺めたとき、もとの分布族のカーネルと同じ形に戻れば、事後はその分布族だと一目で分かります。すると分母の正規化定数 p(D)=p(Dθ)p(θ)dθp(D)=\int p(D\mid\theta)p(\theta)\,d\theta は「その分布族の定義から自動的に決まる」ので、計算する必要がありません

flowchart LR
  P1["Phase 1 のやり方<br/>事後 ∝ 尤度 × 事前"] --> Q{"事前は尤度に<br/>共役か?"}
  Q -- "はい(共役)" --> C["カーネルの肩を足すだけ<br/>事後 = 同じ分布族<br/>(閉形式・積分不要)"]
  Q -- "いいえ" --> N["正規化積分 ∫ が必要<br/>数値積分 / MCMC(第4章)"]

二項・ポアソン・正規など代表的な尤度に対し、共役事前がちょうど存在するのは偶然ではなく、これらが指数型分布族に属するからです(その一般原理は 指数型分布族と共役事前)。各ペアの完全な導出は 共役事前分布(統計)にもありますが、この章では導出を実行可能コードで確かめながら、推論にどう使うか(事後予測・逐次更新・事前感度)まで踏み込みます。

3. 「数値積分した事後」=「閉じた式の事後」をコードで確かめる

百聞は一見にしかず。事前・尤度・事後・周辺尤度 と同じく定義どおりに尤度×事前を作って数値積分で正規化した事後と、共役の閉じた式 Beta(a+k,b+nk)\mathrm{Beta}(a+k,\,b+n-k) が一致することを確かめます。

import numpy as np
from scipy import stats
from scipy.integrate import trapezoid          # numpy 2.0+ で np.trapz は廃止
from scipy.special import beta as Bfunc        # ベータ関数 B(a,b)

# 二項データ:n 回中 k 回成功。事前は Beta(a, b)
n, k = 20, 14
a, b = 2, 2
theta = np.linspace(0, 1, 2001)

# --- (A) Phase 1 流:尤度×事前 を作り、数値積分で正規化 ---
likelihood = theta**k * (1 - theta)**(n - k)        # 二項尤度のカーネル
prior = stats.beta(a, b).pdf(theta)                 # 事前 Beta(a,b)
unnorm = likelihood * prior
evidence_num = trapezoid(unnorm, theta)             # ∫ 尤度×事前 dθ(数値)
posterior_num = unnorm / evidence_num

# --- (B) 共役の閉じた式:事後は Beta(a+k, b+n-k)(積分いらず) ---
a_post, b_post = a + k, b + (n - k)
posterior_closed = stats.beta(a_post, b_post).pdf(theta)

# 2つの事後がどれだけ一致するか
max_abs_diff = np.max(np.abs(posterior_num - posterior_closed))
print(f"閉じた式の事後 = Beta({a_post}, {b_post})")
print(f"数値積分の事後 と 閉じた式の事後 の最大差 = {max_abs_diff:.2e}")

# --- 正規化定数(周辺尤度)も閉じた式と一致する ---
# evidence = ∫ θ^k(1-θ)^(n-k)·Beta(a,b) dθ = B(a+k, b+n-k) / B(a, b)
evidence_closed = Bfunc(a_post, b_post) / Bfunc(a, b)
print(f"周辺尤度(数値)   = {evidence_num:.6e}")
print(f"周辺尤度(閉じた式)= {evidence_closed:.6e}")

出力:

閉じた式の事後 = Beta(16, 8)
数値積分の事後 と 閉じた式の事後 の最大差 = 1.24e-14
周辺尤度(数値)   = 1.529632e-06
周辺尤度(閉じた式)= 1.529632e-06

出力の意味:事前 Beta(2,2)\mathrm{Beta}(2,2)・データ n=20,k=14n{=}20,\,k{=}14 なら、事後は閉じた式で Beta(2+14,2+6)=Beta(16,8)\mathrm{Beta}(2{+}14,\,2{+}6)=\mathrm{Beta}(16,8)。これを数値積分で求めた事後と引き算すると最大差は 1.2×10141.2\times10^{-14}——浮動小数点の丸め誤差しかなく、完全に同じ分布です。周辺尤度(事前・尤度・事後・周辺尤度 で数値積分した P(D)P(D))も、閉じた式 B(16,8)/B(2,2)=1.53×106B(16,8)/B(2,2)=1.53\times10^{-6} と一致します。Phase 1 で苦労して積分した量が、共役ではベータ関数の比として一行で書けるわけです。

4. ご利益①:更新はパラメータの足し算

事後 Beta(a+k,b+nk)\mathrm{Beta}(a+k,\,b+n-k) をよく見ると、更新は aa+ka\to a+k(成功数を足す)・bb+(nk)b\to b+(n-k)(失敗数を足す)という足し算です。だから共役では、

という二つの計算上の利点が同時に手に入ります。

5. ご利益②:ハイパーパラメータは「擬似観測」として読める

更新則 aa+ka\to a+k を逆から読むと、**事前パラメータ a,ba,b は「データを見る前にすでに見た仮想の成功・失敗回数」**と解釈できます(擬似観測 / pseudo-count)。

「比で位置、和で強さ」。Beta(1,1)\mathrm{Beta}(1,1) は一様=ほぼ情報なし、Beta(50,50)\mathrm{Beta}(50,50) は「成功・失敗を各50回見た」=「θ0.5\theta\approx0.5」という強い確信です。この読み方は共役事前を直観的に扱う最大の手がかりで、各ペア(ベータ二項モデルガンマポアソンと指数正規正規モデル)で繰り返し現れます。

6. 代表的な共役ペア(早見表)

この章で一つずつコードで確かめていくペアの全体像です。骨格はどれも同じ——カーネルの肩を足すと同じ分布族に戻る、というだけ。

尤度(データ)推定する母数共役事前事後(更新則)詳細
二項・ベルヌーイ成功確率 θ\thetaBeta(a,b)\mathrm{Beta}(a,b)Beta(a+k, b+nk)\mathrm{Beta}(a+k,\ b+n-k)ベータ二項モデル
ポアソン発生率 λ\lambdaGamma(α,β)\mathrm{Gamma}(\alpha,\beta)Gamma(α+xi, β+n)\mathrm{Gamma}(\alpha+\sum x_i,\ \beta+n)ガンマポアソンと指数
指数レート λ\lambdaGamma(α,β)\mathrm{Gamma}(\alpha,\beta)Gamma(α+n, β+xi)\mathrm{Gamma}(\alpha+n,\ \beta+\sum x_i)ガンマポアソンと指数
正規(分散既知)平均 μ\muN(μ0,1/τ0)\mathcal N(\mu_0,\,1/\tau_0)N(μn,1/τn)\mathcal N(\mu_n,\,1/\tau_n)正規正規モデル
正規(平均既知)分散 σ2\sigma^2逆ガンマ Inv-Gamma\mathrm{Inv\text{-}Gamma}逆ガンマ(更新)正規正規モデル
多項カテゴリ確率 θ\boldsymbol\thetaディリクレ Dir(α)\mathrm{Dir}(\boldsymbol\alpha)Dir(α+count)\mathrm{Dir}(\boldsymbol\alpha+\mathbf{count})指数型分布族と共役事前

「比率の事前=ベータ/ディリクレ」「カウント・待ち時間の事前=ガンマ」という対応で覚えると整理しやすいです。

⚠️ よくある誤解

関連ノート