rjags 中每个链的每个参数使用的初始值是否相同?我正在使用 coda.samples 进行采样

Are the initial values used for each parameter the same for each chain in rjags? I am using coda.samples for sampling

我有几个参数,不想手动指定 n=3 个链的初始值。我想知道 RJAGS 是否会为每个链提供不同的初始值。 JAGS 的 manual 表示每个链使用相同的初始值,但是当我尝试在没有任何调整的情况下获取一些样本时,初始值似乎不同。谢谢

如果您不提供初始值,jags.model() 似乎将使用相同的初始值。由于 MCMC 采样中固有的随机性,样本将彼此不同,因此这并不表示使用了不同的初始值。您可以使用 state() 函数查看初始化后模型的状态,这将给出所有初始值。这是一个简单的例子。当我们不为 mu 提供初始值时,它们都是 0。

jd <- list(x = runif(100))
jm <- "
model{
for(i in 1:100){
 x[i] ~ dnorm(mu, 1)
}
mu ~ dnorm(0,3)
}
"
cat(jm, file="tmp.mod")
jm <- jags.model("tmp.mod", data=jd, n.chains=2)
jm$state()
# [[1]]
# [[1]]$mu
# [1] 0
# 
# 
# [[2]]
# [[2]]$mu
# [1] 0

当我们提供初始值时,state() 函数会识别它们实际上就是我们提供的值。

jm2 <- jags.model("tmp.mod", 
                 data=jd, 
                 n.chains=2, 
                 inits = list(list(mu=2), list(mu=-2)))

jm2$state()
# [[1]]
# [[1]]$mu
# [1] 2
# 
# 
# [[2]]
# [[2]]$mu
# [1] -2