車輪を発明する

ファーマコメトリクス・モデリング研究所

Rejection sampling と MCMC

Rejection sampling ってこんなに効率悪かったかなあ。正規 + 正規の簡単なモデルなんだけどなあ。非線形だけれどもさ。

これを、Metropolis-Hastings や HMC なんかの MCMC にしても、収束は遅いのかもしれない。

チューニングしなさいってことです。それを半ば自動でやってくれるのが BUGS や Stan のよいところ。お任せしてもなんとかなる。

でも、特に、Stan のデータ構造の要請にどうしてもなじめない。自分が作りたいデータをどうしても受け付けてくれないのだから腹が立つ。
これって、相性なんだろうか。
ソフト制作者の考えと私の趣味とが一致しない。

その点、rejection sampling は楽です。何が楽か、sampling する本体のプログラミングが楽。問題(モデル)ごとの計算が楽、つまり、都度都度のチューニングの余地がない、という意味で楽。ただし、proposal 分布を考えるという大きなハードルはある。

一方で、MCMC は sampler 本体のプログラミングはちょっと面倒です。下手くそに書くと遅いから、工夫のしがいがあるともいえる。しかし、モデルごとのプログラミングはとても楽。だから、一度プログラムを書いてしまえば、問題が変わっても簡単に対応できる。ただし、チューニングは都度都度必要。
チューニングパラメータを変えると採択率がコロコロ変わるのがおもしろい。