The One with ...

思いついたことや作業メモなどを公開しています

StanからWAICを計算するためのメモ

StanからWAICを計算するためのメモ

豊田本(2017)を参考に,Stanの結果からWAICを計算する方法のメモ.

テキスト198ページ記載のコードは略記のため,そのまま書き写して実行してもStanが動きません*1. 公開されたコードを参考に確率分布のパラメータを適切なブロックで定義すれば,Stanが動きます.

まずStanコード内でモデルの対数尤度を生成量(generated quantities)として定義します.

次にR上でlooパッケージを使って,Stanのサンプリング結果から対数尤度を取り出し,waic関数にわたします*2

それぞれのコードはこんな感じです(ポイントだけ省略して書いています.実際にはデータブロックやパラメータブロックを書かなくてはいけません).

上記のGitHub Gistからの埋め込みは,Gist上で「Embed」をクリップボードにコピーしたものを ブログのソースに張り付けるだけで完了します.

*1:モデルブロック内で宣言したパラメータが存在しないというエラーメッセージがでます.JAGSならこれでも行ける気がしますが

*2:内部的に対数尤度の総和はtargetに自動記録されるけど,平均計算用に対数尤度をベクトルで記録する必要がある,という理解でいいのだろうか?