简单 JAGS 模型中的编译错误

Compilation Error in simple JAGS model

我已经阅读了关于该主题的其他问题,但这些问题的所有模型都比我的复杂得多,并且无法帮助我找到答案(对 JAGS 来说非常新)。

当我运行以下内容时:

x <- c(1,0,4,1,4,2,5,3,0,3,1,2,2,4,1)
Data <- as.list(x=x, nx=length(x))

model <- function() {
## Likelihood
for (i in 1:nx) {
x[i] ~ dpois(mu[i])
}
## Prior
mu[i] ~ dexp(1)
}
fit <- jags(Data, param=c("mu"), model=model, n.chains=1, n.iter=10000,   
n.burn=0, n.thin=1, DIC=FALSE) 

我收到错误: jags.model(model.file, data = data, inits = init.values, n.chains = n.chains, 错误: 运行时错误: 第 3 行编译错误。 无法评估计数器 i

的上索引

其他解决方案提到了不应该在循环中的东西在循环中,但我认为我的循环没有任何问题?我不确定。谢谢!

我认为您的问题是数据列表的格式不正确。与其使用 as.list,不如使用 list()。另外,就像提到的 jbaums 一样,您需要在循环内移动 mu[i] 。试试这个:

x <- c(1,0,4,1,4,2,5,3,0,3,1,2,2,4,1)
Data <- list(x=x, nx=length(x))

model <- function() {
  ## Likelihood
  for (i in 1:nx) {
    x[i] ~ dpois(mu[i])
    ## Prior
    mu[i] ~ dexp(1)
  }

}
fit <- jags(Data, param=c("mu"), model=model, n.chains=1, n.iter=10000,   
            n.burn=0, n.thin=1, DIC=FALSE)