r语言 - 每个参数的初始值在rjags中的每个链中是否相同?我在用结尾.用于抽样的样本



我有几个参数,不希望手动指定n=3个链的初始值。我想知道RJAGS是否会给每条链不同的初始值。JAGS手册说,相同的初始值用于每条链,但当我试图得到一些样品没有任何适应的初始值似乎是不同的。谢谢。

如果您不提供它们,看起来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

相关内容

  • 没有找到相关文章

最新更新