ベイズ統計:MCMCは「歩き方」と「数え方」の合成語だった【第33回】

はじめに

第31章はベイズ法です。前回のモデル選択で「予測が目的か説明が目的か」という区別を扱いましたが、今回はもっと手前の、確率という言葉の使い方そのものが変わる回になります。

正直に書くと、私はベイズ統計を何度も学ぼうとして、何度も同じ場所で止まっていました。ベイズの定理は分かる。事後分布を計算する手順も追える。それでも「結局ベイズ統計って何なのか」が最後まで言われないまま終わる、という感覚がずっとありました。

今回それが解けたのは、計算の話を後回しにして、絵を2枚並べたからです。頻度論とベイズで「何が固定されていて何が動くのか」を描いただけで、話が通りました。難しい数学は1つも出てきません。

そしてこの記事の中盤で、私は一度完全に詰まりました。 MCMC(マルコフ連鎖モンテカルロ法)です。メトロポリス法のアルゴリズムを順番に追うことはできたのに、それが何をしている道具なのか分からない。原因は名前を分解していなかったことでした。MCMC は独立に発明された2つの技術がくっついた言葉で、片方だけ先に理解すれば済む話でした。その回り道もそのまま記録します。

いちばん驚いたのは終盤です。t分布が正規分布の混合分布だったという事実に行き当たりました。第7回で「分散を知らない罰金」として学んだあの分布が、今回の階層ベイズとまったく同じ構造をしていました。第5回の負の二項分布も同じでした。「消すべきパラメータを最尤推定値のような1点に決め打つと、たいてい自信過剰になる」という筋が、連載で別々に学んだ回をまとめて回収してくれました。

いつものように、出てくる数値はすべて自分で計算し、答えが分かっている問題と突き合わせています。MCMC は自分で実装し、2次元グリッドによる数値積分を「答え」として用意してからその結果を検証しました。

この回で扱う用語

用語英語ひとことで
事前分布prior distributionデータを見る前の考え
事後分布posterior distributionデータを見た後の考え
共役事前分布conjugate prior事後分布が同じ族に戻る事前分布
信用区間credible intervalθ\theta そのものの確率で語る区間
MAPmaximum a posteriori(事後確率最大)事後分布の山の頂点
MCMCMarkov chain Monte Carlo(マルコフ連鎖モンテカルロ法)歩いた足跡を数えて積分の代わりにする
提案分布proposal distribution次の候補をどう出すか
詳細釣り合いdetailed balance2点間の流れが釣り合う条件
バーンインburn-in初期値の影響が残る期間。捨てる
ESSeffective sample size(有効サンプル数)独立サンプルなら何個分か
ジェフリーズ事前分布Jeffreys prior尺度を変えても答えが変わらない事前分布
ベイズファクターBayes factor2つの仮説の予測力の比
局外パラメータnuisance parameter必要だが興味のないパラメータ
周辺化marginalization局外パラメータを積分で消す操作
R^\hat RGelman-Rubin 統計量(潜在尺度縮小係数)鎖間と鎖内のばらつきの比。1に近ければ収束
階層ベイズhierarchical Bayesパラメータの分布のパラメータも推定する
経験ベイズempirical Bayes上位のパラメータをデータから点推定する
縮小推定shrinkage estimation個別の推定値を全体平均へ引き寄せる

ベイズが変えたのは「何が動くか」だけだった

困りごとから始める

第11回の区間推定で、私はひとつ気持ち悪さを抱えたまま先に進んでいました。

95%信頼区間を計算して [0.14, 0.52] という答えが出たとき、「クリック率が 0.14 から 0.52 の間にある確率は 95%」と言ってはいけないと学びました。95% という数字は区間についているのではなく、区間の作り方についている成績だったからです。真のクリック率 θ\theta は定数なので、確率を持てない。

理屈は分かりました。でも、じゃあ目の前のこの1本の区間について何が言えるのかが分からない。実務で「で、結局クリック率はどのくらいなんですか」と聞かれたときに、「この区間は、同じ手続きを無限回繰り返せば95%の割合で真の値を含むような区間です」と答えるのは、明らかに何かがおかしい。

ベイズ統計はこの気持ち悪さに正面から答えます。

図で見る:同じ問題を見る2つの絵

頻度論とベイズの絵の違い。左は真のクリック率θ=0.30が赤い縦線1本に固定され、9個の標本から得られた推定値が青い点としてばらついている。右は観測データ6/20が灰色の点線で固定され、θが緑の分布として0.1から0.6まで広がっている

同じ問題(広告のクリック率)を扱っているのに、動いているものが逆です。

左(頻度論) では、真のクリック率 θ=0.30\theta = 0.30 は1点に固定された定数です。神様だけが知っている値で、確率変数ではありません。動くのは標本のほうで、20回試すたびに 7/20、9/20、5/20 と推定値がばらつきます。

右(ベイズ) では、観測した 6/20 はもう見てしまったので固定です。動くのは θ\theta。「今のところ 0.3 あたりが一番ありそうだが、0.2 や 0.45 でもおかしくない」という自分の知識の状態を分布で書く

これが唯一の本質的な差です。そして θ\theta が確率変数になった瞬間に、さっき禁じられていた文が書けるようになります。

θ\theta が 0.146 と 0.522 の間にある確率は 95%

よくある引っかかり:クリック率は1つの値でしょう

ここで多くの人が引っかかります(私も引っかかりました)。「現実のクリック率は1つの値として存在するはずで、それが分布するのはおかしいのでは」という疑問です。

これは正しい疑問で、答えはベイズの分布は θ\theta の物理的なばらつきではないということです。表しているのは自分の知識の不確かさです。

サイコロの例で言うと、振ってしまって伏せた手のひらの下にある目は、物理的にはもう1つに決まっています。それでも「6である確率は 1/6」と言えます。確率が対象の性質ではなく、自分の情報状態を表しているからです。ベイズの θ\theta の分布はこれと同じ種類のものです。

この立場の違いには名前があって、確率を「長期的な頻度」と読むのが頻度論、「知識の度合い」と読むのがベイズです。


事後分布は「かけ算して面積を1にした」だけ

計算はこれで全部です。

π(θデータ)=π(θ)L(θ)π(θ)L(θ)dθ\pi(\theta \mid \text{データ}) = \frac{\pi(\theta) \, L(\theta)}{\displaystyle\int \pi(\theta) \, L(\theta)\, d\theta}

分母は θ\theta を含まないただの定数なので、実質はかけ算だけです。だから実務では比例だけ書きます。

事後事前×尤度\text{事後} \propto \text{事前} \times \text{尤度}

事前分布・尤度・事後分布の3枚並べ。左は一様分布Beta(1,1)で高さ1の平らな橙色。中央は二項尤度が0.30にピークを持つ青い山。中央には最尤推定0.30を示す灰色の点線がある。右は事後分布Beta(7,15)が緑の山で、赤い破線が事後平均0.318の位置を示している

①データを見る前の考えに、②実際に見たデータの尤度をかけて、③面積が1になるよう割る。

第10回でやった最尤法は、②のピークを探すだけの作業でした。ベイズは②を捨てずに全体を持ち歩きます。 この差が後で効いてきます。

3つの代表値が出てくる

事前・尤度・事後を並べた図の右端で気づいてほしいのは、ピークは 0.300 なのに平均は 0.318 とズレていることです。分布が右に裾を引いているためです。

要約意味
MAP(事後最大値)0.3000山の頂点。事前が平らなので最尤推定 6/20 とぴったり一致する
事後中央値0.3126面積を半分に割る点
事後平均0.3182重心。7/22=(x+1)/(n+2)7/22 = (x+1)/(n+2) ときれいな形になる

MAP が最尤推定と一致するのは重要な接続点です。事前分布を平らにしたベイズの MAP は最尤推定と一致するので、最尤法はベイズの特殊ケースとして読めます。

ただし一致するのは MAP だけです。事後平均 0.3182 と事後中央値 0.3126 は最尤推定 0.3000 と一致しません。さらに「平ら」という性質はパラメータの取り方に依存する(後述)ので、ψ=logit(θ)\psi = \text{logit}(\theta) について平らな事前分布を置くと MAP も 0.30 にはなりません。

そして事後平均が 7/22=(x+1)/(n+2)7/22 = (x+1)/(n+2) になるのも偶然ではありません。「分子に1、分母に2を足す」というあの謎の操作(機械学習のラプラススムージング)の出どころがこれです。n=0n=0 のときに 1/2 を返すので、「何も見ていないなら半々」という自然な振る舞いになります。

なお似た形の Agresti-Coull 法z24z^2 \approx 4 を使って成功2・失敗2を足す (x+2)/(n+4)(x+2)/(n+4) で、こちらは a=b=2a=b=2 の事前分布に相当します。+1/+2+1/+2 とは別物なので混同しないよう注意が必要です(自分は一度混同しました)。


共役とは何か:形が掛け算で壊れないこと

ここで用語をひとつ固めます。私はこの回の準備で「共役事前分布は予習済み」と思っていたのですが、記事を書く段階で「二項分布と共役ってどういう意味だっけ」と自分で分からなくなりました。 定義から確認します。

尤度の族を決めたとき、事後分布が事前分布と同じ族に戻ってくるような事前分布の族を、その尤度に対する共役事前分布という。

用語の注意が1つあります。 「二項分布と共役」は言葉を省略した言い方で、正確には「ベータ分布は二項尤度に対する共役事前分布である」。共役は「分布と分布」の関係ではなく、「尤度の族」と「事前分布の族」の関係です。

「ベータと二項が似ている」という話ではありません。掛け算しても形が壊れない相性の話です。

なぜベータ×二項がベータに戻るのか

式を3行並べるだけで分かります。正規化定数は θ\theta を含まないので無視します。

π(θ)θa1(1θ)b1(事前分布 Beta(a,b)\pi(\theta) \propto \theta^{a-1}(1-\theta)^{b-1} \qquad \text{(事前分布 Beta}(a,b)\text{)} L(θ)θx(1θ)nx(二項尤度を θ の関数として見たもの)L(\theta) \propto \theta^{x}(1-\theta)^{n-x} \qquad \text{(二項尤度を } \theta \text{ の関数として見たもの)}

掛けると指数が足されるだけです。

π(θ)L(θ)θa1+x(1θ)b1+nx=θ(x+a)1(1θ)(nx+b)1\pi(\theta)L(\theta) \propto \theta^{a-1+x}(1-\theta)^{b-1+n-x} = \theta^{(x+a)-1}(1-\theta)^{(n-x+b)-1}

最後の形は Beta(x+a,  nx+b)\text{Beta}(x+a,\; n-x+b) そのものです。

核心はこれです。 事前分布と尤度がどちらも「θ\theta の何乗 × (1θ)(1-\theta) の何乗」という同じ骨格をしている。だから掛け算すると指数が足されるだけで、骨格が変わりません。

共役の正体は「関数の形が掛け算で保たれること」であって、それ以上の意味はない。

共役でないと本当に戻らないのか

言葉だけだと納得しづらいので、共役でない事前分布と並べました。ロジット正規分布logit(θ)\text{logit}(\theta) が正規分布に従う)を使います。ベータとよく似た形ですが、二項尤度に共役ではありません。

共役の比較。上段はベータ事前分布で、事前分布と二項尤度を掛けた事後分布が緑の実線、Beta(3.49,24.68)が赤い破線で完全に重なっており最大差4.0e-10。下段はロジット正規事前分布で、同じ尤度を掛けた事後分布に対し同族で最善の当てはめをしても赤い破線のピークが緑より高く、最大差0.57のズレが残っている

上段(ベータ) は、掛けた結果がぴったりベータ分布に戻ります。真の事後分布(緑)と Beta(3.49,24.68)\text{Beta}(3.49, 24.68)(赤破線)が重なって区別できません。密度の最大差は 4.0×10104.0 \times 10^{-10} で、数値積分の誤差だけです。

下段(ロジット正規) は、②の尤度が上段とまったく同じなのに、③では同じ族で最善の当てはめをしても最大差 0.57 のズレが残ります(ピークの高さが合っていません)。これが「族に戻らない」ということです。

共役な組み合わせの一覧

試験で計算問題として出るのはこの表です。

尤度パラメータ共役事前分布事後分布更新の中身
二項・ベルヌーイ成功確率 θ\thetaベータ Beta(a,b)\text{Beta}(a,b)Beta(a+x,  b+nx)\text{Beta}(a+x,\; b+n-x)xxnxn-x を足す
ポアソン強度 λ\lambdaガンマ Gamma(a,b)\text{Gamma}(a,b)Gamma(a+x,  b+n)\text{Gamma}(a+\sum x,\; b+n)x\sum xnn を足す
正規(分散既知)平均 μ\mu正規 N(m,s2)N(m, s^2)正規精度の加重平均
正規(平均既知)精度 1/σ21/\sigma^2ガンマGamma(a+n/2,  b+(xμ)2/2)\text{Gamma}(a+n/2,\; b+\sum(x-\mu)^2/2)n/2n/2 と平方和/2 を足す
指数λ\lambdaガンマGamma(a+n,  b+x)\text{Gamma}(a+n,\; b+\sum x)nnx\sum x を足す
多項確率ベクトルディリクレ Dir(α)\text{Dir}(\alpha)Dir(α+x)\text{Dir}(\alpha+x)各カテゴリの度数を足す
幾何・負の二項成功確率 θ\thetaベータベータ同上

