ベイジアンクリギングのつづきのつづき


ベイジアンクリギングのつづきのつづき
 
 とりあえず、昨日回していた計算は無事終わっていました。初期値も相当適当だったのに・・・
 学会の時は、trapの呪いにかかり、相当あくどいこともやったものですが、びっくりするくらいサクッと終了。ま、前やったのは、パラメータも結構多かったんですけど、今回はそんなにパラメータもないので、あまり迷うこともなかったのでしょう。

 収束判定やらなんやらは、とりあえず置いといて、glm()なアプローチ、つまり空間的自己相関を無視したやつと比べてみる。
 こっちは簡単でこんな感じ。

  res <- glm(deer~elv,family=poisson)
  res
 

 まずは、ベイジアンクリギングのsummary()

     2.5% 25% 50% 75% 97.5%
alpha  1.174e-01 0.837025 1.160e+00 1.583e+00 2.457e+00
beta  -2.256e-03 -0.001132 -4.664e-04 1.622e-04 9.949e-04
tau   1.389e-01 0.185900 2.175e-01 2.471e-01 3.144e-01
phi   5.943e-01 5.192250 1.049e+01 1.523e+01 1.956e+01
sigma 3.181e+00 4.047250 4.596e+00 5.380e+00 7.200e+00

 次はglmオブジェクト

Coefficients:
(Intercept) elv
2.9423393 -0.0009634

 ベイズジアンクリギングバージョンでパラメータが下がってるのは、空間的自己相関で説明してしまう分があるということなんでしょう。
 
 じゃあ、どっちがいいモデルなの?ってなると・・・
 気持ちとしては、何かしらの情報量基準でサクッと出したいとこではありますが、多分駄目な気がする。

 なら、交差確認法で、となるんですけどglm()あたりは、サクッと組めそうな気がしますが、MCMC計算入ってくるとそうはいかないわけで。
 なぜなら、R2winbugsでwinbugsはブートできるんでけど、終わらせることは多分できんのです。
 ということは、MCMC計算終わったとしたら、また手動でR2winbugsを実行させないといけなくなるという、wヘwロwツwワwカwシな状態になるはず。

 対策として考えられるのは、winbugsがマルチスレッドに対応していないというのと複数起動が可能なことを利用して並列処理させるという方法。(ODさんはそうしているそうな)
 ただ、これもクアッドコアとか、オクタコアとかレベルのCPUで旨味が出る話で、デュオクラスだとちとお話しにならない。

 ギークな方法としては、クラスターPCでやるという方法もあるみたいですけど(L. Tierney氏のsnowパッケージでクラスタ計算を行う – RjpWiki参照のこと)、これは個人的な力量不足と、職場のマシンをそういう使い方すると怒られそう、というので無理。

 てことで、可能性としてはチコチコMCMCさせては終了させ、実行、というプログラミングする人が最も嫌うルーチンな仕事をさせないといけなくなりそう。
 む~試行回数を何回にするかという問題はあれ、これは相当面倒くさい。

 なんか良い方法があるんだろうか。は~攻殻機動隊のデカトンケイルが欲しい・・・