从文件rjags中读取数据

时间:2017-04-02 13:22:06

标签: r jags r2winbugs r2jags

我的数据文件如下所示:

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)

}

1 个答案:

答案 0 :(得分:3)

来自JAGS user manual

  

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)
   }
   ...
}