この表の Gamma(a,b)\text{Gamma}(a,b)bbとして書いています。後で出てくる逆ガンマは bb を尺度として使うので、教科書ごとの流儀の違いに注意してください。

共通の型は1つだけです。

事前分布のパラメータに、データの十分統計量を足す。

理由は第9回の指数型分布族です。指数型分布族の尤度は「exp(\exp( 自然パラメータ \cdot 十分統計量 - 正規化項 ))」の形をしているので、同じ形の事前分布を掛けると指数の中で足し算になる。だから族が保たれます。

ここで注意点が2つあります。私は最初、「共役事前分布が存在するのは指数型分布族のときだけ」と書いたのですが、「だけ」という限定も、そこから引いた理由づけも誤りでした。

まず逆は成り立ちません。 XU(0,θ)X \sim U(0, \theta) は台が母数に依存するので指数型分布族ではありませんが、パレート分布が共役です(尤度 θn1{θxmax}\theta^{-n}\mathbf{1}\{\theta \geq x_{\max}\} にパレートを掛けるとパレートに戻る)。

そしてロジスティック回帰の尤度は、実は β\beta について指数型分布族です。 対数尤度を書き直すと

i(yiηilog(1+eηi))=β(iyixi)ilog(1+exiβ)\sum_i \bigl(y_i\eta_i - \log(1+e^{\eta_i})\bigr) = \beta^\top\Bigl(\sum_i y_i x_i\Bigr) - \sum_i \log(1+e^{x_i^\top\beta})

で、「自然パラメータ β\beta ・十分統計量 yixi\sum y_i x_i」の形をしています。実際 π(β)exp(βτmA(β))\pi(\beta) \propto \exp(\beta^\top\tau - m A(\beta)) という共役族(Diaconis-Ylvisaker 事前分布)は存在し、更新も閉じます。

後でロジスティック回帰で共役が使えない本当の理由は、その族の正規化定数が閉じた形で書けず、名前のついた分布にならないことです。「共役族が存在しない」のではなく「あっても手で扱えない」が正確でした。

正しい整理はこうです。尤度が指数型分布族なら、自然共役族を必ず構成できる(超パラメータは十分統計量の次元に「見かけの標本サイズ」を1つ足した分)。ただし逆は成り立たず、また構成できても実用的な形になるとは限りません。


信頼区間と信用区間:解釈は違うが数字はほぼ同じ

第11回から引きずっていた気持ち悪さに戻ります。同じデータ(n=20n=20 で6クリック)で両方計算して並べました。

同じデータを4通りに区間化した図。上のパネルは事後分布Beta(7,15)の緑の曲線で、95%の面積が塗られ、事後平均0.318が赤い破線、MAP0.300が灰色の点線。下のパネルは4本の水平な区間で、Wald[0.099,0.501]幅0.402、Wilson[0.145,0.519]幅0.373、Clopper-Pearson[0.119,0.543]幅0.424、信用区間[0.146,0.522]幅0.376

方法区間
Wald(教科書の正規近似)[0.0992, 0.5008]0.4017
Wilson[0.1455, 0.5190]0.3735
Clopper-Pearson(厳密)[0.1189, 0.5428]0.4239
信用区間(事前=一様)[0.1459, 0.5218]0.3759

Wilson の信頼区間と信用区間が、小数第2位までほぼ一致します。 哲学がまるで違うのに、出てくる数字はほぼ同じです。

なぜ一致するのか

偶然ではありません。事前・尤度・事後を並べた図で見たとおり、事前分布が平らなら事後分布の形は尤度そのものです。そして尤度のピーク周りの形は、頻度論が正規近似で使っているものと同じです。同じ関数を、一方は「θ\theta の確率分布」と読み、他方は「推定値のばらつき」と読んでいるという状況になります。

nn を大きくすると一致はさらに良くなります。ここから実務上の含意が出ます。

通常の条件下でデータが十分あるとき、ベイズにするかどうかで結論の数字はほぼ変わらない。 変わるのは「その数字を何と言い表せるか」だけ。

「通常の条件下で」と付けたのは、これがベルンシュタイン=フォン・ミーゼスの定理という漸近論に頼っているからです。真の値がパラメータ空間の内部にあり、事前分布がその近傍で正の密度を持ち、次元が固定されている必要があります。この記事の後半で見る x=0x=0 のケースや不適切事前分布では実際に崩れます。

裏を返すと、nn が小さいとき・事前情報が本当にあるときにだけ、ベイズは違う答えを出します。

では信用区間の何が嬉しいのか

解釈です。信用区間なら

θ\theta が 0.146 と 0.522 の間にある確率は 95%

でこの文が終わります。区間の作り方に言及する必要がありません。

もっとはっきりした差が、任意の質問に答えられることです。ベイズなら

P(θ<0.5データ)=0.9608,P(θ<0.2データ)=0.1085P(\theta < 0.5 \mid \text{データ}) = 0.9608, \qquad P(\theta < 0.2 \mid \text{データ}) = 0.1085

と、聞かれた質問に対して数字が1つ返ります。 頻度論では「θ<0.2\theta < 0.2 である確率」という文自体が定義できません(θ\theta は定数なので、この確率は 0 か 1 のどちらかで、どちらかは分からない、という答えになってしまう)。

用語の整理

日本語が1文字違いなので、試験では英語で覚えたほうが安全です。

用語英語何の確率か固定されているもの
信頼区間confidence interval区間の作り方の成績θ\theta
信用区間credible intervalθ\theta そのものの確率データ

そして信用区間には作り方が2種類あります。

作り方英語中身
等裾区間equal-tailed interval左右の裾を 2.5% ずつ切る。計算が楽。今回使ったのはこれ
HPD区間highest posterior density(最高事後密度)密度が高い点から順に 95% 集める。幅が最小になる

単峰かつ対称な事後分布なら両者は一致します(対称でも二峰なら HPD は2つの区間に分かれるので一致しません)。歪んでいるとズレて、HPD のほうが狭くなります。

頻度論の基準で採点したらどうなるか

「ベイズの信用区間は頻度論の基準で見ると成績が悪いのでは」という疑問が湧きます。確かめました。横軸に真の θ\theta を全部並べ、その区間が θ\theta を含む確率を厳密に計算します。

被覆確率の厳密計算。横軸が真のθ、縦軸がθを含んだ確率。Waldの青い線はθが0や1に寄ると95%を大きく割り込み0.55以下まで落ちる。Clopper-Pearsonの灰色の線は常に95%以上で上に張り付いている。信用区間の緑の線は95%の赤い破線を上下に細かく行き来している

真の θ\thetaWaldWilsonClopper-Pearson信用区間
0.3094.74%97.52%97.52%97.52%
0.0563.89%92.45%98.41%92.45%
0.5095.86%95.86%95.86%95.86%

θ=0.05\theta = 0.05 の行が要点です。教科書に最初に載っている Wald は、95% と名乗りながら実際は 63.89% しか当てていません。 3回に1回以上外している。一方 Clopper-Pearson は 98.41% で、外さないけれど広すぎます。

信用区間は頻度論の被覆率を目標に作っていないのに、頻度論の基準で採点しても Wald よりずっとまともです。 ギザギザしているのは二項分布が離散だからで、これは頻度論側の区間にも同じように出ます。

0クリックだったときが象徴的

n=20n=20 で1件もクリックされなかった場合を計算しました。

方法区間問題
Wald[0.000, 0.000]幅ゼロに潰れる。「クリック率は0%と断定」という無意味な答え
Wilson[0.000, 0.1611]使える
Clopper-Pearson[0.000, 0.1684]使える(やや広い)
信用区間(事前=一様)[0.0012, 0.1611]使える。下端が厳密に0にならない

Wald が潰れる理由は式を見れば明らかで、p^=0\hat p = 0 なので p^(1p^)/n=0\sqrt{\hat p(1-\hat p)/n} = 0 になるからです。

このとき事後平均は 1/22=0.04551/22 = 0.0455、そして

P(θ<0.10データ)=0.8906P(\theta < 0.10 \mid \text{データ}) = 0.8906

と直接言えます。「クリック率が10%未満である確率は89%」という、そのまま意思決定に使える形です。

なお HPD 区間で計算すると、事後分布 Beta(1,21)\text{Beta}(1,21) は単調減少なのでピークが端(θ=0\theta = 0)にあり、下端が 0 になります。上端は 10.051/21=0.13291 - 0.05^{1/21} = 0.1329 で、等裾の上端 0.1611 より狭い。片側だけの区間になるという、等裾との違いがはっきり出る例です。


無情報事前分布は本当に「無情報」なのか

事前分布を置くと決めたとき、次に来る疑問はこれです。「何も情報がないときは一様分布を置けばいいのでは」。

私はこれに引っかかりました。一様分布を置くのも、1つの積極的な主張に見えるからです。結論から言うと、その直感が正しいです。

一様分布は尺度を変えると偏った主張になる

θ\theta に一様分布を置いた後で、同じものを別の尺度で見てみます。

一様分布が尺度で偏ることを示す3枚。左はθに一様分布を置いた橙色の平らなヒストグラム。中央は同じものをオッズφ=θ/(1-θ)で見た紫のヒストグラムで小さい側に強く偏っている。右は対数オッズψで見た青いヒストグラムで0の周りに集まった山型になり、もし一様ならこの高さという赤い破線1/16よりずっと高い

  • オッズ ϕ=θ/(1θ)\phi = \theta/(1-\theta) で見ると、小さい側に強く偏っています
  • 対数オッズ ψ=log(θ/(1θ))\psi = \log\bigl(\theta/(1-\theta)\bigr) で見ると、0 の近くに集まった山型(ロジスティック分布)になります

数値でも確認しました。θ\theta \sim 一様 から生成した ψ\psi は、標準偏差 1.81402(理論値 π/3=1.81380\pi/\sqrt{3} = 1.81380)。そして

