パッケージを使用してR で MCMC を実行していますが、後で別の R セッションで使用するためにrjags
関数の出力を保存したいと考えています。jags.model
正規分布の平均の簡単な例を次に示します。
library(rjags)
N <- 1000
x <- rnorm(N, 0, 5)
model.str <- 'model {for (i in 1:N) {
x[i] ~ dnorm(mu, 5)}
mu ~ dnorm(0, .0001)}'
jags <- jags.model(textConnection(model.str), data = list(x = x, N = N))
update(jags, 1000)
mu
次のようなサンプルを生成できます。
coda.samples(model=jags,n.iter=1,variable.names="mu")
# [[1]]
# Markov Chain Monte Carlo (MCMC) output:
# Start = 2001
# End = 2001
# Thinning interval = 1
# mu
# [1,] 0.2312028
#
# attr(,"class")
# [1] "mcmc.list"
ここで、後で新しい R セッションで使用するためにモデル オブジェクトを保存しjags
て、マルコフ連鎖を再度初期化して焼き付ける必要がないようにします。
save(file="/tmp/jags.Rdata", list="jags")
quit()
ただし、新しい R セッションを開始してモデルをリロードすると、JAGS モデルを再コンパイルする必要があるというエラー メッセージが表示されます。
load("/tmp/jags.Rdata")
coda.samples(model=jags,n.iter=1,variable.names="mu")
# Error in model$iter() : JAGS model must be recompiled
何故ですか?後で使用するためにオブジェクトを Rに保存するにはどうすればよいですか?jags
注:質問は以前に尋ねられましたが、OPは問題についてあまり具体的ではありませんでした。