2016-11-08 27 views
2

我正在做一個網絡薈萃分析,包括幾個臨牀試驗。答案是二項式的。每個試驗包含幾種治療方法JAGS和WinBUGS給出不同的DIC

當我做一個隨機效應模型時,來自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? (搜索「JAGS bug」並不是那麼有用。)

我很感激任何指針。

回答

3

有許多不同的方法可以計算pD,JAGS使用的方法與WinBUGS使用的方法不同。請參見下面的幫助文件的詳細信息部分:與預期偏差

DIC(Spiegelhalter於等2002)是通過將「有效數量的參數」計算(PD):

?rjags::dic 

具體地說。 dic.samples使用的pD的定義是Plummer(2002)提出的,需要模型中有兩個或多個並行鏈。

Spiegelhalter於,D,N最佳,B.卡林和A.範德林德(2002):

的細節是在(長,但很值得一讀)以下文件的討論,模型複雜性和擬合的貝葉斯度量(與討論)。 Journal of the Royal Statistical Society Series B 64,583-639。所有計算pD(我知道的)的方法都是近似值,如果兩個這樣的方法不一致,那麼可能是因爲一個(或兩個)近似值(s)背後的假設不被滿足。

馬特

相關問題