サンプリングの妥当性検証#
\(\hat R\)(R-hat, Gelman–Rubin統計量)#
R-hatは複数チェーン間の分散と各チェーン内の分散の比によって定義される。
直感的には「チェーン同士が同じ分布を見ているか」。
\(\hat R \le 1.01\) であれば収束しているとみなされる
\(\hat R\)(R-hat, Gelman–Rubin統計量)
\(j\ (j=1,\cdots,m)\) 本目のチェーンの \(i\ (i=1,\cdots,n)\) 番目サンプルの値を \(\theta_{ij}\) と表す。 チェーン\(j\)の平均 \(\bar{\theta}_{. j}\) と全体平均 \(\bar{\theta}_{. .}\) をそれぞれ次のように定義する。
チェーン内分散(within-chain variance)
各チェーンの標本分散
の平均を\(W\)とする。
チェーン間分散(between-chain variance)
※係数 \(n\) は「チェーン平均の分散」を元のスケールに戻すため。
事後分散の推定量
有限標本補正を入れた事後分散の推定量
\(W\):チェーン内のばらつき
\(B\):チェーン間のばらつき
R-hat
\(\hat{R}\)統計量は次のように定義される
チェーンが別々の領域を探索しているならチェーン間分散が多くなり\(B>W\) となり \(\hat{R} > 1\)となる。
各チェーンが同じ分布をサンプリングしているなら \(B\approx W\) となり \(\hat{R} \approx 1\)となる
古典的 \(\hat R\) の問題点として、
非対称分布・重い裾に弱い
平均と分散しか見ていない
があった。
そこで
rank-normalization: サンプルを順位変換 → 正規スケール
folding: 中心からの距離を使い、裾の混合を検出
split chains: 各チェーンを前半・後半に分割し \(m\) を倍増
といった改良がされている(Stan/PyMCなど今のライブラリはこちらを使っている)