SlideShare a Scribd company logo
1 of 17
Download to read offline
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

More Related Content

What's hot

階層ベイズと自由エネルギー
階層ベイズと自由エネルギー階層ベイズと自由エネルギー
階層ベイズと自由エネルギーHiroshi Shimizu
 
15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学Ken'ichi Matsui
 
StanとRでベイズ統計モデリング読書会Ch.9
StanとRでベイズ統計モデリング読書会Ch.9StanとRでベイズ統計モデリング読書会Ch.9
StanとRでベイズ統計モデリング読書会Ch.9考司 小杉
 
Rパッケージ“KFAS”を使った時系列データの解析方法
Rパッケージ“KFAS”を使った時系列データの解析方法Rパッケージ“KFAS”を使った時系列データの解析方法
Rパッケージ“KFAS”を使った時系列データの解析方法Hiroki Itô
 
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章Shushi Namba
 
ベイズファクターとモデル選択
ベイズファクターとモデル選択ベイズファクターとモデル選択
ベイズファクターとモデル選択kazutantan
 
MCMCによるベイズ因子分析法について
MCMCによるベイズ因子分析法についてMCMCによるベイズ因子分析法について
MCMCによるベイズ因子分析法について考司 小杉
 
馬に蹴られるモデリング
馬に蹴られるモデリング馬に蹴られるモデリング
馬に蹴られるモデリングShushi Namba
 
負の二項分布について
負の二項分布について負の二項分布について
負の二項分布についてHiroshi Shimizu
 
あなたの心にBridgeSampling
あなたの心にBridgeSamplingあなたの心にBridgeSampling
あなたの心にBridgeSamplingdaiki hojo
 
RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門Masaki Tsuda
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門Kawamoto_Kazuhiko
 
StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】
StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】
StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】Hiroyuki Muto
 
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータStanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータMiki Katsuragi
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)Yoshitake Takebayashi
 
20180118 一般化線形モデル(glm)
20180118 一般化線形モデル(glm)20180118 一般化線形モデル(glm)
20180118 一般化線形モデル(glm)Masakazu Shinoda
 
MCMCで研究報告
MCMCで研究報告MCMCで研究報告
MCMCで研究報告Masaru Tokuoka
 

What's hot (20)

階層ベイズと自由エネルギー
階層ベイズと自由エネルギー階層ベイズと自由エネルギー
階層ベイズと自由エネルギー
 
15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学15分でわかる(範囲の)ベイズ統計学
15分でわかる(範囲の)ベイズ統計学
 
階層ベイズとWAIC
階層ベイズとWAIC階層ベイズとWAIC
階層ベイズとWAIC
 
2 3.GLMの基礎
2 3.GLMの基礎2 3.GLMの基礎
2 3.GLMの基礎
 
StanとRでベイズ統計モデリング読書会Ch.9
StanとRでベイズ統計モデリング読書会Ch.9StanとRでベイズ統計モデリング読書会Ch.9
StanとRでベイズ統計モデリング読書会Ch.9
 
Rパッケージ“KFAS”を使った時系列データの解析方法
Rパッケージ“KFAS”を使った時系列データの解析方法Rパッケージ“KFAS”を使った時系列データの解析方法
Rパッケージ“KFAS”を使った時系列データの解析方法
 
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
 
ベイズファクターとモデル選択
ベイズファクターとモデル選択ベイズファクターとモデル選択
ベイズファクターとモデル選択
 
MCMCによるベイズ因子分析法について
MCMCによるベイズ因子分析法についてMCMCによるベイズ因子分析法について
MCMCによるベイズ因子分析法について
 
馬に蹴られるモデリング
馬に蹴られるモデリング馬に蹴られるモデリング
馬に蹴られるモデリング
 
負の二項分布について
負の二項分布について負の二項分布について
負の二項分布について
 
あなたの心にBridgeSampling
あなたの心にBridgeSamplingあなたの心にBridgeSampling
あなたの心にBridgeSampling
 
RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
 
StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】
StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】
StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】
 
RとStanで分散分析
RとStanで分散分析RとStanで分散分析
RとStanで分散分析
 
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータStanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータ
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
 
20180118 一般化線形モデル(glm)
20180118 一般化線形モデル(glm)20180118 一般化線形モデル(glm)
20180118 一般化線形モデル(glm)
 
MCMCで研究報告
MCMCで研究報告MCMCで研究報告
MCMCで研究報告
 

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

  • 1. bayesplot を使ったモンテカルロ法の実用ガイド Practical Guide of 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
  • 6. トレースプロット • サンプル列を時系列に沿ってプロット •「毛虫」みたいな形状になると良い −10 0 10 20 30 0 500 1000 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.00 1.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() 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
  • 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, 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
  • 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