Как использовать RJAGS для запуска логистической модели

Я использую логистическую модель по 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)

Ждем вашей помощи.

1 ответ

Ошибка говорит вам, что проблема в строке 22. Строки 21-23 вашего кода:

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

то есть индексная переменная i не существует в этом цикле над j.

JAGS прилагает немало усилий для предоставления информативных ошибок, поэтому всегда стоит внимательно их прочитать. Обратите внимание, что ссылки на номера строк более полезны, если ваша модель находится в отдельном текстовом файле (в противном случае runjags покажет вашу модель с номерами строк по запросу - r2jags может сделать нечто подобное, я не уверен).

Другие вопросы по тегам