1

すべてのプロットを含む runjags オブジェクトが大きすぎるため、 を使用して、結果のオブジェクトをファイルに保存し、新しい R セッションで (as として) 復元してから、プロットを生成しようとしrun.jagsましたplot=FALSErunjagsout

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 オブジェクト内ではありません)。

4

1 に答える 1