2016-09-03 7 views
1

나는 물류 모델을 rjags로 실행하고 있지만 오류는 항상 발생하며 (아래 참조) 내 코드에 필요한 모든 것이 포함되어있어 논리적이므로 느낄 수 있습니다. 제 코드의 실수를 감지하지 못합니다. 당신의 도움을 기대rjags를 사용하여 물류 모델을 실행하는 방법

#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) 

: 여기에 오류가 여기에

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. 

내 코드되어 있습니다.

답변

1

오류는 문제가 줄에 있음을 알려줍니다 (22) 라인 코드의 21 ~ 23은 다음과 같습니다

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

즉 내가 J 이상이 루프 내에 존재하지 않는 색인 변수입니다.

JAGS는 유익한 오류를 제공하기 위해 많은 노력을 기울이므로주의 깊게 읽어야합니다. 모델이 별도의 텍스트 파일에있는 경우 줄 번호 참조가 더 유용합니다 (또는 runjags는 요청시 라인 번호가있는 모델을 표시합니다 - r2jags는 비슷한 것을 할 수 있습니다).