2017-03-24 3 views
0

저는 JAGS를 처음 사용하며 R2jags 패키지를 통해 R에서 모델을 실행하고 있습니다. 모델 코드JAGS - 모든 매개 변수 노드에 함수 적용

카이 제곱 차이 측정 값이

model { 
.... 
for(g in 1:G) { 
    for (t in 1:T) { 
    ... 
    E[g,t] <- pow((y[g,t] - eval[g,t]),2)/eval[g,t] 
    ... 
    }#t 
}#g 

fit <- sum(E[,]) 

}#model 

gt를 계산한다 (399) Kéry & SCHAUB 2012 ('베이지안 인구 분석의 Winbugs 사용 ")에서 취한 코드 페이지에 기초 사이트와 시간 인덱스가 있고 GT이 사이트의 수와 년의 수는

내가 오류를 얻을 수 있습니다하지만

Error in jags.model(model.file, data = data, inits = init.values, n.chains = n.chains, : 
RUNTIME ERROR: 
Compilation error on line 140. 
Cannot evaluate subset expression for fit 

JAGS에서 WinBUGS와 다른 구문을 사용했기 때문에 발생 했습니까? 이 코드는 책의 예와 같이 3 대신 2 차원을 사용한다는 점을 제외하면 책에서 사용 된 것과 동일합니다.

답변

0

질문의 마지막 부분에 답하기 위해 JAGS에서 다른 구문으로 인해 오류가 발생하지 않습니다 (오류 메시지가 버그에서 다르게 보일 수 있음).

은 실제로 당신이 게시 한 코드 잘못 아무것도 볼 수 없으며, 다음과 같은 재생 가능한 예는 Y와 평가가 데이터를 제공하는 경우는 적어도 작동하는지 보여줍니다

m <- 'model { 
for(g in 1:G) { 
    for (t in 1:T) { 
    E[g,t] <- pow((y[g,t] - eval[g,t]),2)/eval[g,t] 
    }#t 
}#g 

fit <- sum(E[,]) 

#data# G, T, y, eval 
#monitor# fit 

}#model 
' 

library('runjags') 

G=T <- 10 
y <- matrix(rnorm(100), nrow=G, ncol=T) 
eval <- matrix(rnorm(100), nrow=G, ncol=T) 

results <- run.jags(m) 

되세요 당신은 라인 140이 참조하는 것을 확인 했는가? 라인 140은 당신이 보여주지 않은 것이거나 다른 치수의 모델에서 fit이나 E를 다른 곳에 지정했을 수도 있습니다.

그래도 문제가 해결되지 않으면 문제를 나타내는 질문에 최소한의 재현 가능한 예를 추가하십시오 (이미 작성한 내용 아래의 --- EDIT --- 줄 아래에 있음) 우리는 그 일을 도울 수 있습니다. 합 (E [,])`코드에 표시된 미안를 지정하지 않았다 -

매트

+0

당신에게 매트 감사, 선 (140)는이'<맞게입니다! 나는 최소한의 재현 가능한 예제로 시도 할 것이다. – Quechua