0

我的数据文件如下所示:

list(y=structure(.Data=c(26, 228, 31, ...)), .Dim=c(413,9))

假设这个文件被保存为“data.txt”。

如果我在“R2OpenBUGS”中工作,它可以让我毫无问题地将数据作为文件传递:

mcmc <- bugs(data = "data.txt", inits=...)

但是在 JAGS 中,如果我将数据作为“data.txt”传递,它会说:“数据必须是列表或环境”。这里有什么问题?另外,如果没有办法解决它,有没有办法可以将数据作为 R 中的列表读取?

我的模型是:

model {
for (i in 1:413) {
    for (j in 1:9) {
        logy[i,j] <- log(y[i,j])
        logy[i,j] ~ dnorm(m[i], s)
    }
}

# priors
for (i in 1:413) {
    m[i] ~ dgamma(0.001, 0.001)
}

s ~ dgamma(0.001, 0.001)

}
4

1 回答 1

3

来自JAGS 用户手册

7.0.4 数据转换

JAGS 允许数据转换,但语法与 BUGS 不同。BUGS 允许您在关系的左侧放置一个随机节点两次,如本示例取自手册

for (i in 1:N) {
   z[i] <- sqrt(y[i])
   z[i] ~ dnorm(mu, tau)
}

这在 JAGS 中是被禁止的。您必须将数据转换放在关键字前面的单独关系块中data

data {
   for (i in 1:N) {
     z[i] <- sqrt(y[i])
   }
}
model {
   for (i in 1:N) {
      z[i] ~ dnorm(mu, tau)
   }
   ...
}
于 2017-04-02T13:53:15.263 回答