bayesplot を使ったモンテカルロ法の実用ガイド
Practical Guide of Monte Carlo Methods with bayesplot
@ill-identified
2019/5/22
1
自己紹介
• Twitter: @ill_identified
• ブログ: http://ill-identified.hatenablog.com/
• LinkedIn: https:
//www.linkedin.com/in/satoshi-katagiri/
2
宣伝
• 今年の日本人工知能学会 (JSAI) で発表します
• 2019 年 6 月 6 日 (木) 13:50 〜15:30 K 会場 (201 A中会議
室)
• https:
//confit.atlas.jp/guide/event/jsai2019/
subject/3K3-J-2-03/tables?cryptoId=
• 決して面白いものでも勉強になるものでもありません
3
イントロダクション
• マルコフ連鎖モンテカルロ法 (MCMC) は
• 正しい使い方がよくわからない.
• 収束しない場合はどうすればいいのかわからない.
• ネット上にまとまった情報がない
• 収束判定の目安についてまとめた
4
モンテカルロ法とは
• 読んでください
• 今回は「収束をどう判定するか」の話をします
• 主に BDA3 (Gelman, A. et al., 2013) 準拠
5
トレースプロット
• サンプル列を時系列に沿ってプロット
•「毛虫」みたいな形状になると良い
−10
0
10
20
30
0 500 1000 1500
µ
Chain
1
2
3
4
Hairy caterpillar (from Costa Rica)
Trace plot
Figure 1: 理想的なトレースプロットと毛虫 (モザイク処理済み)
6
ˆR を確認する.
• ˆR = potential scale reduction factor (PSRF), または提案者
の名前から Gelman-Rubin 統計量とも
• サンプル系列内・系列間分散をもとに計算
• 1.1 未満ならサンプルは収束している
PSRF :=
√
n − 1
n
+
1
n
B
W
,
B :=
n
m − 1
m∑
j=1
( ¯ψj − ¯ψ)2
,W :=
1
m
m∑
j=1
s2
j ,
¯ψj :=
1
n
n∑
i=1
ψi,j, ¯ψ :=
1
m
m∑
j=1
¯ψj, s2
j :=
1
n − 1
n∑
i=1
(ψi,j − ¯ψj)2
7
bayesplot で一望
• bayesplot::mcmc_rhat()
1.00 1.05
R
^
R
^ ≤ 1.05
R
^ ≤ 1.1
R
^ > 1.1
Figure 2: bayesplot での PSRF のプロット例 8
自己相関関数 (ACF, コレログラム)
• ラグ >2 で急激にゼロに近づくものが好ましい.
• bayesplot::mcmc_acf_bar()
tau
1234
0 5 10 15 20
0.0
0.5
1.0
0.0
0.5
1.0
0.0
0.5
1.0
0.0
0.5
1.0
Lag
Autocorrelation
Figure 3: bayesplot での自己相関係数プロット 9
有効サンプルサイズ ˆneff
• 自己相関が強いと分散を正しく推定できない
• 自己相関を考慮した場合の「実質的なサンプルサイズ」を
推定する
• サンプルサイズ (mn) と同じかそれ以上なら問題なし. 最
低でも 5m
• あるいは標準誤差 = ˆσ2/
√
1 + 1/ˆneff の公式から最低ライン
を決める
ˆneff :=
mn
1 + 2
∑2m+1
t=1 ˆρt
,
ˆρt :=1 −
W − m−1
∑m
m=1 ˆρt,m
(n − 1)n−1W + n−1B
10
bayesplot で一望
• bayesplot::mcmc_neff()
0 0.1 0.25 0.5 0.75 1 1.5
Neff N
Neff N ≤ 0.1
Neff N ≤ 0.5
Neff N > 0.5
Figure 4: bayesplot での有効サンプルサイズのプロット例 11
bayesplot パッケージ
• mcmc_*() シリーズの関数でサンプル診断用グラフ作成
• rstan のビルトイン関数より充実している
• ggplot オブジェクトと同じように扱える
• ggplot2 と同様の方法でデザインを変更できる
• サンプルを 3 次元配列で入力する
• BUGS, JAGS などにも対応
• rstan なら as.array() だけで OK
• 今回のソースコードは以下に
• https://gist.github.com/Gedevan-Aleksizde/
88cc7c3518128471d67e99dbc98bac1c
12
ケーススタディ: ˆR の値が大きい
• 試行回数 iters を増やす.
• モデルの設定が悪いと増やしても改善しない (figure 5)
• 事前分布で制約, または再パラメータ化 (reparameterize)
b
a
0 200 400 600 800 1000
0 200 400 600 800 1000
-5000
0
5000
10000
-10000
-5000
0
5000
Chain
1
2
3
4
mu[2]
mu[1]
0 200 400 600 800 1000
0 200 400 600 800 1000
-1
0
1
-1
0
1
Chain
1
2
Figure 5: パラメータが一意に定まらないモデルの例
13
ˆneff の値が小さい
• ˆR が改善すれば ˆneff も改善するので, ˆR を優先
• stan 以外だと受容率など見る必要あり
mu[1] mu[2]
12
0 5 10 15 20 0 5 10 15 20
0.0
0.5
1.0
0.0
0.5
1.0
Lag
Autocorrelation
Figure 6: 自己相関の大きい例
14
まとめ
1. かならず初期値の異なる複数系列で実行する (stan ならデ
フォルト設定).
2. ˆR の値を確認する.
3. トレースプロットの形状を確認する. ˆR の値が 1 に近くと
も不自然な形状なら原因を調べる.
4. ˆneff を確認する. 値が小さければ試行回数を増やす.
15
参考文献 i
Brooks, Stephen P and Andrew Gelman (1998) “General
Methods for Monitoring Convergence of Iterative
Simulations,” Journal of computational and graphical
statistics, Vol. 7, No. 4, pp. 434-455, December, DOI:
10.2307/1390675.
Gelman, A., J. B. Carlin, H. S. Stern, D. B. Dunson, A. Vehtari,
and D. B Rubin (2013) Bayesian Data Analysis: CRC Press,
3rd edition.
Gelman, Andrew and Donald B. Rubin (1992) “Inference from
Iterative Simulation Using Multiple Sequences,” Statistical
Science, Vol. 7, No. 4, pp. 457-472, November, DOI:
10.1214/ss/1177011136.
16
参考文献 ii
Neugebauer, Roman (2018) Mucha: An Illustrated Life, Praha:
Vitalis Verlag Gmbh.
伊庭幸人・種村正美・大森裕浩・和合肇・佐藤整尚・高橋明彦
(2005)『統計科学のフロンティア 12 計算統計 II』,岩波書店.
奥村晴彦・瓜生真也・牧山幸史 (2018) 『R で楽しむベイズ統
計入門』,Data Science Library シリーズ,技術評論社.
岩波データサイエンス刊行委員会(編)(2015) 『岩波データサ
イエンス』,第 1 巻,岩波書店,第 1 版.
松浦健太郎 (2016) 『Stan と R でベイズ統計モデリング』,共
立出版.
17

