winbugs - 此链包含未初始化的变量

标签 winbugs

当我为带有附加模型的 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))

最佳答案

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

关于winbugs - 此链包含未初始化的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20134075/

相关文章:

error-handling - 在Logit模型中选择先验分布

r - OpenBUGS 中出现“预期逗号”错误

bayesian - OpenBUGS 代码给出错误 'expected a comma'

r - 从 R 调用 WinBUGS14

write.model() 的 rJAGS 版本?

r - WinBUGS/R 中贝叶斯分层建模(使用三个级别)的建议示例

r - 当函数随每次迭代增加时如何编写循环?

data-visualization - 在 Latex 中使用 Winbugs 绘图

r - OpenBUGS 无法收敛于 WinBUGS 中收敛的模型。精度极限?