すべてのプロットを含む runjags オブジェクトが大きすぎるため、 を使用して、結果のオブジェクトをファイルに保存し、新しい R セッションで (as として) 復元してから、プロットを生成しようとしrun.jags
ましたplot=FALSE
runjags
out
out.with_summaries <- extend.jags(out, sample = 0, adapt = 0)
(このトリックについては、こちらのディスカッションを参照してください: https://stackoverflow.com/a/21859618/684229 )
ただし、理由は不明ですが、これはモデルを再コンパイルして再度適応させます! を設定してもsample = 0, adapt = 0
!
require(runjags)
t1 <- proc.time()
out.sum <- extend.jags(out, sample = 0, adapt = 0)
# Re-compiling rjags model and adapting...
# Calculating the Gelman-Rubin statistic for 4 variables....
# Convergence may have failed for this run for 4 parameters after 500
# iterations (multi-variate psrf = 214.873)
# Finished running the simulation
t2 <- proc.time()
print(t2 - t1)
# user system elapsed
# 345.67 0.08 352.30
グラフをプロットするだけでもかなり時間がかかり、かなり面倒です。プロットを使用して runjags オブジェクトを計算し、それらを削除して runjags オブジェクトを小さく保存しようとすると、同じことが起こります。
t1 <- proc.time()
out.no_sum <- extend.jags(out.sum, sample = 0, adapt = 0, summarise=FALSE, plot=FALSE)
# Loading required package: rjags
# Loading required package: coda
# Loading required package: lattice
# Linked to JAGS 3.3.0
# Loaded modules: basemod,bugs
# Re-compiling rjags model and adapting...
# Finished running the simulation
t2 <- proc.time()
print(t2 - t1)
# user system elapsed
# 327.53 0.05 329.73
この問題を修正する方法に関するヒントはありますか (独自のプロット関数を作成することは別として)?
警告:extend.jags
同じ runjags オブジェクトで関数を2 回実行すると、すでに高速です。しかし、runjags オブジェクトを保存して新しいセッションで再度ロードすると、再びextend.jags
遅くなります。または JAGS が何かをキャッシュしているようrunjags
です (ただし、元の runjags オブジェクト内ではありません)。