我正在运行rjags的逻辑模型,但错误总是发生(见下文),我觉得我的代码包含所需的一切,并且它们是合乎逻辑的,所以到目前为止我无法检测到代码中的错误。这是错误
Error in jags.model(textConnection(modelstring2), data = list(ro = ro$ro, :
RUNTIME ERROR:
Compilation error on line 22.
Unknown variable i
Either supply values for this variable with the data
or define it on the left hand side of a relation.
以下是我的代码:
#loading the data
data("ro")
?ro
str(ro)
Ntotal<-dim(ro)[1]
modelstring2 <- "
model {
#likelihood
for (i in 1:Ntotal) {
ro[i]~ dbern(mu[i])
logit(mu[i]) <- alpha + beta[1]*rr[i]
}
#prior
alpha~ dnorm(0, 1.0E-6)
for (j in 1:4) {
beta[i]~ dnorm(0, 1.0E-6)
}
}"
#obatin the initial values by glm model
glm_int <- glm(ro ~ x1 + x2 + x3 + x4,
family= binomial,data = ro)
summary(glm_int)
#initiate the model
datalist<-list( 'ro'=ro[[1]], 'x1'=ro[[2]],'x2'= ro[[3]],
'x3'=ro[[4]],'x4'= ro[[5]],'Ntotal'=Ntotal)
model2<-jags.model(textConnection(modelstring2),
data=list( 'ro' = ro$ro,
'x1'=ro$x1,
'x2'=ro$x2,
'x3'= ro$x3,
'x4'= ro$x4, 'Ntotal'=Ntotal),
inits =list('alpha' =glm_int$coef[[1]],'beta[1]'= glm_int$coef[[2]],
'beta[2]'= glm_int$coef[[3]],'beta[3]'= glm_int$coef[[4]],
'beta[4]'= glm_int$coef[[5]]),
n.chains=3,
n.adapt=1000)
期待您的帮助。
答案 0 :(得分:1)
错误告诉您问题出在第22行。代码的第21-23行是:
for (j in 1:4) {
beta[i]~ dnorm(0, 1.0E-6)
}
即。索引变量i不存在于j循环中。
JAGS为提供信息性错误付出了相当大的努力,因此值得仔细阅读。请注意,如果您的模型位于单独的文本文件中,则行号引用会更有用(或者runjags会根据请求显示您的模型的行号 - r2jags可能会做类似的事情,我不确定)。