r - rjags 中每个链的每个参数使用的初始值是否相同?我正在使用 coda.samples 进行采样
问题描述
我有几个参数,不希望手动指定 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
推荐阅读
- javascript - 如何调试 Node + Socket.io CPU 问题,除了连接 100% cpu 什么都不做
- python - Bot 获取并回复关于 Twitter 问题的提及
- sql - Postgres SQL函数和触发器在另一个表中插入记录
- deepsecurity - 使用 API 将激活码放入趋势科技服务器深度安全防护系统管理中心 - 500 错误代码
- sql - sql 中的 case 表达式以在用户提示的情况下打印所需的文本
- javascript - 带有条件的 React 按钮组件不起作用并显示
- architecture - 领域驱动设计共享实体
- php - 您可以将多个 Oracle SQL 查询的结果放入一个 CSV 文件中吗?
- c# - 如何使用 ApiKey 授权进行简单的 Get?
- swagger - 如何使用 Swagger Codegen 为 Java 7 生成 JAX-RS (RESTEasy) 服务器?