bayesplot を使ったモンテカルロ法の実践ガイド

  • 1.
    bayesplot を使ったモンテカルロ法の実用ガイド Practical Guideof Monte Carlo Methods with bayesplot @ill-identified 2019/5/22 1
  • 2.
    自己紹介 • Twitter: @ill_identified •ブログ: http://ill-identified.hatenablog.com/ • LinkedIn: https: //www.linkedin.com/in/satoshi-katagiri/ 2
  • 3.
    宣伝 • 今年の日本人工知能学会 (JSAI)で発表します • 2019 年 6 月 6 日 (木) 13:50 〜15:30 K 会場 (201 A中会議 室) • https: //confit.atlas.jp/guide/event/jsai2019/ subject/3K3-J-2-03/tables?cryptoId= • 決して面白いものでも勉強になるものでもありません 3
  • 4.
    イントロダクション • マルコフ連鎖モンテカルロ法 (MCMC)は • 正しい使い方がよくわからない. • 収束しない場合はどうすればいいのかわからない. • ネット上にまとまった情報がない • 収束判定の目安についてまとめた 4
  • 5.
  • 6.
    トレースプロット • サンプル列を時系列に沿ってプロット •「毛虫」みたいな形状になると良い −10 0 10 20 30 0 5001000 1500 µ Chain 1 2 3 4 Hairy caterpillar (from Costa Rica) Trace plot Figure 1: 理想的なトレースプロットと毛虫 (モザイク処理済み) 6
  • 7.
    ˆR を確認する. • ˆR= potential scale reduction factor (PSRF), または提案者 の名前から Gelman-Rubin 統計量とも • サンプル系列内・系列間分散をもとに計算 • 1.1 未満ならサンプルは収束している PSRF := √ n − 1 n + 1 n B W , B := n m − 1 m∑ j=1 ( ¯ψj − ¯ψ)2 ,W := 1 m m∑ j=1 s2 j , ¯ψj := 1 n n∑ i=1 ψi,j, ¯ψ := 1 m m∑ j=1 ¯ψj, s2 j := 1 n − 1 n∑ i=1 (ψi,j − ¯ψj)2 7
  • 8.
    bayesplot で一望 • bayesplot::mcmc_rhat() 1.001.05 R ^ R ^ ≤ 1.05 R ^ ≤ 1.1 R ^ > 1.1 Figure 2: bayesplot での PSRF のプロット例 8
  • 9.
    自己相関関数 (ACF, コレログラム) •ラグ >2 で急激にゼロに近づくものが好ましい. • bayesplot::mcmc_acf_bar() tau 1234 0 5 10 15 20 0.0 0.5 1.0 0.0 0.5 1.0 0.0 0.5 1.0 0.0 0.5 1.0 Lag Autocorrelation Figure 3: bayesplot での自己相関係数プロット 9
  • 10.
    有効サンプルサイズ ˆneff • 自己相関が強いと分散を正しく推定できない •自己相関を考慮した場合の「実質的なサンプルサイズ」を 推定する • サンプルサイズ (mn) と同じかそれ以上なら問題なし. 最 低でも 5m • あるいは標準誤差 = ˆσ2/ √ 1 + 1/ˆneff の公式から最低ライン を決める ˆneff := mn 1 + 2 ∑2m+1 t=1 ˆρt , ˆρt :=1 − W − m−1 ∑m m=1 ˆρt,m (n − 1)n−1W + n−1B 10
  • 11.
    bayesplot で一望 • bayesplot::mcmc_neff() 00.1 0.25 0.5 0.75 1 1.5 Neff N Neff N ≤ 0.1 Neff N ≤ 0.5 Neff N > 0.5 Figure 4: bayesplot での有効サンプルサイズのプロット例 11
  • 12.
    bayesplot パッケージ • mcmc_*()シリーズの関数でサンプル診断用グラフ作成 • rstan のビルトイン関数より充実している • ggplot オブジェクトと同じように扱える • ggplot2 と同様の方法でデザインを変更できる • サンプルを 3 次元配列で入力する • BUGS, JAGS などにも対応 • rstan なら as.array() だけで OK • 今回のソースコードは以下に • https://gist.github.com/Gedevan-Aleksizde/ 88cc7c3518128471d67e99dbc98bac1c 12
  • 13.
    ケーススタディ: ˆR の値が大きい •試行回数 iters を増やす. • モデルの設定が悪いと増やしても改善しない (figure 5) • 事前分布で制約, または再パラメータ化 (reparameterize) b a 0 200 400 600 800 1000 0 200 400 600 800 1000 -5000 0 5000 10000 -10000 -5000 0 5000 Chain 1 2 3 4 mu[2] mu[1] 0 200 400 600 800 1000 0 200 400 600 800 1000 -1 0 1 -1 0 1 Chain 1 2 Figure 5: パラメータが一意に定まらないモデルの例 13
  • 14.
    ˆneff の値が小さい • ˆRが改善すれば ˆneff も改善するので, ˆR を優先 • stan 以外だと受容率など見る必要あり mu[1] mu[2] 12 0 5 10 15 20 0 5 10 15 20 0.0 0.5 1.0 0.0 0.5 1.0 Lag Autocorrelation Figure 6: 自己相関の大きい例 14
  • 15.
    まとめ 1. かならず初期値の異なる複数系列で実行する (stanならデ フォルト設定). 2. ˆR の値を確認する. 3. トレースプロットの形状を確認する. ˆR の値が 1 に近くと も不自然な形状なら原因を調べる. 4. ˆneff を確認する. 値が小さければ試行回数を増やす. 15
  • 16.
    参考文献 i Brooks, StephenP and Andrew Gelman (1998) “General Methods for Monitoring Convergence of Iterative Simulations,” Journal of computational and graphical statistics, Vol. 7, No. 4, pp. 434-455, December, DOI: 10.2307/1390675. Gelman, A., J. B. Carlin, H. S. Stern, D. B. Dunson, A. Vehtari, and D. B Rubin (2013) Bayesian Data Analysis: CRC Press, 3rd edition. Gelman, Andrew and Donald B. Rubin (1992) “Inference from Iterative Simulation Using Multiple Sequences,” Statistical Science, Vol. 7, No. 4, pp. 457-472, November, DOI: 10.1214/ss/1177011136. 16
  • 17.
    参考文献 ii Neugebauer, Roman(2018) Mucha: An Illustrated Life, Praha: Vitalis Verlag Gmbh. 伊庭幸人・種村正美・大森裕浩・和合肇・佐藤整尚・高橋明彦 (2005)『統計科学のフロンティア 12 計算統計 II』,岩波書店. 奥村晴彦・瓜生真也・牧山幸史 (2018) 『R で楽しむベイズ統 計入門』,Data Science Library シリーズ,技術評論社. 岩波データサイエンス刊行委員会(編)(2015) 『岩波データサ イエンス』,第 1 巻,岩波書店,第 1 版. 松浦健太郎 (2016) 『Stan と R でベイズ統計モデリング』,共 立出版. 17