P(1<ψ<1)=0.46175(理論値 0.46212P(-1 < \psi < 1) = 0.46175 \quad \text{(理論値 } 0.46212\text{)}

ψ\psi は全実数を動くので「ψ\psi について一様」は不適切事前分布になってしまいますが、図の範囲 (8,8)(-8, 8) に切って比べると一様なら 2/16=0.1252/16 = 0.125。実際は3.7倍になっています。

つまりθ\theta について無情報」は「ψ\psi について無情報」ではありません。 そしてこれは机上の話ではなく、ロジスティック回帰の係数は ψ\psi の側です。第18回で扱った log(オッズ比)\log(\text{オッズ比}) がまさにこれで、「θ\theta に一様を置く」と決めた瞬間に、係数については「0 に近い」という主張をしていることになります。

第4回の変数変換(ヤコビアン)が効いているだけの話です。密度は変換で形が変わるので、「平ら」という性質は尺度に依存するのです。

ジェフリーズ事前分布:どの尺度でも同じ答えになるように作る

この問題を解決するために提案されたのがジェフリーズ事前分布です。

π(θ)I(θ)(I はフィッシャー情報量)\pi(\theta) \propto \sqrt{I(\theta)} \qquad (I \text{ はフィッシャー情報量})

二項分布なら I(θ)=n/(θ(1θ))I(\theta) = n/\bigl(\theta(1-\theta)\bigr) なので

π(θ)θ1/2(1θ)1/2=Beta(0.5,0.5)\pi(\theta) \propto \theta^{-1/2}(1-\theta)^{-1/2} = \text{Beta}(0.5,\, 0.5)

なぜ I(θ)\sqrt{I(\theta)} を掛けると解決するのか。 変換不変性を数値で確認しました。

ψ\psiルートA:θ\theta で作って ψ\psi に変換ルートB:最初から ψ\psi で作る
3.0-3.00.212548020.212548021.000000
1.5-1.50.386194840.386194841.000000
0.00.500000000.500000001.000000
0.70.470863960.470863961.000000
2.00.324027140.324027141.000000

比が全て 1.000000。θ\theta で無情報事前分布を作ってから変換する」と「最初から ψ\psi で無情報事前分布を作る」が、比例定数まで完全に一致します。どの尺度で考えても同じ結論になる――これがジェフリーズ事前分布の設計目標です。一様分布ではこれが成り立ちません。

直感的な読み方はこうです。フィッシャー情報量が大きい領域=データが敏感に効く領域なので、そこに事前分布の重みを厚く置くと、尺度の取り方に左右されなくなります。

なおパラメータが複数あるときは π(θ)detI(θ)\pi(\boldsymbol\theta) \propto \sqrt{\det I(\boldsymbol\theta)} になりますが、多母数のジェフリーズ事前分布は必ずしも良い無情報事前分布になりません(そのため参照事前分布などの改良版が提案されています)。この記事では1母数の場合だけを扱います。

事前分布の形と、それが結論をどれだけ動かすか

3つの事前分布とその結果。左は一様Beta(1,1)が橙の平らな線、ジェフリーズBeta(0.5,0.5)が緑のU字型で両端で無限に高くなり、強い事前Beta(20,80)が赤い山で0.2にピークを持つ。右はn=20で6クリック後の事後分布で、一様とジェフリーズはほぼ重なり0.3付近にピークを持つが、強い事前だけが0.21付近に大きくズレている

ジェフリーズ Beta(0.5,0.5)\text{Beta}(0.5, 0.5)両端で無限に高くなる U 字型です。「0 や 1 に近い可能性を軽視しない」形になっています。

事前分布事後平均MAP95%信用区間
一様 Beta(1,1)\text{Beta}(1,1)(ラプラス)0.31820.3000[0.1459, 0.5218]
ジェフリーズ Beta(0.5,0.5)\text{Beta}(0.5,0.5)0.30950.2895[0.1361, 0.5172]
ハルデーン Beta(0,0)\text{Beta}(0,0)(極限)0.30000.2778[0.1258, 0.5120]
強い事前 Beta(20,80)\text{Beta}(20,80)(率2割と思っている)0.21670.2119[0.1480, 0.2943]
(参考)最尤推定 6/200.30000.3000

一様とジェフリーズはほぼ同じで、強い事前分布だけが大きくズレます。

nn を増やせば事前分布の影響は消えるか

消えます。率を 30% に固定したまま nn を増やしました。

nn一様ジェフリーズ強い事前 Beta(20,80)\text{Beta}(20,80)最大の差
200.318180.309520.216670.10152
500.307690.303920.233330.07436
2000.301980.301000.266670.03531
1,0000.300400.300200.290910.00949
10,0000.300040.300020.299010.00103

nn が数百を超えると、事前分布を何にしても結論は実質同じになります。 事前分布の選択に神経を使う必要があるのは小標本のときだけです。

逆に言えば、小標本では事前分布が結論を左右するので、選んだ理由を説明できなければならない。 ここが「ベイズは恣意的だ」という批判の当たっている部分でもあります。

罠:不適切事前分布

上の表のハルデーン事前分布 Beta(0,0)\text{Beta}(0,0) には注意が必要です。これは積分が発散するので、そもそも確率分布ではありません。こういうものを不適切事前分布(improper prior) と呼びます。

不適切でも事後分布がまともになるなら実用上は使えるのですが、壊れる場合があります。x=0x=0 のデータで計算すると、

事前分布事後平均95%上限
一様 Beta(1,1)\text{Beta}(1,1)0.045450.16110
ジェフリーズ Beta(0.5,0.5)\text{Beta}(0.5,0.5)0.023810.11664
ハルデーン Beta(0,0)\text{Beta}(0,0)定義できない定義できない

a=0a=0 では事後分布 Beta(0,21)\text{Beta}(0, 21) 自体が正規化できず、事後分布そのものが不適切になります(数値的には θ=0\theta = 0 に退化します)。「無情報を極限まで追求する」と使えなくなる、という教訓です。ジェフリーズが Beta(0.5,0.5)\text{Beta}(0.5, 0.5) という「ほどよく弱い」ところに落ち着いているのは、この意味でも合理的です。


ここで一度詰まった:MCMC が何なのか分からない

ここまでは共役事前分布のおかげで、事後分布が式で書けました。Beta(a,b)×\text{Beta}(a,b) \times 二項 Beta(x+a,nx+b)\to \text{Beta}(x+a, n-x+b) で、足すだけでした。

問題は共役でないときです。 そこで MCMC という道具が出てきます。

正直に書くと、私はここで完全に止まりました。教科書のメトロポリス法のアルゴリズムを読んで、手順を追うことはできました。「提案して、比を計算して、確率で受容する」。動きも分かる。でもそれが何をしている道具なのか分からない。

原因は後から分かりました。名前を分解していなかったのです。

MCMC=Markov chain歩き方+Monte Carlo数え方\text{MCMC} = \underbrace{\text{Markov chain}}_{\text{歩き方}} + \underbrace{\text{Monte Carlo}}_{\text{数え方}}

MCMC は独立に発明された2つの技術がくっついた名前で、それぞれ別々に理解できます。そして先に理解すべきなのは後ろの「モンテカルロ法」のほうでした。こちらにはマルコフ連鎖が一切出てきません。

順番に積み上げます。

Step 1:モンテカルロ法は「計算する代わりに数える」

まず円周率です。統計は一切出てきません。

モンテカルロ法で円周率を求める3枚。正方形にランダムな点を打ち、円の中に入った点を濃い青、外を薄い青で表示。100投で円の中83個からπ≈3.3200、1000投で794個からπ≈3.1760、10000投で7889個からπ≈3.1556

正方形にダーツをランダムに投げて、円に入った割合を数える。面積比が π/4\pi/4 なので、4×(円の中/全部)4 \times (\text{円の中}/\text{全部})π\pi になります。1億投で 3.141591(真値との差 0.000002-0.000002)まで出ました。

積分も公式も使っていません。投げて数えただけです。 これがモンテカルロ法の全部で、それ以上の中身はありません。名前の由来もモナコの Monte Carlo(カジノの街)で、要はサイコロを振って答えを出す方法の総称です。

発想の転換はここです。

難しい「計算」を、たくさんの「数え上げ」に置き換える。

Step 2:統計に持ち込む

いま仮に、事後分布 Beta(7,15)\text{Beta}(7,15) から出た点が2万個手元にあるとします。

サンプルから数えるだけで答えが出ることを示す3枚。左は事後分布から出た200個の点を散らして表示。中央は20万個のヒストグラムに事後分布の曲線が重なり、平均0.3182と2.5%点0.1454と97.5%点0.5219が線で示されている。右はθ<0.2の領域だけを赤く塗り、その割合0.1093が厳密値0.1085に近い

  • 事後平均を知りたい → 足して割る
  • 95%区間を知りたい → 並べて 2.5% と 97.5% の位置を見る
  • P(θ<0.2)P(\theta < 0.2) を知りたい → 0.2 未満を数える

全部「数える」で済み、積分は一度も出てきません。個数を増やすと厳密解に収束します。

サンプル個数平均P(θ<0.2)P(\theta<0.2)2.5%点97.5%点
100.28110.10000.14060.4380
1000.31510.10000.17780.5203
1,0000.31330.10600.14720.5106
10,0000.31740.11100.14500.5200
200,0000.31820.10930.14540.5219
厳密解0.31820.10850.14590.5218

さらに強いのが変換してから数えられることです。

知りたい量やることモンテカルロ厳密解
θ\theta の事後平均そのまま平均0.31847/22=0.31827/22 = 0.3182
オッズ θ/(1θ)\theta/(1-\theta) の事後平均全部変換して平均0.50077/14=0.50007/14 = 0.5000
θ\sqrt{\theta} の事後平均全部変換して平均0.55750.5573
1/θ1/\theta の事後平均全部変換して平均3.498721/6=3.500021/6 = 3.5000

「オッズの分布が欲しい」「2群の差が欲しい」と言われても、サンプルを変換して数え直すだけです。積分をやり直す必要がありません。

ちなみに E[1/θ]=3.4987E[1/\theta] = 3.49871/E[θ]=3.14041/E[\theta] = 3.1404 が別物なのは第4回のイェンセンの不等式です。サンプルで扱うとこの区別が自動的に正しく処理されます。

Step 3:でも、そのサンプルはどうやって作るのか

ここが本題でした。 Step 2 では「事後分布からサンプルが出せる」ことを前提にしていました。

Beta(7,15)\text{Beta}(7,15) なら有名な分布なのでライブラリで一発です。しかしベイズで出てくる事後分布は「事前 × 尤度」というその場で作られた変な形の関数で、名前も付いていません。

素朴な方法が棄却法です。分布を囲む箱にダーツを投げ、曲線の下に入ったものだけ採用する(円周率と同じ発想)。

棄却法と次元の呪いの3枚。左は1次元での棄却法で、Beta(7,15)の曲線の下に入った365個を青、外れた1135個を赤で表示し採用率24.3%。中央は採用率が次元とともに指数的に落ちる対数グラフで、d=20では8e-13。右は球の体積と立方体の体積の比が次元とともに落ちるグラフで、d=30では1e-13以下

1次元なら採用率 24.3%(図に描いた1500投の試行)で十分実用的です。理論値は 24.8% で、下の表の d=1d=1 の行がそれに当たります。ところが次元が上がると壊れます。

パラメータ数 dd採用率1個採るのに必要な投数
124.8%4
50.095%1,056
100.00009%111万
208×10118 \times 10^{-11}%1.2兆
506×10296 \times 10^{-29}%1.7×10301.7 \times 10^{30}

理由は棄却法の図の右パネルです。高次元の立方体はほとんど「隅」でできています。 d=20d=20 では、立方体に投げたダーツが内接球に入る確率は 2.5×1082.5 \times 10^{-8} しかありません。これが次元の呪い(curse of dimensionality) です。

参考に、真面目にグリッドで数値積分する道も潰れています。各軸100点で刻むと、

パラメータ数 dd評価回数1回1マイクロ秒として
310610^{6}1秒
5101010^{10}0.116日
10102010^{20}317万年
20104010^{40}宇宙年齢の 2.3×10162.3 \times 10^{16}

階層モデルではパラメータが数十から数千個になります。この道は原理的に閉じています。

棄却法の敗因は「毎回ゼロから独立に候補を出す」ことです。 良い場所を見つけても、その情報を捨てて、また当てもなく投げる。

ならば「今いる良い場所の隣」を次の候補にすればいい。

これがマルコフ連鎖の出番です。

Step 4:マルコフ連鎖の滞在時間は定常分布になる

第22回の内容ですが、必要な部分だけ確認します。

3状態のマルコフ連鎖を20万歩あるかせた結果の3枚。左は最初の60歩で状態A・B・Cを渡り歩く階段状のトレース。中央は歩数を増やすと各状態の滞在割合が理論値の破線に収束していく様子。右は20万歩の滞在割合0.4631/0.3166/0.2203と定常分布0.4634/0.3171/0.2195を並べた棒グラフで一致している

マルコフ連鎖とは「次の状態が今の状態だけで決まる」確率的な移動です。3状態 A・B・C を推移確率に従って渡り歩かせると、歩数を増やすにつれ「各状態にいた時間の割合」が理論値に収束します。

状態A状態B状態C
20万歩の滞在割合0.46310.31660.2203
定常分布 π\pi(理論値)0.46340.31710.2195

一致します。この一致が MCMC の原理そのものです。

歩いた足跡の分布=定常分布\text{歩いた足跡の分布} = \text{定常分布}

だから話を逆から組み立てられます。

定常分布が「事後分布」になるような歩き方を設計すれば、その足跡が事後分布からのサンプルになる。

全体の組み立て

ここまでを1本に繋げるとこうなります。これが最初から分かっていれば詰まらなかった部分です。

  1. 事後平均や区間が知りたい → 積分が必要 → 高次元では不可能
  2. でもサンプルがあれば数えるだけで済む(=モンテカルロ法)
  3. じゃあサンプルをどう作るか → 棄却法は高次元で死ぬ
  4. 今いる場所の隣を歩くようにすれば高次元でも動ける(=マルコフ連鎖)
  5. 足跡の分布は定常分布になるので、定常分布=事後分布になるよう歩き方を設計する
  6. その足跡を数える(2に戻る)
Monte Carlo(モンテカルロ)Markov chain(マルコフ連鎖)
担当サンプルを使うサンプルを作る
やること足して割る・並べて数える今いる場所の隣へ移動を繰り返す
解決する問題積分が計算できない高次元でサンプルが引けない
代償誤差が 1/n1/\sqrt{n} でしか縮まないサンプルが独立でなくなる

最後の代償は実測しました。同じ「20000個」でも、独立サンプルなら事後平均のばらつきは 0.000729、MCMC では 0.001395(1.91倍)。逆算すると MCMC の20000個は独立換算で約5458個分です。

つまり MCMC は「独立性を犠牲にして、高次元でもサンプルが引ける」という取引をしています。


メトロポリス法:比を取ると分母が消える

歩き方の設計に入ります。アルゴリズムはこれで全部です。

def log_target(th):
    if th <= 0 or th >= 1: return -inf
    return 6*log(th) + 14*log(1-th)      # 事後 ∝ θ^6 (1-θ)^14

cur = 0.5
for i in range(n_iter):
    prop = cur + normal(0, step)               # ① 隣を提案する
    logr = log_target(prop) - log_target(cur)  # ② 比を取る → 正規化定数が消える
    if log(uniform()) < logr:                  # ③ 確率 min(1, r) で受容
        cur = prop
    chain[i] = cur                             # ④ 棄却でも今の値を記録する

②が全ての仕掛けです。 比を取ると

r=π(yデータ)π(xデータ)=π(y)L(y)/πLdθπ(x)L(x)/πLdθ=π(y)L(y)π(x)L(x)r = \frac{\pi(y \mid \text{データ})}{\pi(x \mid \text{データ})} = \frac{\pi(y)L(y) \big/ \color{red}{\int \pi L \, d\theta}}{\pi(x)L(x) \big/ \color{red}{\int \pi L \, d\theta}} = \frac{\pi(y)L(y)}{\pi(x)L(x)}

計算できない分母が約分で消えます。 分子(事前×尤度)は手で書けるので、これは計算できる。つまり正規化定数を知らないまま、その分布からサンプルできてしまう。 ここがベイズ計算の歴史を変えた一点です。

歩き方を言葉にするとこうです。

登るときは必ず行く。下るときはときどき行く。

メトロポリス法の1歩ずつのアニメーション。上のパネルで事後分布の曲線上を現在地の黒い点から提案先へ矢印が伸び、受容なら緑、棄却なら赤で表示される。タイトルに比r=π(y)/π(x)と受容確率min(1,r)が並記され、rが1を超えた歩は必ず受容されている。下のパネルはトレースプロットが1歩ずつ伸びていき、棄却されると横に平らになる

r1r \geq 1(提案先の密度が高い)なら必ず受容(緑)、r<1r < 1 なら確率 rr で受容し、残りは棄却(赤)。アニメにはrr と受容確率 min(1,r)\min(1, r) を並べて表示してあるので、rr が 1 を超えた歩がすべて受容されていることを確認できます。棄却されるとトレースプロットが横に平らになります。

初期値 0.80 は事後分布の端(密度がほぼ0の場所)なので、中央へ向かう提案は密度が上がる=坂を登る方向になります。だから最初はほぼすべて受容されて、山の中心へ吸い込まれていきます。実際、最初の40歩のうち15歩が r>1r > 1 で、そのすべてが受容されました。

④の「棄却でも記録する」を落とすとバグります。 棄却は「動かない」だけで、その場にもう1回滞在したことになる。記録しないと密度の高い場所の重みが失われます。

メトロポリス法の足跡が事後分布に育つアニメーション。反復10回では標本平均0.7620で大外れだが、200回で0.344、4000回で0.31807となり、ヒストグラムが厳密な事後分布Beta(7,15)の緑の曲線に一致していく

足跡を数えるだけで厳密な Beta(7,15)\text{Beta}(7,15) に一致していきます。標本平均は10回で 0.762(大外れ)→ 200回で 0.344 → 4000回で 0.31807(厳密値 0.31818 との差 0.0001-0.0001)。

なぜ定常分布が事後分布になるのか:詳細釣り合い

「事後分布が定常分布になるような連鎖」をどう作るのか。詳細釣り合い(detailed balance) という条件を使います。

π(x)q(xy)A(xy)=π(y)q(yx)A(yx)\pi(x)\, q(x \to y)\, A(x \to y) = \pi(y)\, q(y \to x)\, A(y \to x)

読み方は単純で、左辺が「xx にいて yy へ移る量」、右辺が「yy にいて xx へ移る量」。2点間の行き来が釣り合っているという意味です。全ての点対で流れが釣り合っていれば分布は変化しないので、π\pi が定常分布になります。

メトロポリスの受容確率 min(1,π(y)/π(x))\min\bigl(1, \pi(y)/\pi(x)\bigr) は、この等式が成り立つように逆算して作られたものです。天から降ってきた式ではありません。確かめました。

xxyy左辺右辺
0.250.402.61264568352.61264568354.4×1016-4.4 \times 10^{-16}
0.100.550.18620793990.1862079399+2.8×1017+2.8 \times 10^{-17}
0.320.333.86130351343.8613035134±0\pm 0

差は倍精度の丸め誤差だけです。ぴったり釣り合っています。

qq が両辺に出てくることに注意してください。 今回は提案が正規分布で対称 q(xy)=q(yx)q(x \to y) = q(y \to x) なので qq が約分で消え、比が π\pi だけで書けました。対称でない提案を使う場合は qq の比も残ります。それが「メトロポリス法」と「メトロポリス・ヘイスティングス法」の違いです。

ここで条件の向きを正確にしておきます。 詳細釣り合いは π\pi が定常分布であるための十分条件であって、必要条件ではありません。 実際この記事の後半で使うギブスサンプリングは、μτ\mu \to \tau という決まった順番で更新する(決定的スキャン)ので詳細釣り合いを満たしませんが、π\pi を不変に保ちます。「MCMC は必ず可逆」と覚えると間違えます。

もうひとつ、詳細釣り合いだけでは収束は保証されません。 第22回でやった既約性(どこからどこへでも行ける)と非周期性が別途必要です。後で出てくる二峰性の失敗例(R^=5.12\hat R = 5.12)は、まさに実質的に既約でなくなった状態です。

なお第23回のランダムウォークとの関係も見えます。提案 y=x+εy = x + \varepsilonただのランダムウォークで、それに受容判定という重み付けを加えると、目標分布に沿って歩くようになる。だからこの方式はランダムウォーク・メトロポリスと呼ばれます。

バーンイン:最初のほうは捨てる

バーンインを示す3枚。左はわざと外れた初期値0.97から歩幅0.01で出発したトレースで、745反復目でようやく0.45を下回り、最初の1500反復が赤く塗られている。中央はバーンイン部分だけのヒストグラムで真の事後分布の緑の曲線とまるで合っていない。右は1500回捨てた残りのヒストグラムが緑の曲線とぴったり重なっている

わざと外した初期値 0.97 から、しかも小さすぎる歩幅 0.01 で出発した例です。745 反復目でようやく 0.45 を下回ります。 この期間のサンプルは事後分布ではないので捨てます。

1500 回捨てると平均 0.31860 で厳密値 0.31818 と一致します。捨てないと 0.32423 とズレたままです。

歩幅のチューニング:受容率は高いほど良いのではない

歩幅を変えると何が壊れるかの6枚。上段は3つのトレースで、step=0.005は受容率98.5%だがちょろちょろ動くだけ、step=0.15は受容率58.4%でよく動く、step=2.0は受容率6.1%で階段状に固まる。下段は対応するヒストグラムで、狭すぎる場合と広すぎる場合は事後分布の緑の曲線からずれている

反復回数は3つとも 60000 で同じなのに、質が全く違います。

歩幅 step受容率ESS(有効サンプル数)事後平均厳密値との差
0.00598.5%340.317220.00096-0.00096
0.0390.4%1,1600.31839+0.00021+0.00021
0.1558.4%10,9580.31946+0.00128+0.00128
0.523.7%8,8530.318020.00016-0.00016
2.06.1%2,1770.317830.00035-0.00035

歩幅 0.005 は受容率 98.5% でほぼ全部通りますが、一歩が小さすぎて全体を回れません。58000 個記録しているのに、独立サンプル換算では 34 個分しかない。

逆に歩幅 2.0 は提案が遠すぎてほぼ棄却され、トレースが階段状に固まります。

受容率 20〜50% あたりが目安です(1次元の理論的最適は約 44%、高次元では約 23.4% という結果が知られています)。「受容率が高いほど効率がいい」は直感的ですがで、ここは引っかかりやすい点です。

なお表を見ると、ESS が小さくても事後平均自体はそれなりに当たっています(歩幅0.005 で誤差 0.00096-0.00096)。ESS が効くのは「その推定値がどれくらい信用できるか」の側です。

自己相関の図。歩幅0.005の赤い線はラグ300でも相関0.70が残っている。歩幅0.15の緑の線はラグ20程度でほぼ0に落ちる。歩幅2.0の紫の線はラグ40程度で0に落ちる

マルコフ連鎖なので隣り合うサンプルは似ています。赤(歩幅が狭い)はラグ 300 でも相関 0.70 が残っている――300回前の値をまだ引きずっています。この「相関が消えるまでの長さ」が ESS を決めます。

まとめて検証する

トレースプロットとヒストグラムの3枚。左は初期値0.5から出発したトレースで最初の2000反復がバーンインとして赤く塗られ、事後平均0.318の緑の破線の周りを動いている。中央はそれを横に倒したヒストグラムで厳密なBeta(7,15)と重なる。右は縦向きに重ねた図

MCMC(58000サンプル)厳密(Beta(7,15)\text{Beta}(7,15)
事後平均0.319460.31818+0.00128+0.00128
事後標準偏差0.097390.09712+0.00027+0.00027
事後中央値0.313160.31258+0.00057+0.00057
2.5%点0.148440.14588+0.00256+0.00256
97.5%点0.522660.52175+0.00091+0.00091
P(θ<0.2)P(\theta<0.2)0.105070.108510.00344-0.00344
P(θ<0.5)P(\theta<0.5)0.960210.960820.00062-0.00062

サンプルの集まりが手に入ると、任意の質問が全部「数えるだけ」で答えられます。 積分をやり直す必要がありません。


共役でない実例に適用する

道具が揃ったので、手では絶対に解けない問題を解きます。ここで大事なのは、変えるのが2箇所だけだという点です。

prop = cur + rng.normal(0, 1, 2) * step        # ← 提案を2次元にした
if log(rng.random()) < log_post(*prop) - log_post(*cur):
    cur = prop
chain[i] = cur

アルゴリズム本体は1文字も変わりません。 差し替えるのは log_post の中身だけです。ここが MCMC が「あらゆるベイズモデルの標準解法」になった理由で、モデルごとに解法を考える必要がなくなりました。

例1:ロジスティック回帰をベイズでやる

第18回のロジスティック回帰を題材にします。記事の長さ xx(千字)とクリックの有無 yy(0/1)、n=20n=20

P(y=1)=11+e(b0+b1x)P(y=1) = \frac{1}{1+e^{-(b_0+b_1 x)}}

この尤度には、手で扱える(名前のついた)共役事前分布がありません(さきほど見たとおり、共役族そのものは存在しても正規化定数が閉じた形で書けません)。だから事後分布は手では出ません。パラメータは b0,b1b_0, b_1 の2個です。

書くのは事後分布の分子だけです。

def log_post(b0, b1):
    eta = b0 + b1*x
    log_lik = np.sum(y*eta - np.logaddexp(0.0, eta))   # ロジスティックの対数尤度
    log_pri = -(b0**2 + b1**2)/(2*5.0**2)              # 事前 N(0, 5²)
    return log_lik + log_pri

これだけで動きます。

ロジスティック回帰の事後分布の3枚。左はデータ20点と当てはめで、薄い青の線が事後分布から引いた120本の曲線、濃紺が事後平均の曲線、橙の破線が最尤推定。中央は2次元の事後分布の緑の濃淡の上にMCMCのサンプルが黒い点で乗り、細長い斜めの形で橙の星が最尤推定、赤いXが事後平均。右はb1の周辺事後分布でMCMCの青いヒストグラムとグリッド積分の緑の実線が重なり、黒い縦線がb1=0の基準

①データと当てはめ。 薄い青の線は事後分布から引いた120本の曲線で、これ自体が不確実性の可視化になっています。

②2次元の事後分布。 b0b_0b1b_1強く負に相関しています(相関 0.9034-0.9034)。細長い斜めの形です。直感的には、切片を下げても傾きを上げれば同じデータを説明できるからです。この「斜めさ」は後でギブスの弱点として効いてきます。

b1b_1 の周辺事後分布。 MCMC のヒストグラムとグリッド積分が完全に重なっています。

なお今回はパラメータが2個なので、グリッド数値積分で答えを別途計算できます。 これを参照解にして MCMC を検証しました。

MCMC(18万サンプル)グリッド積分(参照解)
b0b_0 事後平均2.88068-2.880682.88414-2.88414+0.00346+0.00346
b0b_0 事後標準偏差1.404411.40344+0.00097+0.00097
b1b_1 事後平均1.269641.271720.00208-0.00208
b1b_1 事後標準偏差0.522380.522640.00026-0.00026
b1b_1 2.5%点0.383210.37364+0.00957+0.00957
b1b_1 97.5%点2.423562.42260+0.00095+0.00095
P(b1>0)P(b_1 > 0)0.999120.99866+0.00046+0.00046

最後の行がベイズにしか書けない文です。「記事の長さの効果が正である確率は 99.9%」と直接言える。頻度論では p 値(データの珍しさ)しか出てきません。

最尤推定との比較:n=20n=20 では結論がズレる

b1b_1b1b_1 の95%区間
最尤推定(第18回の方法)1.145[0.152, 2.138](ワルド)
ベイズ(事後平均)1.270[0.383, 2.424](信用区間)

n=20n=20 と小さいので一致しません。 N(0,52)N(0, 5^2) の弱い事前分布が極端な値を抑える方向に効き、区間の下限が 0.152 → 0.383 と 0 から遠ざかっています。

さきほど「nn が大きければ一致する」と書きましたが、その裏返しがこれです。小標本でこそ差が出ます。

予測:サンプルを変換して数えるだけ

ここが実務で一番効く部分です。

予測分布の2枚。左は3千字の記事のクリック率の事後分布が紫のヒストグラムで、平均0.6989、95%区間[0.433,0.915]が赤い破線、0.5が緑の点線でP(>0.5)=0.9304。右は記事の長さごとの95%信用帯が水色の帯で、濃紺の事後平均の曲線を挟む。帯の幅はx≈1.8で最大0.54、右端のx=6では0.19まで狭まる

「3千字の記事のクリック率は?」に答えるには、18万個のサンプルそれぞれを変換して数えるだけです。

pr3 = 1/(1+np.exp(-(s[:,0] + s[:,1]*3.0)))   # 全サンプルを変換
pr3.mean()                                    # 0.6989
np.percentile(pr3, [2.5, 97.5])               # [0.4325, 0.9148]
(pr3 > 0.5).mean()                            # 0.9304

参照解(グリッド積分)の事後平均 0.6993 と一致します。

予測の図の右がこれを全ての xx でやったものです。頻度論なら誤差伝播の公式(デルタ法)を導出する必要がありますが、サンプルがあると変換して数えるだけです。

この図で自分の思い込みが崩れました。 最初は「データが薄い両端で帯が広がる」と書いたのですが、実測すると逆でした。

xx(千字)0.01.02.03.05.06.0
帯の幅0.3930.4980.5430.4820.2630.186

計算した x=0x = 0 から 6 の範囲では、最大は中央付近(x1.8x \approx 1.8)で、データが薄い右端がいちばん狭い。 理由は確率スケールだからです。xx が大きいと予測が 1 に張り付くので、上にも下にも動く余地がなくなります。

線形予測子(対数オッズ)のスケールで測ると期待通りの形になり、同じ範囲で幅は x=2.0x=2.0 付近が最小の 2.52、x=6.0x=6.0 が最大の 7.68 と端で広がります。つまり「端で広がる」は対数オッズのスケールでの話で、確率に変換すると天井と床に潰されて逆転する、というのが正しい理解でした。

例2:ギブスサンプリング

もう1つの主要な MCMC 手法です。題材を変えます。身長データ n=25n=25 で、平均 μ\mu と標準偏差 σ\sigma の両方が未知

ギブスが使える条件はこれです。

片方を固定すると、もう片方が共役になる。

ここでは σ\sigma を固定すれば μ\mu は正規の共役、μ\mu を固定すれば精度 1/σ21/\sigma^2 はガンマの共役になります。さきほどの共役の表がそのまま部品として使われます。

for i in range(n_iter):
    # ① σ を固定して μ を引く(正規の共役)
    prec = 1/s0**2 + n*tau
    mu  = rng.normal((m0/s0**2 + tau*data.sum())/prec, sqrt(1/prec))
    # ② μ を固定して τ=1/σ² を引く(ガンマの共役)
    tau = rng.gamma(a0 + n/2, 1/(b0 + ((data-mu)**2).sum()/2))

受容判定がありません。 棄却が0回、受容率 100% です。「提案して受け入れるか決める」のではなく、正しい分布から直接引いているので捨てる必要がありません。

ギブスサンプリングのアニメーション。等高線で表された事後分布の上を、横に動く(σ固定でμを引く)と縦に動く(μ固定でσを引く)の2段階で階段状に移動していく。斜めには決して動かない

ギブスは「横→縦」の2段階でしか動きません。 斜めには決して動かない――一度に1つのパラメータしか更新しないからです。

ギブスとメトロポリスの比較4枚。上段左はギブスの軌跡が階段状(軸に平行)、上段右はメトロポリスの軌跡が斜めに動く。下段はμのトレースで、ギブスは毎回動くが、メトロポリスは棄却されて平らな段が目立つ

軌跡を並べた図の下段のトレースで差がはっきりします。メトロポリス(右)は平らな段が目立ちます(棄却されて動けなかった時間)。ギブスは(連続パラメータなので)毎回必ず動きます。

ギブスの周辺事後分布2枚。左はμの事後分布で19.5万個のヒストグラムとグリッド積分の黒線が重なり95%信用区間[167.901,171.348]。右はσの事後分布で右に裾を引いて非対称、95%信用区間[3.269,5.810]

参照解と一致しています。σ\sigma の事後分布が右に裾を引いて非対称なのが見どころで、「標準偏差の不確実性は上側に大きい」という、当然だが式では見えにくい事実が図に出ます。

ギブスグリッド積分(参照解)
μ\mu 事後平均169.62515169.62317+0.00198+0.00198
μ\mu 事後標準偏差0.871540.873070.00153-0.00153
σ\sigma 事後平均4.318864.320610.00176-0.00176
σ\sigma 2.5%点3.268793.26095+0.00783+0.00783
σ\sigma 97.5%点5.809615.813120.00351-0.00351

効率の比較:同じ問題・同じ反復数

受容率ESS(μ\muESS(σ\sigmaμ\mu 事後平均σ\sigma 事後平均
ギブス100%193,434172,421169.62514.3189
メトロポリス23.8%24,80017,060169.62654.3259
参照解169.62324.3206

反復数は両方 195,000 で同じなのに、ギブスの有効サンプル数は 7.8〜10.1倍。しかも ESS が反復数にほぼ等しい=ほとんど独立なサンプルが得られているということです。

ただし、どちらも正しい答えに収束しています。 差は「正しさ」ではなく「効率」です。ここは混同しやすい点なので強調しておきます。

使い分け

メトロポリス・ヘイスティングス(本記事の実装は対称提案)ギブスサンプリング
必要な準備事後分布の分子が計算できればよい各パラメータの条件付き分布が既知の分布である必要
適用範囲ほぼ何でも条件付きが共役になるモデルだけ
棄却ある(受容率の調整が必要)ない(100%)
調整すべき値提案の幅なし
動き方斜めに動ける軸に平行のみ
効率低い(この例で ESS 24,800)高い(193,434)
弱点高次元だと歩幅の調整が難しいパラメータ間の相関が強いと極端に遅い

条件付き分布が書けるならギブス、書けないならメトロポリス。 これが判断基準です。

なお両者は別系統の手法ではありません。ギブスは受容確率が恒等的に 1 になるメトロポリス・ヘイスティングス法の特別な場合として導けます。だから「棄却がない」のも偶然ではなく、条件付き分布から直接引いている以上、必ず受け入れられるということです。

さきほど「決定的スキャンのギブスは詳細釣り合いを満たさない」と書いたことと矛盾するように見えますが、両方正しいです。各成分の更新それぞれは詳細釣り合いを満たす(だから MH の特別な場合と言える)のですが、決まった順番に合成したスイープ全体としては満たさないμτ\mu \to \tau の逆順にはならないため)。それでも各ステップが π\pi を不変に保つので、合成も π\pi を不変にします。

ギブスの弱点は、さきほどのロジスティック回帰の2次元事後分布に繋がります。パラメータ間の相関が強い(細長い斜めの分布)とギブスは極端に遅くなります。 軸に平行にしか動けないので、斜めの谷を進むのに小刻みなジグザグを繰り返すしかありません。例1のロジスティック回帰(相関 0.9034-0.9034)でギブスを使わなかったのは、条件付きが共役でないことに加えてこの理由もあります。

なお両者は排他ではなく、一部のパラメータだけメトロポリスで更新する「メトロポリス内ギブス」が実務では多用されます。実際の統計ソフトでは、JAGS や PyMC が変数ごとにサンプラーを割り当てる一方、Stan は一律にハミルトニアン・モンテカルロ法(HMC)とその発展版 NUTS を使います(そのため離散パラメータを直接は扱えません)。


収束判定は主観的なのか

トレースプロットを目で見るだけでは不十分です。なぜ不十分なのかが今回いちばん納得できた部分でした。

二峰性の分布(山が2つ)で、4本の鎖を別々の初期値から走らせました。

Gelman-Rubinの R-hat を示す6枚。上段は歩幅0.5の失敗例で、4本の鎖が2つの山に分断され互いに行き来できず、鎖ごとのヒストグラムは片方の山しか覆っていない。R-hatは5.1247で反復を増やしても下がらない。下段は歩幅3.0の成功例で4本とも山を越えて同じ分布に到達し、R-hatは1.0010まで下がる

上段が失敗例(歩幅 0.5)。4本が2つの山に分断され、互いに行き来できていません。鎖ごとのヒストグラムを見ると、各鎖は片方の山しか見ていない。R^=5.1247\hat R = 5.1247

下段が成功例(歩幅 3.0)。山を越えられるので4本とも同じ分布に到達。R^=1.0010\hat R = 1.0010

R^\hat R は何を測っているのか

鎖と鎖の間のばらつき BB1本の鎖の中のばらつき WW を比べています。

R^=n1nW+BnW\hat R = \sqrt{\frac{\frac{n-1}{n}W + \frac{B}{n}}{W}}
  • 収束していれば、どの鎖も同じ分布を見ている → BWB \approx WR^1\hat R \approx 1
  • 収束していなければ、鎖が別々の場所に閉じ込められている → BWB \gg WR^>1\hat R > 1

実測では失敗例で W=0.4761W = 0.4761 に対して B=120,272B = 120{,}272(25万倍)。「トレースプロットを目で見る」を数値化したものR^\hat R です。判定基準は慣習的に 1.01 未満(昔は 1.1 でしたが、近年は厳しめが推奨されます)。

なぜ複数の鎖が必要か

ここが最重要です。 失敗例の第1鎖だけを見ると、

  • 平均 3.0006-3.0006、標準偏差 0.6949
  • 前半と後半の平均差 0.0204

完璧に安定して見えます。 ところが第3鎖は平均 +3.0110+3.0110 で真逆の場所にいます。

この例では1本のトレースプロットからは気づけません。 だから「目で見る」だけでは不十分で、複数鎖+R^\hat R が必要になります。

そして R^\hat R の図の右列の通り、失敗例では反復を増やしても R^\hat R が下がりません(5.0 のまま)。

使った反復数R^\hat R(成功例)R^\hat R(失敗例)
501.39214.9858
1001.37145.4077
5001.08835.2691
2,0001.02075.1973
10,0001.00025.0187

これが「いくら回しても無駄」のサインです。 収束していない鎖は、時間をかけても収束しません。

さらに厄介な罠

この失敗例、4本まとめた平均は +0.0047+0.0047 で真の値 0 とほぼ一致してしまいます。 山が対称なので偶然打ち消し合ったのです。

しかし分布は完全に間違っており、P(1<θ<1)P(-1 < \theta < 1) は実測 0.00160 対 真値 0.00213 でズレています。

「平均が合っているから大丈夫」は収束の証拠にならない。

これは自分でやってみないと気づけない類の罠でした。R^\hat R を見ていれば 5.12 で即座に分かります。


階層ベイズ:他の記事の情報を借りる

ここからはブログのアクセス解析に直接使える話です。試験では用語レベルの扱いですが、実務でベイズを選ぶ理由がここに集中しているので数値で追いました。

困りごきから

記事30本のクリック率を知りたい。ただし表示回数がバラバラです(5回のものから2000回のものまで)。総表示 8,749回・総クリック 1,618回・全体率 0.1849。

表示8回でクリック0回の記事は「クリック率0%」なのか。 明らかに違うのに、その記事のデータだけを見ると 0/8=00/8 = 0 しか出てきません。

やり方は3つあります。

方法考え方問題
① 記事ごとに独立に推定各記事の標本比率 x/nx/n表示が少ない記事の推定が暴れる
② 全記事をまとめて1つの率にする総クリック ÷ 総表示記事ごとの違いを全部捨てる
階層ベイズ・経験ベイズ①と②の間を nn に応じて自動で取る

「階層」とは何が階層なのか

階層モデルの3層構造と2つの手法の関係。左は第3層が超パラメータa,b、第2層が記事ごとの真の率theta_iがBeta(a,b)から来る、第1層が観測データx_iが二項分布から来るという3段の箱と下向きの矢印。右は経験ベイズと階層ベイズの対比で、共通点は3層構造・縮小・事後平均の形が同じ、違いはa,bを1点に決め打つか分布として推定するか

確率の指定が3段重なっていることを「階層」と呼びます。

内容意味
第3層超パラメータ a,ba, b率の集団はどう散らばるか
第2層θ1,,θ30Beta(a,b)\theta_1, \ldots, \theta_{30} \sim \text{Beta}(a,b)30本それぞれの本当のクリック率
第1層xi二項(ni,θi)x_i \sim \text{二項}(n_i, \theta_i)実際に何回クリックされたか

下から読むと「データは θ\theta で決まる」「その θ\thetaBeta(a,b)\text{Beta}(a,b) から来ている」「その a,ba, b は…」と積み上がります。推定はこの矢印を逆にたどる作業です。

「記事ごとに違うが、無関係でもない」を階層で書いたのがこのモデルです。①は「全部無関係」、②は「全部同じ」と言っていたので、その中間を表現できるようになったことになります。

a,ba, b は何を表しているのか

ここが私がいちばん詰まった箇所でした。

Beta(a,b)\text{Beta}(a, b) は「30本の記事の真のクリック率がどう散らばっているか」を表す分布。

記事1本の率ではなく、率の集団を表しています。第2層に置かれているのが目印です。読み方は2通りあります。

読み方A:中心と集中度に分ける(意味を掴むならこちら)

計算意味
中心a/(a+b)=3.4933/20.1706a/(a+b) = 3.4933/20.17060.1732記事全体の平均的なクリック率
集中度a+ba+b20.1706大きいほど記事間の差が小さい
標準偏差ab/((a+b)2(a+b+1))\sqrt{ab/\bigl((a+b)^2(a+b+1)\bigr)}0.0822記事間のばらつき

つまり Beta(3.49,16.68)\text{Beta}(3.49, 16.68)「記事のクリック率は 0.173 ± 0.082 くらいに散らばっている」という主張です。実際の30本の真の率は平均 0.1808・標準偏差 0.0750 なので、データから正しく読み取れています。

読み方B:疑似データとして読む(計算に直結するのはこちら)

記号読み方
aa3.4933「あらかじめ 3.49 回クリックされていた」ことにする
bb16.6773「あらかじめ 16.68 回クリックされなかった」ことにする
a+ba+b20.1706合計 20.2 回分の疑似的な表示を全記事に足す

この記事の前半で出てきたラプラススムージング(分子に1、分母に2を足す)は a=b=1a=b=1 の場合でした。経験ベイズは「その足す数をデータから決める」版です。

実際の計算を1本の記事で追う

表示8回クリック0回の記事の計算過程の3枚。左は事前分布Beta(3.49,16.68)の橙の山で中心0.1732。中央は尤度でピークが0だが幅が非常に広い青い曲線。右は事後分布Beta(3.49,24.68)の緑の山で、事後平均0.1240の黒い破線と真の率0.0919の赤い点線が近い位置にある

対象: 表示 n=8n=8 回、クリック x=0x=0 回(真の率は 0.0919)

ステップ1:標本比率

x/n=0/8=0.0000x/n = 0/8 = 0.0000

これが「クリック率0%」という無意味な答えになる原因です。

ステップ2:事前分布を掛けて事後分布を作る

ベータ分布と二項分布は共役なので、足すだけです。

事後分布=Beta(x+a,  nx+b)=Beta(0+3.4933,  80+16.6773)=Beta(3.4933,  24.6773)\text{事後分布} = \text{Beta}(x+a,\; n-x+b) = \text{Beta}(0+3.4933,\; 8-0+16.6773) = \text{Beta}(3.4933,\; 24.6773)

ステップ3:その平均を取る

事後平均=3.49333.4933+24.6773=3.493328.1706=0.12400\text{事後平均} = \frac{3.4933}{3.4933+24.6773} = \frac{3.4933}{28.1706} = 0.12400

真の率 0.0919 にかなり近い値です。

図の中央パネルが要点です。nn が小さいと尤度自身の幅が非常に広く、「0 だと断定できない」と言っているので、事前分布に引かれる余地が生まれます。

ステップ4:重み付き平均に書き換える

w=nn+a+b=88+20.1706=0.28398w = \frac{n}{n+a+b} = \frac{8}{8+20.1706} = 0.28398 事後平均=w×xn+(1w)×aa+b=0.28398×0+0.71602×0.1732=0.12400\text{事後平均} = w \times \frac{x}{n} + (1-w) \times \frac{a}{a+b} = 0.28398 \times 0 + 0.71602 \times 0.1732 = 0.12400

ステップ3と一致します。自分のデータの重みは 28.4% しかなく、71.6% は全体平均から借りている。 これが「他の記事の情報を借りる」の具体的な意味です。

なぜ2つの式が同じなのかは、分数を書き換えるだけです。

x+an+a+b=xn+a+b+an+a+b=nn+a+bwxn+a+bn+a+b1waa+b\frac{x+a}{n+a+b} = \frac{x}{n+a+b} + \frac{a}{n+a+b} = \underbrace{\frac{n}{n+a+b}}_{w}\cdot\frac{x}{n} + \underbrace{\frac{a+b}{n+a+b}}_{1-w}\cdot\frac{a}{a+b}

1行目から2行目は分子を分けただけ、2行目から3行目は各項に n/nn/n(a+b)/(a+b)(a+b)/(a+b) を掛けただけです。「縮小」という高級そうな話が、ただの分数の書き換えだったのがこの単元の気持ちよいところでした。

ステップ4は必要なのか(自分が引っかかった点)

ここで私はひとつ勘違いをしました。「ステップ4は本来必要な計算だが、今回はベータだから省略できるのだろう」と思ったのです。逆でした。

ステップ4はどんな場合でも計算には不要。ただし共役のときだけ、それが厳密な等式として書ける。

ステップ3で答えはもう出ています。ステップ4は同じ数を別表記にしただけで、新しい情報を1つも生みません。「ww だけデータを信じ、残りは全体平均から借りている」という意味を見えるようにするための書き換えです。

つまり共役だと得なことが2つあります。

得られるもの共役でないと
(A)ステップ2〜3が「足すだけ」で終わる数値積分か MCMC が必要
(B)ステップ4の厳密な重み付き平均の形が存在するそもそも書き換えられない

(B) を実験しました。

重み付き平均が共役限定であることを示す2枚。左はベータ分布とロジット正規分布が形はよく似ていることを示す。右は真の事後平均と重み付き平均の式で計算した値を並べた棒グラフで、ベータでは一致(4e-16)だがロジット正規ではs=0.62で-0.0045、s=1.00で-0.0097、s=1.60で-0.0108のずれが出る

事前分布真の事後平均重み付き平均の式ずれ
ベータ Beta(3.49,16.68)\text{Beta}(3.49, 16.68)(共役)0.1240050.124005+4×1016+4 \times 10^{-16}
ロジット正規 s=0.62s=0.620.1344190.1299290.0045-0.0045
ロジット正規 s=1.00s=1.000.1035680.0938720.0097-0.0097
ロジット正規 s=1.60s=1.600.0715300.0607750.0108-0.0108

ベータでは倍精度の限界で完全一致、ロジット正規では 10310^{-3} オーダーのずれが残ります。

事後平均=w×標本比率+(1w)×全体平均\text{事後平均} = w \times \text{標本比率} + (1-w) \times \text{全体平均}

このきれいな直線の形は共役の副産物です。共役でないと、事後平均は標本比率と事前平均の線形結合では書けません(尤度と事前分布の形が非線形に絡むため)。

これは第19回のリッジ回帰との類似にも前提が付くことを意味します。 「縮小=重み付き平均」が厳密に成り立つのは、共役や正規モデルの場合だけです。

縮小の効果を測る

縮小を示す3枚。左は表示回数の少ない順に並べた矢印図で、赤い標本比率から青い経験ベイズへ矢印が伸び、下(nが小さい)ほど矢印が長く緑の破線の全体平均0.173へ引き寄せられる。中央は同じことをnを横軸にした図で、0/8と0/10の記事が標本比率だと0になることが示される。右は平均二乗誤差の対数棒グラフで、全30本で44%、n≤20で34%、n≥500で76%

方法平均二乗誤差標本比率との比
① 記事ごとに独立に最尤推定0.0050641.000
② 全記事まとめて1つの率にする0.0054571.078(悪化)
経験ベイズ(縮小推定)0.0022330.441

①も②も負けて、その中間の③が勝ちます。 精度は 2.27 倍。表示20回以下の記事に絞ると 34.3%(約3倍)まで改善します。逆に表示500回以上では 75.8% で差が小さくなります。

0/80/80/100/10 の記事は標本比率だと 0 になりますが、経験ベイズでは 0.124・0.116 に持ち上げられます(真の率は 0.092・0.143)。

縮小の重みと推定された事前分布の2枚。左は自分のデータの重みwがnとともに増えるS字カーブで、n=20.2でちょうど0.5になる。右は経験ベイズが推定した事前分布Beta(3.49,16.68)の緑の曲線が、真の生成元Beta(6,24)の黒い破線と30本の真の率のヒストグラムをおおむね捉えている

表示回数 nn自分のデータの重み ww
50.1986
200.4979
500.7125
2000.9084
2,0000.9900

推定された事前分布が「20.2回分の疑似データ」に相当するので、n=20.2n = 20.2 でちょうど半々になります。

同じ式・同じ a,ba, b を使っているのに、nn が大きい記事はほとんど動きません。

項目n=8n=8 の記事n=2000n=2000 の記事
データx=0x=0x=443x=443
標本比率0.000000.22150
事後分布Beta(3.493,24.677)\text{Beta}(3.493, 24.677)Beta(446.493,1573.677)\text{Beta}(446.493, 1573.677)
事後平均0.124000.22102
重み ww28.4%99.0%
動いた量+0.124+0.1240.0005-0.0005

nn に応じて自動で調整」の中身はこれだけです。足している疑似データが 20.2 回分なので、2000 回の実データの前では無視できる量になります。

これは第19回のリッジ回帰・Lasso と同じ話です。 あれも係数を 0 のほうへ縮めて精度を上げていました。「少し偏らせる代わりに分散を大きく減らす」というバイアス・バリアンストレードオフが、ベイズでは事前分布という形で自然に出てきます。

階層ベイズと経験ベイズは何が違うのか

ここまでの計算は経験ベイズでした。階層ベイズとの関係を整理します。

階層モデルの立場からは、経験ベイズは第3層を1点で近似したものと読める。

ただし「経験ベイズは階層ベイズの劣った版」という意味ではありません。経験ベイズは Robbins や James-Stein の流れで、頻度論的なリスク(平均二乗誤差)の観点から独立に正当化される手法です。事前分布の形を仮定しないノンパラメトリック経験ベイズもあります。

違いは第3層の扱いだけです。

経験ベイズ階層ベイズ
a,ba, b の扱い周辺尤度を最大化して1点に固定超事前分布を置いて分布として推定
計算2変数の最適化(軽い)MCMC(重い・収束判定が必要)

a,ba, b の決め方(経験ベイズ) は、各記事の θi\theta_i を積分で消してしまい、a,ba, b だけの関数を最大化します。

P(xia,b)=(nixi)B(xi+a,  nixi+b)B(a,b)(ベータ二項分布)P(x_i \mid a, b) = \binom{n_i}{x_i}\frac{B(x_i+a,\; n_i-x_i+b)}{B(a,b)} \qquad \text{(ベータ二項分布)}

θi\theta_i が消えているので2変数の最適化で済みます。これが経験ベイズが軽い理由です。

ただしここに弱点があります。

(a,b)(a, b)周辺対数尤度
(3.493, 16.677)4077.1293-4077.1293 ← 最大
(3.993, 16.677)4077.7310-4077.7310
(2.993, 16.677)4077.8145-4077.8145
(3.493, 18.677)4077.5447-4077.5447
(3.493, 14.677)4077.6502-4077.6502

aa を 3.0 や 4.0 にしても周辺尤度は 0.7 しか下がりません。 つまり (a,b)(a,b) はあまり精度よく決まっていないのに、経験ベイズは 3.493 という1点に決め打ってしまう。この決め打ちの不確実性が結果に反映されません。

階層ベイズを実際に計算する

a,ba, b に超事前分布 p(a,b)(a+b)5/2p(a,b) \propto (a+b)^{-5/2} を置き、MCMC で推定しました。θi\theta_i は共役なので解析的に積分でき、(a,b)(a,b) の2次元だけメトロポリス法で動かせば済みます。 受容率 32.6%、4本の鎖で R^=1.0010\hat R = 1.0010aa)・1.0011(bb)で収束を確認しました。

アルゴリズムは2段構えです。

for t in range(n_iter):
    # 【前半】a, b をメトロポリス法で1歩動かす(受容/棄却あり)
    prop = (a, b) + 提案のノイズ
    if log(uniform()) < log_marg(prop) - log_marg(cur):
        a, b = prop

    # 【後半】今の a, b で θ_i を1個引く ← これが「ステップ2」の分布
    for i in range(30):
        theta[t, i] = rng.beta(x[i] + a,  n[i] - x[i] + b)

後半の Beta(x+a, n−x+b) が、手計算のステップ2で作った分布そのものです。 共役なので「足すだけ」で書けるため1行で済んでいます。そして前半で a,ba, b が毎回変わるので、後半で使う分布も毎回変わります。

実際の反復を並べるとこうなります(n=8n=8, x=0x=0 の記事について)。

反復aabb使う分布(ステップ2の計算)引いた θ\theta
13.787217.2891Beta(0+3.787,  8+17.289)=Beta(3.787,25.289)\text{Beta}(0+3.787,\; 8+17.289) = \text{Beta}(3.787, 25.289)0.2701
22.967914.3536Beta(2.968,22.354)\text{Beta}(2.968, 22.354)0.0470
36.497031.7293Beta(6.497,39.729)\text{Beta}(6.497, 39.729)0.1898
42.448113.1810Beta(2.448,21.181)\text{Beta}(2.448, 21.181)0.0442
53.308114.7154Beta(3.308,22.715)\text{Beta}(3.308, 22.715)0.1136
122.07709.4009Beta(2.077,17.401)\text{Beta}(2.077, 17.401)0.3349

経験ベイズなら a=3.4933a=3.4933, b=16.6773b=16.6773 固定なので、右列が全部 Beta(3.493,24.677)\text{Beta}(3.493, 24.677) の同じ分布になります。

階層ベイズのMCMCを1反復ずつ展開したアニメーション。上のパネルで緑の事後分布の曲線が毎回変わり、赤い破線の経験ベイズは動かない。黒い三角が引かれたθの位置。下のパネルに引いたθがヒストグラムとして溜まっていく

「毎回違う分布から1個ずつ引いて溜める」――これが階層ベイズの MCMC がやっていることの全部です。

結果として事後分布は「ベータ分布の混合」になる

ベータ分布の混合を示す3枚。左は経験ベイズがBeta(3.49,24.68)の1本だけ。中央は階層ベイズでa,bが毎回違うためベータ分布が80本重なり、赤い破線の経験ベイズの1本が中央付近にある。右は混ぜた結果の緑と経験ベイズの赤い破線を重ねた図で、緑の方がピークが低く裾が厚い

  • 経験ベイズの事後分布 = 1つのベータ分布
  • 階層ベイズの事後分布 = ベータ分布の混合分布

「混合」なので、成分の平均的な分散よりは必ず広くなります(全分散の公式で V=E[V]+V[E]E[V]V = E[V] + V[E] \geq E[V])。ただし比較相手である経験ベイズの1本は V(θa^,b^)V(\theta \mid \hat a, \hat b)E[V]E[V] とは別物なので、「必ず広い」が自動的に言えるわけではありません。この例では実測で広くなっていることを後で確認します。

差が出るのは点推定ではなく区間幅

経験ベイズと階層ベイズの比較3枚。左はa,bの散布図で階層ベイズのMCMCサンプルが緑の点群、経験ベイズの点推定が赤い星でその中心付近にあり、aとbが強く正に相関している。中央は第2層の分布Beta(a,b)で経験ベイズは赤い1本、階層ベイズは緑の束。右は各記事の95%区間で、下(nが小さい)ほど緑の階層ベイズが赤の経験ベイズより長い

超パラメータの事後分布

事後平均事後SD95%区間経験ベイズの点推定
aa3.31171.3376[1.389, 6.531]3.4933
bb15.61916.2482[6.426, 30.686]16.6773
中心 a/(a+b)a/(a+b)0.17570.0194[0.1395, 0.2159]0.1732
集中度 a+ba+b18.93077.5292[7.917, 37.067]20.1706

aa の95%区間が [1.39, 6.53] と非常に広い。 記事30本しかないので a,ba, b は精度よく決まりません。

点推定はほぼ同じ

方法平均二乗誤差標本比率との比
標本比率0.0050641.000
経験ベイズ0.0022330.441
階層ベイズ0.0022590.446

差は最大 0.00495・平均 0.00164 で、実用上区別がつきません。精度を上げたいだけなら経験ベイズで十分です。

違いが出るのは区間の幅

経験ベイズの平均幅階層ベイズの平均幅
全30本0.155890.163911.051
n20n \leq 20(10本)0.244750.263581.077
n500n \geq 500(6本)0.048410.048461.001

階層ベイズの区間のほうが広い。 a,ba, b 自体の不確実性を織り込んでいるからです。逆に言えば経験ベイズは自信過剰(不確実性を1段階分数え落としている)。

95%区間が真の率を含んだ割合はどちらも 96.7%(29/30本)でした。この例では実害は出ませんでしたが、nn がもっと小さい・グループ数がもっと少ない場合は問題になります。

余分な不確実性を分解する

全分散の公式で2つに分けられます。

V(θデータ)=E[V(θa,b,データ)データ]データ不足による+V[E(θa,b,データ)データ]a,b が分からないことによるV(\theta \mid \text{データ}) = \underbrace{E\bigl[V(\theta \mid a,b,\text{データ}) \mid \text{データ}\bigr]}_{\text{データ不足による}} + \underbrace{V\bigl[E(\theta \mid a,b,\text{データ}) \mid \text{データ}\bigr]}_{a,b \text{ が分からないことによる}}

すべて「データを与えたもとで」の量です。以下では表記を簡単にするため条件付けを省略します。

値(n=8n=8, x=0x=0割合
第1項 E[V(θa,b)]E[V(\theta \mid a,b)]0.0039125892.08%
第2項 V[E(θa,b)]V[E(\theta \mid a,b)]0.000336637.92%
合計 V(θ)V(\theta)0.00424921100%

経験ベイズは第2項を丸ごと落としています。 a,ba, b を1点に決め打った瞬間に V[E(θa,b)]=0V[E(\theta \mid a,b)] = 0 になるからです。

検算として、MCMC サンプルでの実測(平均 0.119194・標準偏差 0.064721)と厳密な混合分布の値(平均 0.119450・標準偏差 0.065186)が一致しました。経験ベイズの標準偏差は 0.061024 なので、階層ベイズは 1.068 倍です。

経験ベイズが不確実性を過小評価する度合いを表示回数nに対してプロットした図。n=5で1.094倍が最大、n=2000では1.0008倍でほぼ差がない。全体としては減少傾向だが単調ではなく、n=30付近で1.080に跳ね上がる箇所などギザギザしている

過小評価の度合いは nn が小さいほど大きくなりますn=5n=5 で 1.094 倍、n=2000n=2000 で 1.0008 倍)。nn が大きい記事は a,ba, b にほとんど頼っていない(重み ww が 99%)ので、a,ba, b の不確実性も効かないのです。

ただし単調ではありません。 30本を nn の順に並べると9箇所で増加しており(n=25n=25 の 1.0361 から n=30n=30 の 1.0803 など)、xx の値によっても変わります。nn と比の順位相関は 0.9564-0.9564 で、「おおむね減るが単調ではない」が正確な表現です。

同じ理由で、この比は第2項の割合だけでは決まりません。n=8n=8 なら 1/(10.0792)=1.042\sqrt{1/(1-0.0792)} = 1.042 のはずですが実測は 1.068 です。第1項 E[V(θa,b)]E[V(\theta \mid a,b)] も経験ベイズの V(θa^,b^)V(\theta \mid \hat a, \hat b) と等しくないa,ba, b を平均する操作が条件付き分散そのものも動かす)ためで、この点は最初に書き間違えて検算で気づきました。


この「二段階」の正体は周辺化だった

階層ベイズの MCMC を見ていて、いちばん面白かったのがここです。

最終的に欲しいのは a,ba, b ではありません。 a,ba, b の分布を求めて、それに従って引いた θ\theta の分布が欲しい。この二段階の構造に、統計学は名前を持っています。

用語英語意味
局外パラメータ(迷惑パラメータ)nuisance parameterモデルを書くのに必要だが、それ自体には興味がない量。ここでは a,ba, b
周辺化marginalization局外パラメータを積分で消す操作

式で書くとこうです。

p(θiデータ)=p(θia,b,データ)ベータ分布(ステップ2)p(a,bデータ)その a,b のありそうさdadbp(\theta_i \mid \text{データ}) = \iint \underbrace{p(\theta_i \mid a, b, \text{データ})}_{\text{ベータ分布(ステップ2)}} \cdot \underbrace{p(a, b \mid \text{データ})}_{\text{その } a,b \text{ のありそうさ}} \, da\, db

MCMC はこの二重積分を「引いて数える」で自動的にやっています。

  • アニメの前半(メトロポリス法)= p(a,bデータ)p(a,b \mid \text{データ}) から引く
  • アニメの後半(ベータから抽出)= p(θa,b,データ)p(\theta \mid a,b,\text{データ}) から引く

「二段階」に見えたのは正しく、それが積分の構造をそのまま反映しているからでした。

そして経験ベイズは、この式の後半を1点に集まった分布で近似しています。

p(a,bデータ)δ(aa^,  bb^)p(a,b \mid \text{データ}) \approx \delta(a - \hat a,\; b - \hat b)

デルタ関数で置き換えると積分が消えて、ベータ分布1本だけが残る。 「経験ベイズ=1本、階層ベイズ=混合」の正体はこれでした。

同じ構造を第7回で既に見ていた

ここで伏線が回収されます。t分布がまさにこの構造です。

第7回で t分布を「分散を知らない罰金」として学びました。その中身はこうです。

Xσ2N(0,σ2),σ2逆ガンマ(ν/2,ν/2)X \mid \sigma^2 \sim N(0, \sigma^2), \qquad \sigma^2 \sim \text{逆ガンマ}(\nu/2,\, \nu/2)

σ2\sigma^2周辺化すると、ちょうど自由度 ν\nu の t分布になります。つまり

t分布 = 正規分布の混合分布

今回の「階層ベイズの事後分布 = ベータ分布の混合」とまったく同じ構造です。

t分布が正規分布の混合であることを示す3枚。左はσ²を色々変えた正規分布が6本重なっている。中央はσ²自身の分布である逆ガンマ分布のヒストグラム。右は①を②で混ぜた結果の緑のヒストグラムがt分布の黒い線と完全に重なり、σ²=1に決め打った標準正規の赤い破線だけが対数軸の裾で大きく下に外れている

実験で確認しました。

自由度 ν\nu95%点(混合をシミュレーションで作った)95%点(t分布の厳密値)
32.35252.35340.0009-0.0009
52.01582.0150+0.0008+0.0008
101.81571.8125+0.0032+0.0032
301.69721.69730.0001-0.0001

左の列は400万個の乱数によるシミュレーション値なので、10310^{-3} 程度の差は乱数誤差です。

分散も一致します(ν=5\nu=5 で混合 1.6641 対 理論値 ν/(ν2)=1.6667\nu/(\nu-2) = 1.6667)。

そして「決め打つと自信過剰になる」のも同じ

自由度 ν\nut の 97.5%点正規の 97.5%点区間の過小評価
33.18241.960038.4%
52.57061.960023.8%
102.22811.960012.0%
302.04231.96004.0%
1001.98401.96001.2%

(この列は数表と照合できるよう厳密値を載せています。)

「なぜ nn が小さいと zz ではなく tt を使うのか」の答えがこれです。 σ2\sigma^2 を1点(最尤推定値)に決め打つと、区間が ν=3\nu=3 で 38.4% も短くなります。

そして階層ベイズで見た「経験ベイズは区間が 5% 狭い」とまったく同じ種類の誤りです。一般化するとこうなります。

消すべきパラメータを最尤推定値のような中心的な1点に決め打つと、通常は自信過剰(区間が狭すぎる)になる。 正しく周辺化すると裾が厚くなる。

ただし「必ず」ではありません。代入する点の選び方で向きが変わります。 σ2\sigma^2 を最尤推定値ではなく事後平均 E[σ2]=ν/(ν2)E[\sigma^2] = \nu/(\nu-2) で代入すると、ν=3\nu=3 では 1.963=3.39481.96\sqrt{3} = 3.3948 となり、t の 3.1824 より6.7% 広くなります(自信過小)。ν=5\nu=5 では 2.5303 対 2.5706 で 1.6% 狭いだけです。

理由は階層ベイズのところで自分で見つけた不一致と同じで、V(θa^,b^)E[V(θa,b)]V(\theta \mid \hat a, \hat b) \neq E[V(\theta \mid a,b)] だからです。「1点に潰すと V[E()]V[E(\cdot)] の項が消える」のは常に正しいが、同時に第1項も動くので、差し引きの符号は代入する点に依存します。

この構造が現れる場所の一覧

消したいもの結果効果
t分布(第7回)σ2\sigma^2 が未知正規分布の混合裾が厚くなる
負の二項分布(第5回)ポアソンの λ\lambda がばらつくポアソンの混合過分散になる
階層ベイズ(今回)a,ba, b が未知ベータ分布の混合区間が広くなる
予測分布(今回)θ\theta が未知二項分布の混合ベータ二項分布になる
ランダム効果モデル群ごとの効果がばらつく正規分布の混合群内相関が生じる

第5回の負の二項分布がここに入るのが面白いところです。 第18回で「ポアソン回帰で過分散が起きたら負の二項分布にする」という手続きを扱いましたが、その中身はλ\lambda を周辺化した混合分布を使うということでした。

過分散=混合したから分散が増えた。

予測分布でも同じことが起きる

予測分布も混合であることを示す棒グラフ。次の20回表示でのクリック数について、θの不確実性を織り込んだベータ二項分布(緑・分散3.586)とθ=0.1240に決め打った二項分布(赤・分散2.173)を並べており、緑の方が横に広い。とくにk=0では0.135対0.071で約2倍の差がある

n=8n=8x=0x=0 の記事を「次に20回表示したら何回クリックされるか」。

クリック数 kkθ\theta の不確実性を織り込むθ\theta を決め打つ
00.135440.07080
10.216660.20045
20.216700.26956
30.171380.22895
分散3.5862.173

分散が 1.65倍。とくに k=0k=0 の確率が約2倍違います。「1回もクリックされない確率」を θ\theta 決め打ちで見積もると半分に見誤るということです。

シミュレーション(200万回)とベータ二項分布の式が小数第4位まで一致することも確認しました(0.13555 対 0.13544)。


ベイズファクター:p値とは違う問いに答えている

第12回で触れたリンドレーのパラドックスを、ここで数値にします。

まず何が違うかを固定します。

  • p値H0H_0 が正しいと仮定したときの「データの珍しさ」。計算式に H1H_1 は入らない(ただし「何をより極端とみなすか」=片側か両側か・どの検定統計量を使うかは H1H_1 で決まります。第12回のネイマン・ピアソンの補題がまさにこれ)
  • ベイズファクターH0H_0H1H_1 の「データを予測できた度合い」の比。両方使う
BF10=P(データH1)P(データH0)BF_{10} = \frac{P(\text{データ} \mid H_1)}{P(\text{データ} \mid H_0)}

p値を固定して nn を動かす

コイン投げ nn 回で表 xx 回。H0:θ=0.5H_0: \theta = 0.5H1:θH_1: \theta \sim 一様(0,1)(0,1) とします。nn で「両側p値がちょうど 0.01 前後になる」データを選びました。

リンドレーのパラドックスの2枚。左は標本サイズnを対数軸にとり、赤いp値の線がほぼ水平に0.01付近を保つ一方、青いベイズファクターの線が43.8から0.035へ3桁下がって1を突き抜ける。右はH1が0から1全体に薄く確率を広げているのに対しH0が0.5の1点に集中していることを図示し、観測0.5013の位置を示している

nnxx標本比率両側p値BF10BF_{10}2つの結論
20170.85000.0025843.80どちらも H1H_1(一致)
100640.64000.006646.35どちらも H1H_1(一致)
1,0005420.54200.008641.35p は有意/BF はほぼ中立
10,0005,1300.51300.009590.368p は有意/BF は H0H_0 支持
100,00050,4080.50410.009960.111p は有意/BF は H0H_0 支持
1,000,000501,2890.50130.009970.035p は有意/BF は H0H_0 が29倍

p値はほぼ水平なのに、BF は 43.8 → 0.035 と3桁下がって 1 を突き抜けます。 同じ「p = 0.01 で有意」なのに結論が反転する。これがリンドレーのパラドックスです。

種明かし

上の図の右パネルです。H1H_1θ\theta \sim 一様)は確率を 0〜1 全体に薄く広げているので、観測点 0.5013 の近くに置いた確率はごくわずかです。一方 H0H_0 は 0.5 の1点に全部を賭けていて、0.5013 は 0.5 のすぐ近くです。

