はじめに 今までなんとなくStanなどを使ってMCMCをやっていた。 ギブスサンプリングぐらいなら昔勉強したけど、ハミルトニアンモンテカルロや、ましてやNUTSなどは何をやっているのかあまり理解していなかった。 基礎からのベイズ統計学という本を読んで、ハミルトニアンモンテカルロまではなんとなくわかったので、プログラムを書いて理解する。 NUTSはまだわかってないので、 独立MH ランダムウォークMH ハミルトニアンモンテカルロ を実装する。 理論は他の方のブログや本を参考にしてほしい。 自分の理解で適当に書いているので、間違ってたらごめんなさい。 データ なんでもいいけど、平均3標準偏差1の1次元の正規分布に従うデータから、その平均と分散を推定することにする。 import numpy as np from numpy import random from copy import deep
