2017-12-29 38 views
0

여기 누군가 문제 해결을 도울 수 있는지 궁금합니다. 아래의 포아송 로그 정규 모델에 대한 적합성 평가를 수행하고 싶습니다 (이것은 단순한 테스트 모델입니다). 모델을 실행하는 sum (resi []) 및 fit.new < - sum (resi.new []) 행의 피팅을 <으로 주석 처리하지만 후부 예측 검사를 수행하기 위해 해당 값이 필요합니다.JAGS의 후방 예측 검사 - 치수 불일치 오류

이것이 작동하지 않는 이유에 대한 의견이 있으십니까? 오류 메시지와 모델을 포함했습니다.

제공 해 주셔서 감사합니다. Michelle

checkForRemoteErrors (val)의 오류 : 3 개의 노드에서 오류가 발생했습니다. 첫 번째 오류 : 런타임 오류 : 나는 적합하고 fit.new 문에서 괄호를 제거 할 때 resi.new

라인 (28) 치수 불일치 복용 집합에 컴파일 오류가 는

나는, 나는 다른 오류가 있음을 얻을 말할 것도도한다 :

checkForRemoteErrors (val)의 오류 : 노드 3 개가 오류를 생성했습니다.

model { 

# Priors 
for (i in 1:nyear){ 
alpha[i]~dnorm(0,0.001) 
} 

beta ~ dnorm(0,0.001) 
sigma ~ dunif(0, 10)  
tau <- 1/(sigma * sigma) 

# Likelihood 
for (i in 1:n*nyear) { 
for (j in 1:J){ 
y[i,j] ~ dpois(lambda[i,j]) 
log(lambda[i,j]) <- alpha[year[i]] + beta*x[i] + eps[i,j] 
eps[i,j] ~ dnorm(0, tau) 
resi[i,j] <- pow((y[i,j]-lambda[i,j]),2)/(sqrt(lambda[i,j])+e) 
new.y[i,j] ~ dpois(lambda[i,j]) 
resi.new[i,j] <- pow((new.y[i,j]-lambda[i,j]),2)/(sqrt(lambda[i,j])+e) 
} 
} 

fit <- sum(resi[]) 
fit.new <- sum(resi.new[]) 

} 

답변

0

resi.newresi 모두 내가 J 행렬에 의해 있습니다 : 첫 번째 오류 : 런타임 오류 : fit.new

여기 모델의 위해 라인 (27) 에 컴파일 오류가 집합 식을 평가할 수 없습니다. 모든 데이터 포인트에 대해 잔차의 사후를 얻으려는 경우 임시 벡터를 만들어 합계 할 수 있습니다. 이 코드는 모델의 끝 부분에서 현재 사용할 수있는 두 줄의 코드 대신 사용할 수 있습니다.

for(j in 1:J){ 
temp.fit[j] <- sum(resi[ ,j]) 
temp.fit.new[j] <- sum(resi.new[, j]) 
} 
fit <- sum(temp.fit[]) 
fit.new <- sum(temp.fit.new[])