H1H_1 は的が広すぎて、当てても偉くない。

だから H0H_0 が勝ちます。言い換えると、p値は「差があるか」を見ていて、BF は「H0H_0H1H_1 のどちらがマシか」を見ている。 nn が巨大なら 0.5013 と 0.5 の差は検出できますが、それは「H1H_1 の方がマシ」を意味しません。

統計的有意性と実質的重要性の区別そのものがここに出ています。

BF の弱点も見ておく

ベイズファクターがH1の設定に敏感であることを示す2枚。左は同じデータでH1の事前分布を一様・Beta(500,500)・Beta(50000,50000)と狭くしていくと、BFが0.035・0.874・6.184と変わることを示す。右はH1の事前分布の幅を横軸にとった対数グラフで、狭くするとBFが1/3と3の判定境界を跨いでH1支持に転じる

同じデータ(n=100n=100万・x=501,289x=501{,}289)で、H1H_1 の事前分布の広さだけを変えます。

H1H_1 の事前分布幅(標準偏差)BF10BF_{10}結論
一様 Beta(1,1)\text{Beta}(1,1)0.28870.0348H0H_0 を支持
Beta(50,50)\text{Beta}(50,50)0.04980.277H0H_0 を支持
Beta(500,500)\text{Beta}(500,500)0.01580.874どちらとも
Beta(5000,5000)\text{Beta}(5000,5000)0.00502.671どちらとも
Beta(50000,50000)\text{Beta}(50000,50000)0.00166.184H1H_1 を支持

