3

R2jags にはバグがあるため、新しいパッケージrunjagsを使用して JAGS を実行しようとしています(完全なモデル コードは質問https://stats.stackexchange.com/q/62006/5509にあります)。

require("runjags")
out <- run.jags("Poisson.OD.t.test.txt", params, win.data, nc, inits,
      nb*4/5, ni, nb*1/5)
plot(out2, layout = c(4, 2))

それは魅力として機能しますが、このパッケージの欠点はrunjags、関数によって返されるオブジェクトがrun.jags、準備されたチャートと出力に既にバンドルされており、大きすぎることです。比較のために、対応する .Rdata ファイルのサイズ (2 つのチェーン、それぞれ 500 回の保存された反復、合計 1000 回の反復):

  • runjagsオブジェクト - 1.2 MB
  • R2jagsオブジェクト - 212 kB
  • mcmc.listオブジェクト - 33 kB

オブジェクトは巨大ですが、後でモデルのインターフェイスrunjagsを使用できるように保存する必要があります。runjags

この問題の回避策はありますか?

4

1 に答える 1

4

クラスのオブジェクトはrunjags、中断したところからシミュレーションを続行するために必要なすべての情報 (モデル/データ/RNG 状態) を格納するため、非常に大きくなります。必要なのが MCMC チェーンだけである場合は、次を使用してこれのほとんどを取り除くことができます。

as.mcmc.list(yourrunjagsobject)

...または rjags パッケージで直接使用できるものに変換するには:

as.jags(yourrunjagsobject)

こちらもご覧ください?runjagsclass

または、印刷/要約関連のストレージの問題があり、モデル/データ/RNG の状態を保持したい場合は、 と を試しsummarise=FALSEplot=FALSEくださいrun.jags()。これにより、最初の関数呼び出し中にこれらの事前生成/ストレージが防止されます。

クラスオブジェクトをハックして、私が推測する大きなコンポーネントを取り除くこともできますが、提供されている変換メソッドを使用する方がはるかに優れています...

于 2014-02-18T16:25:55.290 に答える