如何解决为什么在JAGS中节点值始终不可用?
我是JAGS的新手,但是在搜索后,我还没有找到解决方案或对此行为的解释。基本上,根据我是否(和在哪里)将0
值传递给多项式分布,可能会丢失该分布的预测。我已尽可能简化了这一过程。这是我要运行的模型:
test.bugs
data{
for(i in 1:2){
N[i] <- sum(counts_known[i,1:6])
}
}
model {
for(i in 1:2){
pi[i,1:6] ~ ddirich(alpha[1:6])
counts_known[i,1:6] ~ dmulti(pi[i,1:6],N[i])
N_unknown[i] ~ dpois(N[i])
counts_unknown[i,N_unknown[i])
# Example of trouble (yes,I could just access N_unknown here but this is a simplified example)
# summation[2] may not exist
summation[i] <- sum(counts_unknown[i,1:6])
}
}
我的问题是,根据我为counts_known
的列传递数据的顺序,输出中可能不存在summation[2]
。
R代码来运行它:
library(rjags)
# This works fine
data <- list(
alpha = rep(1/6,6),counts_known = matrix(c(
2,2,4
),nrow=2,ncol=6,byrow=TRUE)
)
model <- jags.model("test.bugs",data=data,n.chains=1)
summary(coda.samples(model,variable.names=c("summation","counts_unknown"),n.iter=1000))
# Output for counts_unknown and summation exist
# Swap columns 5 and 6 to see problem
data <- list(
alpha = rep(1/6,4,0
),n.iter=1000))
# Output for most of the counts_unknown and summation[1] exist; about a half of the time summation[2] and counts_unknown[2,5:6] are missing
# If you see summation[2] on first try,try running the previous line of code again a few times
根据coda.samples
的帮助页面,我知道在第二个示例中summation[2]
消失的原因是它可以具有NA,默认情况下,它们会在传递时被丢弃,但这只会导致的问题
- 为什么首先要生成NA?
- 两个示例之间有什么不同?导致第一个示例在实际上是相同的数据,只是重新排序后才能正常工作吗?
另外,如果我用coda.samples
运行na.rm=FALSE
并直接查看样本,有时会为那些可疑的列显示NaN
。
感谢您的帮助,我正在运行JAGS 4.3.0。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。