BF の結論は H1H_1 の設定次第です。 p値には H1H_1 が無いのでこの問題は起きませんが、代わりに「H1H_1 との比較」という情報も得られません。優劣ではなく、答えている問いが違うというのが正確な整理です。

読み方の慣習と、BF の明確な利点

BF10BF_{10}証拠の強さ
1〜3ほとんど言及に値しない
3〜20positive(そこそこ)
20〜150strong(強い)
150 以上very strong(非常に強い)

BF10<1BF_{10} < 1 なら逆数を見て H0H_0 側を同じ尺度で読みます。

p値に対する明確な利点が1つあります。 BF はH0H_0 を積極的に支持できるBF10<1/3BF_{10} < 1/3 なら「H0H_0 側に証拠がある」と言える)。ただしこれは指定した H1H_1 と比べての相対的な主張です(さきほど見た H1H_1 依存性がそのまま効きます)。

第12回で見たとおり、頻度論では「有意差なし」は「差がないと言えた」ではなく「言えなかっただけ」でした。BF はこの非対称性を解消します。

第2回との接続

事後オッズ=事前オッズ×ベイズファクター\text{事後オッズ} = \text{事前オッズ} \times \text{ベイズファクター}

n=100n=100x=64x=64 なら BF10=6.35BF_{10} = 6.35。オッズは常に H1/H0H_1/H_0 の向きで読みます。

