2014-04-20 6 views
1

제로스 트릭을 사용하여 JAGS의 일반 포아송 분포에 카운트 데이터를 맞추고 있습니다. 나는 "베이지안 모델링의 Winbugs 사용"책에 코드를 다음입니다 (286 페이지) 문서라도 내 코드입니다 :JAGS를 사용하는 베이지안 일반화 된 포아송에 대한 제로 - 하나의 트릭

GPoisson.model <- function(){ 
C <- 10000 
for(i in 1:N){ 
    zeros[i] <- 0 
    zeros[i] ~ dpois(zeros.mean[i]) 
    zeros.mean[i] <- -l[i] + C 
    #log-likelihood 
    lambda.star[i] <- (1-omega)*lambda[i] + omega*y[i] 
    l[i] <- log((1-omega)*lambda[i]) + (y[i]-1)*log(lambda.star[i]) - 
    loggam(y[i]+1) - lambda[i] 
    #log-link + linear predictor 
    log(lambda[i]) <- log(E[i]) + inprod(X[i,],beta[]) 
    } 
#priors 
omega ~ dbeta(1,1) 
for(j in 1:17){ 
    beta[j] ~ dnorm(0,0.001) 
} 

}

나는이 오류가있어 모델을 실행하면 :

Compilation error on line 6. 
Attempt to redefine node zeros[1] 

나는 아직도 0 [0]이 잘못되었음을 이해하지 못합니다. 제발 가르쳐주세요. 미리 감사드립니다.

답변

1

귀하의 라인

 zeros[i] <- 0 
    zeros[i] ~ dpois(zeros.mean[i]) 

원인 문제. JAGS에서는 주어진 변수 값을 다시 정의 할 수 없습니다. `데이터 { : 0`과 결국 코드는 다음과 같습니다 - 예, 0을 [내가] <`하락

+0

사용자 코드에서

zeros[i] <- 0 

: 난 당신이 라인을 삭제해야한다고 생각 } 모델 { \t \t C <- 1,000 \t - {0 \t \t \t 제로 [I]가 <} (N I (1))에 대한 \t 경우 (전 1 : N) { \t \t 제로 [I]는 ~ dpois (zeros.mean [I])는 \t \t는 \t는 \t zeros.mean [I]는 <- [내가] + C \t \t #을 -l log-likelihood \t \t lambda.star [i] <- (1-omega) * lambda [i] + omega * y [i] \t \t l [i] <- log ((1-ω) * λ [\t \t - λstar [i] \t \t # log-link + (y [i] -1) * log (λ [ 선형 예측 자 \t \t 람다 [I]는 <- E [I]는 * EXP (inprod (X [I,, 베타 []))} \t \t \t #priors 오메가 대 dunif ~ (0,1) \t \t (j 1:17) { \t \t 베타 [j] ~ dnorm (0,0.001) \t} } " " – FadzliFuzi