1

我正在运行 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)

期待您的帮助。

4

1 回答 1

1

该错误告诉您问题出在第 22 行。您的代码的第 21-23 行是:

for (j in 1:4) {
     beta[i]~ dnorm(0, 1.0E-6)
}

即索引变量 i 不存在于 j 上的这个循环中。

JAGS 付出了很多努力来提供信息性错误,因此始终值得仔细阅读它们。请注意,如果您的模型位于单独的文本文件中,则行号引用会更有用(或者 runjags 会根据要求显示带有行号的模型 - r2jags 可能会做类似的事情,我不确定)。

于 2016-09-03T08:18:35.077 回答