事前の考え事前オッズ事後オッズP(H1データ)P(H_1 \mid \text{データ})
H0H_0H1H_1 を五分五分と思っていた16.350.864
H0H_0 の方が9倍ありそうと思っていた1/90.7050.414

第2回の陽性的中率とまったく同じ形です(事前オッズ × 尤度比 = 事後オッズ)。ベイズファクターは尤度比を仮説のレベルに持ち上げたものだと読めます。

なお、この向きは自分で一度間違えました。「H0H_0 の方が9倍ありそう」に対して事前オッズ 9 を掛けてしまったのですが、オッズは H1/H0H_1/H_0 なので正しくは 1/9 です。分母と分子のどちらが H0H_0 かを毎回確認する必要があります。


実務でベイズを使うべき場面

結論から言うと、nn が十分にあって「差があるか」だけ知りたいなら頻度論で足ります。 Wilson の信頼区間と信用区間はほぼ一致しました。

手間をかけてベイズにする意味があるのは、次のどれかに当てはまるときです。

ベイズが効く場面なぜこの回で見た証拠
標本が小さい事前情報が精度に効く。頻度論の近似が壊れる領域Wald が θ=0.05\theta=0.05 で被覆率 63.89%/x=0x=0 で区間が [0,0] に潰れる
グループが多数あってデータ量が不均衡階層モデルで情報を借りられる記事30本で平均二乗誤差が 44%・少数派に絞ると 34%
「確率」として答えたいP(θ>0.5)P(\theta>0.5) のような文が直接書けるP(b1>0)=0.999P(b_1>0) = 0.999P(クリック率>0.5)=0.930P(\text{クリック率}>0.5) = 0.930
予測の不確実性が欲しいサンプルを変換して数えるだけ。誤差伝播(デルタ法)の導出が不要信用帯がそのまま出る(確率スケールでは中央が最大・対数オッズなら端で広がる)
複雑なモデル・欠測・階層構造MCMC なら尤度が書ければ解ける共役でないロジスティック回帰も log_post を差し替えるだけ
逐次的に見たい(A/Bテストを途中で覗く)事後分布は「今の情報」なので、覗いても事後分布の解釈自体は壊れない

