这个链包含未初始化的变量

时间:2013-11-21 23:27:59

标签: winbugs

当我使用附加模型加载3个链的inits时,我得到“此链包含未初始化的变量”。我点击“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))

1 个答案:

答案 0 :(得分:5)

如果您未提供未知参数的初始值,则会收到此消息。在你的情况下,这将是随机效应。允许WinBUGS为随机效果生成初始值通常是可以的。作为一般规则,如果先验是模糊的,则应指定自己的初始值(以避免在采样开始时出现数值溢出问题)。如果先验信息是有用的(如果您已经将随机效应分布的参数初始化为合理值,那么它将是随机效应)您可以让WinBUGS执行此操作。