R中的贝叶斯分析:第19行的编译错误



我正在处理一个包含234行4个变量的数据帧:鱼类年龄、汞浓度(Hg(、离口距离和站点#。我正试图进行多元线性回归,看看年龄和离口距离如何影响鱼类的汞浓度。当我在R中运行代码时,我会收到错误消息:

jags.model中的错误(file=model.file,data=data,inits=inits,n.chains=n.chains,:
RUNTIME错误:
第19行出现编译错误。
索引超出范围,占用pred.x2 的子集

非常感谢您的帮助,我的代码如下。

library(jagsUI)
#library(coda)
##### READ AND PREPARE DATA #####
dat = read.csv("Exercise_1_3_data-1.csv")
#plot the data
plot(Hg ~ Age, data = dat)
plot(Hg ~ Dist, data = dat)

# x1=Age
# x2=Dist
# compile data into a list to pass to BUGS
pred.x1 = seq(1, 10, 0.5) # predicted x1 values
pred.x2 = seq(0, 90, 10) # predicted x2 values
jags.dat = list(n.obs = nrow(dat), y = dat$Hg, x1 = dat$Age, x2 = dat$Dist, 
pred.x1 = pred.x1, pred.x2 = pred.x2, n.pred=length(pred.x1))
##### SPECIFY MODEL CODE #####
cat(file="model.txt", "
model {
# PRIORS
b0 ~ dnorm(0,1E-6)
b1 ~ dnorm(0, 1E-6)
b2 ~ dnorm(0, 1E-6)
sig ~ dunif(0,100)
tau <- 1/pow(sig, 2)
# LIKELIHOOD
for(i in 1:n.obs){
y[i] ~ dnorm(y.hat[i], tau)
y.hat[i] <- b0 + b1 * x1[i] + b2 * x2[i]
}
#DERIVED QUANTITIES
for(i in 1:n.pred){
pred.y[i] <- b0 + b1 * pred.x1[i] + b2 * pred.x2[i]
}
}
")

##### INITIAL VALUES #####
inits1 = list(b0 = rnorm(1), b1 = rnorm(1), b2 = rnorm(1), sig = rlnorm(1))
inits2 = list(b0 = rnorm(1), b1 = rnorm(1), b2 = rnorm(1), sig = rlnorm(1))
inits = list(inits1, inits2)
##### PARAMETERS TO MONITOR #####
params = c("b0", "b1", "b2", "sig", "pred.y")
##### MCMC DIMENSIONS #####
ni = 5000
nb = 1000
nt = 1
nc = 2
##### RUN THE MODEL IN jags #####
# should take about 10 seconds
starttime = Sys.time()
jags.fit =  jags(data = jags.dat, inits = inits, parameters.to.save = params, model.file = "model.txt", 
n.thin = nt, n.chains = nc, n.burnin = nb, n.iter = ni, parallel = F)

我既不熟悉JAGS,也不熟悉那个包,但我可以看到length(pred.x1) == 19length(pred.x2)== 10,这可能解释了为什么pred.x2[i]1:length(pred.x1)中与i越界。

相关内容

最新更新