[bugsicon]    Sensitivity to prior distributions: application to
      Magnesium meta-analysis


   model
   {
   #   j indexes alternative prior distributions
      for (j in 1:6) {
         mu[j] ~ dunif(-10, 10)
         OR[j] <- exp(mu[j])
      
   #   k indexes study number
          for (k in 1:8) {
             theta[j, k] ~ dnorm(mu[j], inv.tau.sqrd[j])
             rtx[j, k] ~ dbin(pt[j, k], nt[k])
             rtx[j, k] <- rt[k]
             rcx[j, k] ~ dbin(pc[j, k], nc[k])
             rcx[j, k] <- rc[k]
             logit(pt[j, k]) <- theta[j, k] + phi[j, k]
             phi[j, k] <- logit(pc[j, k])
             pc[j, k] ~ dunif(0, 1)
          }
       }
      
   #   k again indexes study number
       for (k in 1:8) {
          # log-odds ratios:
          y[k] <- log(((rt[k] + 0.5) / (nt[k] - rt[k] + 0.5)) / ((rc[k] + 0.5) / (nc[k] - rc[k] + 0.5)))
    #    variances & precisions:
          sigma.sqrd[k] <- 1 / (rt[k] + 0.5) + 1 / (nt[k] - rt[k] + 0.5) + 1 / (rc[k] + 0.5) +
                   1 / (nc[k] - rc[k] + 0.5)
          prec.sqrd[k] <- 1 / sigma.sqrd[k]
       }
       s0.sqrd <- 1 / mean(prec.sqrd[1:8])

   # Prior 1: Gamma(0.001, 0.001) on inv.tau.sqrd

       inv.tau.sqrd[1] ~ dgamma(0.001, 0.001)
       tau.sqrd[1] <- 1 / inv.tau.sqrd[1]
       tau[1] <- sqrt(tau.sqrd[1])

    # Prior 2: Uniform(0, 50) on tau.sqrd

       tau.sqrd[2] ~ dunif(0, 50)
       tau[2] <- sqrt(tau.sqrd[2])
       inv.tau.sqrd[2] <- 1 / tau.sqrd[2]

    # Prior 3: Uniform(0, 50) on tau

       tau[3] ~ dunif(0, 50)
       tau.sqrd[3] <- tau[3] * tau[3]
       inv.tau.sqrd[3] <- 1 / tau.sqrd[3]

    # Prior 4: Uniform shrinkage on tau.sqrd

       B0 ~ dunif(0, 1)
       tau.sqrd[4] <- s0.sqrd * (1 - B0) / B0
       tau[4] <- sqrt(tau.sqrd[4])
       inv.tau.sqrd[4] <- 1 / tau.sqrd[4]

    # Prior 5: Dumouchel on tau
       
       D0 ~ dunif(0, 1)
       tau[5] <- sqrt(s0.sqrd) * (1 - D0) / D0
       tau.sqrd[5] <- tau[5] * tau[5]
       inv.tau.sqrd[5] <- 1 / tau.sqrd[5]

    # Prior 6: Half-Normal on tau.sqrd

       p0 <- phi(0.75) / s0.sqrd
       tau.sqrd[6] ~ dnorm(0, p0)I(0, )
       tau[6] <- sqrt(tau.sqrd[6])
       inv.tau.sqrd[6] <- 1 / tau.sqrd[6]

   }

Data:

list(rt = c(1, 9, 2, 1, 10, 1, 1, 90), nt = c(40, 135, 200, 48, 150, 59, 25, 1159),
rc = c(2, 23, 7, 1, 8, 9, 3, 118), nc = c(36, 135, 200, 46, 148, 56, 23, 1157))

Initial values:

list(mu = c(-0.5, -0.5, -0.5, -0.5, -0.5, -0.5), tau = c(NA, NA, 1, NA, NA, NA),
tau.sqrd = c(NA, 1, NA, NA, NA, 1), inv.tau.sqrd = c(1, NA, NA, NA, NA, NA))

Results for 6 different prior distributions on the random-effects variance:

   node   mean   sd   MC error   2.5%   median   97.5%   start   sample
   OR[1]   0.4591   0.1723   0.007649   0.1779   0.4478   0.7565   1001   4000
   OR[2]   0.4179   0.2539   0.006781   0.1076   0.3853   0.9179   1001   4000
   OR[3]   0.4368   0.2237   0.006079   0.145   0.4175   0.8194   1001   4000
   OR[4]   0.4639   0.1476   0.0058   0.216   0.4525   0.786   1001   4000
   OR[5]   0.483   0.1577   0.00894   0.1943   0.4829   0.7668   1001   4000
   OR[6]   0.4347   0.141   0.005219   0.2055   0.4199   0.764   1001   4000
   tau[1]   0.5845   0.3983   0.02097   0.05697   0.51   1.576   1001   4000
   tau[2]   1.081   0.6317   0.03234   0.2852   0.9472   2.748   1001   4000
   tau[3]   0.8119   0.5104   0.02479   0.1417   0.7081   2.123   1001   4000
   tau[4]   0.5084   0.2664   0.01257   0.1279   0.4659   1.165   1001   4000
   tau[5]   0.5245   0.3707   0.02433   0.02662   0.4604   1.421   1001   4000
   tau[6]   0.5736   0.1846   0.006752   0.2307   0.5669   0.9538   1001   4000
   
Note: Uniform prior on variance increases uncertainty about the mean treatment effect.
   
   


[prior-sensitivity1][prior-sensitivity2]