逆に頻度論で十分な場面もはっきりしています。

頻度論で十分な場面なぜ
nn が十分(数百以上)で「差があるか」だけ知りたい結論の数字がほぼ同じ。事前分布の議論が無駄になる
規制・査読・社内合意で「p値」が期待されている説明コストが小さい方を選ぶのは合理的
事前分布の根拠を説明できない小標本では結論を左右するので、正当化できないなら使えない
誤り率(第一種の誤りを5%に抑える)を保証したいそれは頻度論が設計目標にしている性質

A/Bテストの場合

第6回でベータ分布を使って P(A>B)P(A>B) を計算しましたが、あれはまさにベイズの発想でした。

ベイズが向く理由は3つです。①「B が A より良い確率は 87%」という意思決定に直結する形で出る。②途中で覗いても事後分布の解釈は壊れない(頻度論では覗くたびに多重性が発生し第一種の誤りが膨らむ)。③損失込みで判断できる。

もっとも②には条件が付きます。P(A>B)>0.95P(A>B) > 0.95 になったら止める」という運用の第一種の誤り率は保証されません。 弱い事前分布のもとで覗き続けると、いずれ閾値を跨いでしまうことがあります(sampling to a foregone conclusion)。頻度論的な誤り率を担保したいなら、別途停止規則を設計する必要があります。

