JAGS和WinBUGS提供不同的DIC

时间:2016-11-08 12:39:48

标签: jags winbugs

我正在进行网络荟萃分析,包括几项临床试验。回复是二项式的。每项试验都包含几种治疗方法。

当我做一个随机效果模型时,JAGS和WinBUGS的输出是类似的。当我做一个固定效果模型时,DIC和pD组件已经解决了,尽管我感兴趣的参数的后验是相似的。

我有类似的模型有高斯响应,而不是二项式,JAGS和WinBUGS是一致的。

固定效果模型的BUGS / JAGS代码从page 61 of this解除,并显示在下方。但是,相同的代码运行并使用WinBUGS和JAGS生成类似的后代,它只是显着不同的DIC和pD。所以我认为这段代码不是问题。

for(i in 1:ns){  # Loop over studies
  mu[i] ~ dnorm(0, .0001)
    # Vague priors for all trial baselines
  for (k in 1:na[i]) {  # Loop over arms
    r[i, k] ~ dbin(p[i, k], n[i, k])
      # binomial likelihood
    logit(p[i, k]) <- mu[i] + d[t[i, k]] - d[t[i, 1]]
      # model for linear predictor
    rhat[i, k] <- p[i, k] * n[i, k]
      # expected value of the numerators
    dev[i, k] <- 
      2 * (r[i, k] * (log(r[i, k]) - log(rhat[i, k])) +     
      (n[i, k] - r[i, k]) * (log(n[i, k] - r[i, k]) +
      - log(n[i, k] - rhat[i, k])                         ))
      # Deviance contribution
  }
  resdev[i] <- sum(dev[i, 1:na[i]])
    # summed residual deviance contribution for this trial
}
totresdev <- sum(resdev[])
  # Total Residual Deviance

d[1] <- 0
  # treatment effect is zero for reference treatment
for (k in 2:nt){
  d[k] ~ dnorm(0, .0001)
}  # vague priors for treatment effects

我发现old post描述了一个已知问题,但这对我来说太老了,认为它是同一个问题。

JAGS报告错误的DIC和pD是否存在任何已知问题? (搜索&#34; JAGS错误&#34;并非所有有用的。)

我很感激任何指示。

1 个答案:

答案 0 :(得分:3)

有许多不同的方法来计算pD,JAGS使用的方法与WinBUGS使用的方法不同。请参阅以下帮助文件的“详细信息”部分:

?rjags::dic

具体做法是:

DIC(Spiegelhalter等2002)通过将“有效参数数量”(pD)与预期偏差相加来计算。 dic.samples使用的pD的定义是Plummer(2002)提出的定义,并且在模型中需要两个或更多并行链。

详情请参阅以下文章(冗长但值得一读):

Spiegelhalter,D.,N。Best,B。Carlin和A. van der Linde(2002),贝叶斯模型复杂度和拟合度量(讨论)。皇家统计学会杂志B 64,583-639。

一般而言:所有计算pD的方法(我所知道的)都是近似值,如果两个这样的方法不一致,那么可能是因为一个(或两个)近似值背后的假设没有得到满足。

马特