我已经建立了我的JAGS函数,但无法利用先前的数据使拟合的模型工作。如果有人知道这个错误意味着什么,我已经在下面添加了所有的步骤。我想这与我如何传递我的新数据有关,但不确定的是,任何指针都是非常感激的。
#1. set up the JAGs function
jags.mod = function(){
#Observation model
for (i in 2:N) {
Ohio[i] ~ dnorm(Y[i],tau.v)
}
Ohio[1] ~ dnorm(Y[1],tau.v)
tau.v ~ dgamma(1,0.01)
#System model
for(i in 2:N){
Y[i] ~ dnorm(Y[i-1],tau.w)
}
Y[1] ~ dnorm(6,0.001)
tau.w ~ dgamma(1,0.01)
sigma.w = 1/sqrt(tau.w)
}#2.将数据#定义为JAGS需要jags.data = as.list(Ohio_pm25)的列表
#parameters we want to monitor
jags.param = c('Y', 'tau.w', 'sigma.w')
#specify initial values for 2 chains
inits1 = list('Y' = -5, 'tau.w' = 10)
inits2 = list('Y' = 5, 'tau.w' = -10)
jags.inits = list(inits1, inits2)
#3. fitting the JAGS model
jags.mod.fit = jags(data = jags.data, #jags.data is ohio_PM2.5
inits = jags.inits,
parameters.to.save = jags.param,
n.chains = 2,
n.iter = 100000,
n.burnin = 5000,
n.thin = 1,
model.file = jags.mod,
DIC = FALSE)数据片段;
ohio_data
X Obs Exp SMR
1 1 14 15.678357 0.8929507
2 2 56 62.786481 0.8919117
3 3 26 26.953383 0.9646284
4 4 57 59.448398 0.9588147
5 5 21 25.710943 0.8167728
6 6 22 24.764319 0.8883749
7 7 67 52.437394 1.2777141
8 8 18 19.082278 0.9432836ohio_pm2.5
Ohio_pm25
Date pm2.5
1 1988-01-01 3.100000
2 1988-01-02 3.000000
3 1988-01-03 8.600000
4 1988-01-04 8.866667
5 1988-01-05 2.800000
6 1988-01-06 3.400000
7 1988-01-07 4.600000
8 1988-01-08 3.900000发布于 2022-09-06 13:02:04
我在您的代码中看到了两个问题:
您的数据需要是一个列表,并且数据的名称必须与(“俄亥俄”)中的名称相同。此外,它必须具有与jags相同的维度。当您选择Ohioi时,它应该是一维的。因此,我想,您的数据必须如下所示:
jags.data <- list(Ohio = ohio_pm2.5$pm2.5)我不得不承认,我不明白ohio_data如何适合你的问题。
https://stackoverflow.com/questions/73183118
复制相似问题