2013-11-21 39 views
2

當我使用附加的模型加載3個鏈時,我得到「這個鏈包含未初始化的變量」。我打「gen init」繼續前進。這是一件正確的事情嗎? 固定模型不會發生這種情況,但傾向於隨機模型發生。 請指教。這個鏈包含未初始化的變量

#BUGS model 
model{ 
for(i in 1:ns){ 
    w[i,1] <- 0 
    delta[i,1] <- 0 
    mu[i] ~ dnorm(0,.0001) 
    for (k in 1:na[i]) { 
    r[i,k] ~ dpois(theta[i,k]) 
    theta[i,k] <- lambda[i,k]*E[i,k] 
    log(lambda[i,k]) <- mu[i] + delta[i,k] 
    dev[i,k] <- 2*((theta[i,k]-r[i,k]) + r[i,k]*log(r[i,k]/theta[i,k])) 
    } 
    resdev[i] <- sum(dev[i,1:na[i]]) 
    for (k in 2:na[i]) { 
    delta[i,k] ~ dnorm(md[i,k],taud[i,k]) 
    md[i,k] <- d[t[i,k]] - d[t[i,1]] + sw[i,k] 
    taud[i,k] <- tau *2*(k-1)/k 
    w[i,k] <- (delta[i,k] - d[t[i,k]] + d[t[i,1]]) 
    sw[i,k] <- sum(w[i,1:k-1])/(k-1) 
    } 
} 
for (c in 1:(nt-1)) { 
    for (k in (c+1):nt) { 
    lhr[c,k] <- (d[k]-d[c]) 
    log(hr[c,k]) <- lhr[c,k] 
    } 
} 
totresdev <- sum(resdev[]) 
d[1]<-0 
for (k in 2:nt){ 
    d[k] ~ dnorm(0,.0001) 
} 
sd ~ dunif(0,5) 
tau <- pow(sd,-2) 
} 

#data 
list(ns=9, nt=9)              
t[,1] t[,2] t[,3] t[,4] E[,1] E[,2] E[,3] E[,4] r[,1] r[,2] r[,3] r[,4] na[]  
1 2 3 4 224 226 221 223 19 11 15 7 4 
2 5 NA NA 818 806 NA NA 83 73 NA NA 2 
2 7 NA NA 412 429 NA NA 51 37 NA NA 2 
1 2 7 NA 4572 4563 4599 NA 869 730 736 NA 3 
1 7 NA NA 68 137 NA NA 8.8 13.7 NA NA 2 
1 6 NA NA 125 131 NA NA 4 5  NA NA 2 
2 8 9 NA 131 128 130 NA 10.6 20.2 18.1 NA 3 
1 2 8 NA 256 255 254 NA 79 73 48 NA 3 
2 8 NA NA 152 147 NA NA 38 24 NA NA 2 
END 

#inits 
list(d=c(NA, 0, 0, 0, 0, 0, 0, 0, 0), sd=1, mu=c(0, 0, 0, 0, 0, 0, 0, 0, 0)) 
list(d=c(NA, -1, -1, -1, -1, -1, -1, -1, -1), sd=4, mu=c(-3, -3, -3, -3, -3, -3, -3, - 3, -3)) 
list(d=c(NA, 2, 2, 2, 2, 2 ,2, 2, 2), sd=2, mu=c(-3, 5, -1, -3, 7, -3, -4, -3, -3)) 

回答

5

如果您未提供未知參數的初始值,您會收到此消息。在你的情況下,這將是隨機效應。允許WinBUGS爲隨機效果生成初始值通常是可以的。作爲一般規則,如果先驗詞含糊不清,則應指定自己的初始值(以避免在採樣開始時出現數值溢出問題)。如果先驗信息豐富(如果您已經將隨機效應分佈的參數初始化爲合理的值,那麼它就是隨機效應),那麼可以讓WinBUGS執行此操作。