そうか、だからMCMCなのか

昨日興奮ぎみに書いたところなんですが、積分のところがネックになっていました。Rはなんでもやってくれちゃう人なので、積分でも微分でも基本的にはやってくれたりします。

なんですが、例えば2変数の関数があった時にその内の1変数で積分した結果、それはもちろん積分されてないほうの変数の関数になるわけですが、なんていうのは計算することができません*1。とりあえず僕の調べた範囲では、だけどね。これが自動的にできないと手で事後分布とかをいちいち出さないといけないので、やってられません。なので、これは結構致命的。うーん、こまったなー。

で、何かいい方法はないものかと探していたのですが、そもそも上に書いたようなことはプログラムでやるのは本質的に難しいというような感じでした。がーん。じゃあ、ベイズだめじゃん!!ということになってしまうんですが、そうではないらしい。MCMC(マルコフ連鎖モンテカルロ)という方法があるとのこと。全然分かってないんだけど分かった風に書くと、シミュレーションをやって、分布をゴリゴリ計算して、それから統計的に事後分布とか事前分布とか計算してくれるらしい。素晴しい!!!

で、MCMCに辿りついたわけですが、そういえばゼミで読んでいる本の3章がMCMCであることに気がついたのはしばらくしてからでしたwww。まあ、MCMCを勉強するモチベーションになるから、(自分で作るのが)失敗したのはある意味よかったのかなーとか方向転換してます。

*1:xとyの関数があったときにxで積分してyの関数として返して欲しいんだけど、それができないというようなこと