0

我很难找到这方面的教程/示例,所以想问:我有一个变量 Xi 被测量了 i 次,我想表明,随着每次额外的测量,X 分布的预测变得更加紧密。当然,我可以继续以 1:2 1:3 1:4 等重新运行模型。但这很乏味。我希望有一些我不知道的逐步编码。

#----------------------------------------------------------------------
#THE JAGS MODEL FOR X.
#----------------------------------------------------------------------
modelstring="
model {
#prior
#------------------------------------------------------------------------------

mu_x ~ dnorm(0,1E-12)

sd ~ dunif(0,50)
tau <- sd*sd
prec_x <- 1/tau

#LIKELIHOOD
#------------------------------------------------------------------------------
for (i in 1:total) {
x[i] ~ dnorm(mu_x,prec_x)
}
pred.x ~ dnorm(mu_x,prec_x)
}
"

任何人都知道一种方法来指定模型以根据当时可用的数据在每个时间点估计 pred.x 吗?

4

2 回答 2

0

克里斯,你的回答很好。我只是想发布我的代码以供参考:

我首先为 Xi 设置了一个矩阵,其中 i 是测量次数

set up data into matrix:
xmat<-matrix(nrow=#,ncol=#)
for (j in 1:#) {
 for (i in 1:j) {
  xmat[i,j] <- x[i]
 }
}
DataList = list( #create datalist for JAGS
  x=xmat
)
#JAGS MODEL
model {
#LIKELIHOOD
for (j in 1:#) {
  for (i in 1:j) {
    x[i,j]       ~ dnorm(mu_x[j],prec_x[j])
  }
pred.x[j]    ~ dnorm(mu_x[j],prec_x[j])

#prior
sd[j] ~ dunif(0,50)
tau[j] <- sd[j]*sd[j]
prec_ic[j] <- 1/tau[j]
mu_x[j]  ~ dnorm(0,1E-12)
 }
}
于 2013-08-15T21:18:34.560 回答
0

要使用单个模型文件执行此操作,您必须为每个预测使用不同的 mu_x 和 prec_x,因为如果它们基于较少的数据,它们将具有不同的(更分散的)后验分布。因此,将整个事物包装在 j 上的循环中,使用类似的东西

for (i in 1:j) { 
  x[i,j] ~ dnorm(mu_x[j],prec_x[j]) 

并将 j 下标放在其他所有内容上。最后,您必须提供 x 作为原始 x 的复制矩阵。您可以使用 data{ } 块来促进这一点(请参阅手册的第 7.0.4 节)。

于 2013-08-15T09:17:29.960 回答