0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WinBUGSによるMCMC資料を、R(rJAGS, rstan)で自習するときに注意すべきメモ

Last updated at Posted at 2020-06-03

MCMCすることが多いですよね? 参考書や記事には、歴史があるWinBUGSの資料を見かけることも多いハズ。
それをJAGSやSTANで試してみたりすることが多々あると思います。

その時、推定がうまくいかない・・・など問題に直面すると、①モデルの書き方が悪いのか? ②コマンドの与え方が悪いのか?など迷うときが(私は)多々ありました。
それ以外にも③「データ表記法」がBUGS言語とR、Python等で異なることがあります。

これについて調べた結果のメモです。

結論

http://www.openbugs.net/Manuals/ModelSpecification.html#ArraysAndIndexing
に記載がある「Arrays and indexing」を理解すればOKでした。

OpenBUGS reads data into an array by filling the right-most index first, 
whereas the R/S-Plus program fills the left-most index first. 

二次元の場合

  1. 参考書のデータを教科書のまま入力
  2. matrixにしてdputするなどして.Dim=c(3,2)ならc(2,3)する
  3. t()で転置行列にする。

ダメダメなケースは、1,3で転置だけすケース。インデックスが崩れるから、データが教科書と異なることになる。すなわち、①、②が正しくとも絶対に整合しない。

三次元の場合

 .Dim=c(4,2,3) to .Dim=c(3,2,4)

なぜ気がついたか?

Agresiti先生の多名義尺度のロジスティック回帰( Modeling for multinomial Resonse)のワニの食餌データ。

"Alligators: multinomial - logistic"として古くから有名なモデル?らしいが、大先生Agresiti本の例題とはデータが異なる。

WinBUGSの「サンプルコードをコピペしたらなんとかなる」的なノリで試すと結果が異なるり、大怪我。
JAGS実装の例題があるので確認すると、結果はWinBUGSと整合している。

モデルは共通だから、データ配列の順序を疑う。よく見ると違っていた。
(モデルやキックするコードばかり見ていてデータを見ていなかった)

感想

JAGSやSTANを使いこなすには、「単にソフトウエアを使えるだけではなく、行列でモデルを表現できる」ことが必須と最近感じております。勉強せねば。

以上、2020年の在宅業務中にφ(..)メモメモ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?