butch’s blog

メモ置き場。

【ゼロからできるMCMC】練習問題4.3(ステップ幅をサイコロで決めるMCMC)【Chapter 4】

ゼロからできるMCMCの練習問題4.3について考えます。
練習問題4.2ではステップの偶数番目と奇数番目でステップの幅$\Delta x$を変更していましたが、練習問題4.3ではステップごとにサイコロを転がしてステップ幅を決めて更新します。
今回シミュレートする分布は以下の分布になります。


P(x) = \frac{1}{6\sqrt{2\pi}}\biggl(e^{-\frac{x^2}{2}} + e^{-\frac{(x-10)^2}{2}} + e^{-\frac{(x-20)^2}{2}} + e^{-\frac{(x-30)^2}{2}} + e^{-\frac{(x-50)^2}{2}} + e^{-\frac{(x-100)^2}{2}} \biggr)

6個の山を持つ分布を用意してみました。
ステップ幅は$|\Delta x| = (1, 10, 20, 30, 50, 100)$の6通りを用意してステップごとにサイコロを転がして変化させます。

コードは以下のgithubリポリトリに登録しました。

github.com

計算結果は以下のようになります。

f:id:butch416:20200810223154j:plain
練習問題4.3

MCMCの結果が解析解と一致していることが分かります。