2

パッケージを使用してJAGSを実行し、runjagsカスタマイズされたプロットを作成しようとしています-チェーンの色を変更します(完全なモデルコードは質問にあります https://stats.stackexchange.com/q/62006/5509):

require("runjags")
out2 <- 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))

しかし、プロット パラメーターを変更することは不可能のようです。?runjagsclass では、 次のように記述します。

plot メソッドは、トレースと密度のプロットを作成します (これらは事前にプロットされて runjags オブジェクト内に保存されるため、ラティスまたはプロット関数の通常のオプションは使用できないことに注意してください)。

これは、プロットがrun.jags呼び出しで既に作成されているようです! しかし、それではプロットオプションも変更できないようです。

質問:

  1. チェーンの色など、プロット パラメータを変更するにはどうすればよいですか?

  2. なぜ彼らはrun.jagsすでにプロットを作成するのですか? 通常、適切に設計されたアプリケーションは、ロジック (モデル計算) と出力を分離します。それには特別な理由がありますか?

4

1 に答える 1

4

通常、runjags クラス オブジェクトの最大の要素は、モデルをそのまま続行するために必要なデータと RNG 状態です。これらがクラス内に格納されていない限り、追加の引数を必要とせずに中断したところからこれを続行する方法はありません。ただし、多数の変数を監視した場合、事前に作成されたプロットも非常に大きくなることがあります。このような場合、元の実行に plots=FALSE を指定することで、すべてのプロット (および関連するストレージの問題) を取り除くことができます。 jags() 呼び出し。または、(ご想像のとおり) as.mcmc.list() を使用して、runjags オブジェクトを必要最小限の MCMC リスト オブジェクトに分解することもできます。

あなたの質問に答えるには: 1) 最初に as.mcmc.list() を使用してから、これらのチェーンで必要な特定のプロットを使用します。ストレージの問題を最小限に抑えるために MCMC チェーンを細くした)、印刷に必要な時間が短縮され、通常はすぐに確認したい収束診断プロットが簡単に手元にあるようになりました。これらは、(ヘルプ ファイルに記載されているように) 収束診断以外に使用することを意図したものではありません。プロットを格納するコードは非常に古く、おそらく時代遅れであるため、将来的には (既存の S3 メソッドを使用して) オンザフライでプロットを生成する別の方法を検討する可能性がありますが、常に速度とストレージの妥協点になります。私の目的では、ほとんどの場合、速度が優先されます (私はせっかちです)。

于 2014-02-18T16:35:26.540 に答える