我的OpenBUGS代码中的奇怪错误(使用R2OpenBUGS)

我的OpenBUGS代码中的奇怪错误(使用R2OpenBUGS),r,bayesian,openbugs,R,Bayesian,Openbugs,我已经使用R中的r2openbug包在openbug中编写了一个Weibull生存代码。经过数小时的调试,我仍然发现以下错误: 节点的此组件不是随机Beta0[1]错误位置30 节点的此组件不是随机Beta0[1]错误位置31 节点的此组件不是随机Beta0[1]错误位置30 节点算法的更新错误切片更新程序错误无法对节点进行太多迭代采样 当采样器处于自适应阶段时,无法进行推断 以下是我的完整代码和初始值: #-------------- # Model Code -- #------------

我已经使用
R
中的
r2openbug
包在
openbug
中编写了一个Weibull生存代码。经过数小时的调试,我仍然发现以下错误:

节点的此组件不是随机Beta0[1]错误位置30

节点的此组件不是随机Beta0[1]错误位置31

节点的此组件不是随机Beta0[1]错误位置30

节点算法的更新错误切片更新程序错误无法对节点进行太多迭代采样

当采样器处于自适应阶段时,无法进行推断

以下是我的完整代码和初始值:

#--------------
# Model Code --
#--------------
linemodel <- function(){
  for(i in 1:N){ 
    for (j in 1:M){
      weibSamp[i,j] ~ dweib(tau, gamma[i]) %_% I(weibCens[i,j],)
    }
    gamma[i] <- exp(Beta0[i] + Beta1*X[i])
    S[i] ~ dcat(pi[])
    Beta0[i] <- Beta0Pool[S[i]]
    for (j in 1:C){
      SC[i,j] <- equals(j, S[i])
    }
  }
  # Precision Parameter for DP:
  alpha ~ dgamma(0.1, 0.1)

  # Let's construct the DP:
  p[1] <- r[1]
  for (j in 2:C){
    p[j] <- r[j]*(1 - r[j - 1])*p[j-1]/r[j-1]
  }
  p.sum <- sum(p[])
  for (j in 1:C){
    Beta0Pool[j] ~ dnorm(A, B)
    r[j] ~ dbeta(1, alpha)
    # scaling to ensure p sums to 1
    pi[j] <- p[j]/p.sum
  }

  # Hyper priors A and B inside of DP (for G0)
  A ~ dnorm(0, 0.01)
  B ~ dgamma(0.1, 0.1)

  # Total number of clusters:
  K <- sum(cl[])
  for (j in 1:C){
   sumSC[j] <- sum(SC[,j])
    cl[j] <- step(sumSC[j] - 1)
  }
  tau ~ dexp(0.001)
  Beta1 ~ dnorm(0, 0.01)
}

#---------------
# Initializing -
#---------------
lineinits <- function(){
  list(tau = runif(1, 0.1, 3), Beta0 = rnorm(N, 0, 2), Beta1 = rnorm(1, 0,
       2), alpha = 2, A = 0, B = 2)
}

#------------------------------------
# Time to get OpenBUGS run the code -
#------------------------------------
library(coda)
lineout <- bugs(data, lineinits, c("tau", "Beta0", "Beta1"), linemodel, 
            n.iter = 1000, n.burnin = 200, n.thin = 1, codaPkg = T, 
            debug = T)
#--------------
#模型代码--
#--------------

我不知道这是否会影响到你的问题,但是作为一个长期的解决方案,你可能想考虑移动到JAGS(或者甚至是Stan)。请看上面的这个和这个问题。谢谢@RichardErickson。我会看看博客,正如你所建议的,我可能很快就会开始使用JAGS和Stan。然而,我的首要任务是首先弄清楚我上面的代码为什么不起作用。非常感谢您的帮助。再次感谢您的评论,不客气。您可以查看的另一个资源是邮件列表。我从来没有用过它(也不知道这个列表有多活跃),但是如果你几天内没有得到回复,你可以试着把你的问题发布到那里。太棒了。非常感谢RichardErickson。刚刚给邮件列表发了一封电子邮件。