ただし注意が1つあります。P(A>B)=95%P(A>B) = 95\%」は「差が実質的に大きい」を意味しません。ごく小さい差でも nn が増えれば確率は 1 に近づきます(リンドレーのパラドックスとは現象が逆向きですが、統計的有意性と実質的重要性は別という点で同根です)。差の大きさそのものの事後分布を見るべきで、これはベイズならそのまま出せます。


今回の要点まとめ

頻度論とベイズの2軸

頻度論ベイズ
θ\theta の扱い固定した定数確率変数(知識の不確かさ)
データの扱い確率変数(取り直せる)固定(もう見た)
区間信頼区間(作り方の成績)信用区間(θ\theta の確率)
点推定最尤推定MAP(事前が平らなら最尤推定)/事後平均
仮説の比較p値(計算式は H0H_0 だけ)ベイズファクター(両方を比べる)
「差がない」と言えるか言えない(棄却できないだけ)言えるBF10<1/3BF_{10} < 1/3。ただし指定した H1H_1 と比べて)
計算の壁分布の導出分母の積分 → MCMC で回避
小標本近似が壊れる事前分布が効いて安定する
大標本ほぼ一致するほぼ一致する

引っかかった点と答え

引っかかった点答え
結局ベイズ統計とは何か何が固定で何が動くかを入れ替えただけ。 θ\theta が確率変数になるので「θ\theta が区間に入る確率」と言える
クリック率は1つの値ではベイズの分布は θ\theta の物理的ばらつきではなく自分の知識の不確かさ
「二項分布と共役」とは正確には「ベータ分布は二項尤度に対する共役事前分布」。尤度の族と事前分布の族の関係
なぜベータ×二項がベータに戻るのかどちらも θ何乗(1θ)何乗\theta^{\text{何乗}}(1-\theta)^{\text{何乗}} の同じ骨格なので掛けても壊れない
共役事前分布はいつ存在するか指数型分布族なら必ず構成できるが、逆は成り立たない(一様×パレート)。ロジスティック回帰は指数型だが共役族の正規化定数が書けない
信用区間は素直に解釈できるのか本当。 ただし数字は Wilson の信頼区間とほぼ一致する([0.145, 0.519] 対 [0.146, 0.522])
MCMC が何なのか分からない名前を分解する。 Monte Carlo(数え方)+ Markov chain(歩き方)で、前者にマルコフ連鎖は出てこない
モンテカルロ法とは計算する代わりに数える。 長方形で囲むのは棄却法に固有の話で本質ではない
なぜマルコフ連鎖で事後分布が出るのか足跡の分布=定常分布なので、定常分布が事後分布になる歩き方を設計する
なぜ比を取るのか計算できない分母が約分で消える。 正規化定数を知らないままサンプルできる
受容確率の式はどこから来たのか詳細釣り合いが成り立つように逆算した。 実測で左右が 101610^{-16} 精度で一致
受容率は高い方がよいのか逆。 20〜50%が目安。98.5%だと58000個が実質34個分
収束判定は主観的かR^\hat R で数値化できる。 ただし1本の鎖だけでは気づけない場合がある(安定して見えるのに真逆の場所)
無情報事前分布は無情報か違う。 一様を対数オッズで見ると山型(P(1<ψ<1)P(-1<\psi<1) が一様の3.7倍)
ジェフリーズの動機は変換不変性かその通り。 ルートAとBの比が 1.000000 で一致
ステップ4(重み付き平均)は必要かどんな場合でも計算には不要。共役のときだけ厳密に書けるご褒美
階層ベイズと経験ベイズの違いa,ba,b を1点に固定するか分布として扱うか。 階層モデルから見れば経験ベイズは第3層の点近似だが、経験ベイズ自体は頻度論的リスクの側からも正当化される
どこに差が出るのか点推定はほぼ同じ(0.002233 対 0.002259)。区間幅が 5.1% 違う
a,ba, b とは何か第2層の分布のパラメータ=率の集団を表す。 中心 a/(a+b)a/(a+b) と集中度 a+ba+b、または疑似データ
二段階の構造は何なのか局外パラメータの周辺化。 t分布・負の二項分布・予測分布もすべて同じ構造
決め打つと何が起きるか最尤推定値のような中心的な点なら通常は自信過剰σ2\sigma^2 を固定して zz を使うと ν=3\nu=3 で 38.4% 過小)。ただし事後平均で代入すると逆に 6.7% 広くなり「必ず」ではない
ベイズファクターとp値の違いp値は「差があるか」、BF は「H0H_0H1H_1 のどちらがマシか」。 巨大な nn で正反対になる

自分が間違えた点

記録として残します。

間違い正しくは
「共役は予習済み」と思っていた定義を聞かれて答えられなかった。尤度の族と事前分布の族の関係という点が抜けていた
モンテカルロ法=長方形で囲む方法囲むのは棄却法に固有。モンテカルロ法の本質はサンプル平均で期待値を代用すること
MCMC は数え方をマルコフ連鎖に適用した逆。 数える部分は不変で、変わったのはサンプルの作り方だけ
ステップ4は共役なら省略できるどんな場合でも計算には不要。 共役だと厳密な等式として書けるだけ
SD比は第2項の割合で決まる第1項も経験ベイズと等しくない。 n=8n=8 で予測 1.042 対 実測 1.068
SD比は nn について単調に減る9箇所で増加している。 順位相関 0.9564-0.9564 で「おおむね減る」が正確
事前オッズは H0H_0 が9倍なら9オッズは H1/H0H_1/H_0 なので 1/9
共役事前分布は指数型分布族のときだけ存在する「だけ」が誤り。 一様分布×パレートが反例。しかもロジスティック回帰は指数型分布族で、共役族自体は存在する(正規化定数が書けないだけ)
(x+1)/(n+2)(x+1)/(n+2) は Agresti-Coull 法違う。 Agresti-Coull は (x+2)/(n+4)(x+2)/(n+4)+1/+2+1/+2 はラプラス補正
信用帯はデータが薄い両端で広がる確率スケールでは逆。 中央が最大(幅 0.543)で右端が最小(0.186)。端で広がるのは対数オッズのスケール
詳細釣り合いは定常分布であるための必要条件十分条件でしかない。 決定的スキャンのギブスは満たさないのに π\pi を不変にする
イェンセンの不等式は第8回第4回(変数変換の回)

試験対策としての優先順位

優先度項目
最優先共役事前分布の組み合わせと事後分布の形(ベータ×二項、ガンマ×ポアソン、正規×正規)/事後平均・MAP・信用区間の計算
優先信頼区間と信用区間の違い/ジェフリーズ事前分布が Beta(0.5,0.5)\text{Beta}(0.5,0.5) になる導出
普通MCMC の考え方(メトロポリスとギブスの違い・収束判定の用語)
軽くベイズファクター/階層ベイズ・経験ベイズ(用語と使いどころ)

準1級では MCMC を実装させる問題は出ません。 用語(バーンイン・提案分布・受容率・R^\hat R)と「なぜ必要か」を答えられれば十分です。手を動かす計算問題は共役事前分布に集中しています。


次回

次回は第32章のシミュレーションです。今回の MCMC で「乱数を使って答えを出す」という発想に踏み込みましたが、次回はその基礎を正面から扱います。

逆関数法・棄却法・ボックス=ミュラー法といった乱数をどう作るかの技術と、ブートストラップ法や並べ替え検定といった乱数で推論する技術です。今回使った棄却法が、そこでは主役として再登場します。

そして接続がひとつあります。今回は「棄却法は高次元で死ぬからマルコフ連鎖が必要だった」という話でしたが、次回は低次元では棄却法が今でも現役である理由を扱います。適材適所の話になります。

この連載の全体像とこれまでの回は統計検定準1級・独学連載のまとめにあります。