Rejection sampling と MCMC
Rejection sampling ってこんなに効率悪かったかなあ。正規 + 正規の簡単なモデルなんだけどなあ。非線形だけれどもさ。
これを、Metropolis-Hastings や HMC なんかの MCMC にしても、収束は遅いのかもしれない。
チューニングしなさいってことです。それを半ば自動でやってくれるのが BUGS や Stan のよいところ。お任せしてもなんとかなる。
でも、特に、Stan のデータ構造の要請にどうしてもなじめない。自分が作りたいデータをどうしても受け付けてくれないのだから腹が立つ。
これって、相性なんだろうか。
ソフト制作者の考えと私の趣味とが一致しない。
その点、rejection sampling は楽です。何が楽か、sampling する本体のプログラミングが楽。問題(モデル)ごとの計算が楽、つまり、都度都度のチューニングの余地がない、という意味で楽。ただし、proposal 分布を考えるという大きなハードルはある。
一方で、MCMC は sampler 本体のプログラミングはちょっと面倒です。下手くそに書くと遅いから、工夫のしがいがあるともいえる。しかし、モデルごとのプログラミングはとても楽。だから、一度プログラムを書いてしまえば、問題が変わっても簡単に対応できる。ただし、チューニングは都度都度必要。
チューニングパラメータを変えると採択率がコロコロ変わるのがおもしろい。