model { for(i in 1:NS2) { # LOOP THROUGH 2-ARM STUDIES y[i,2] ~ dnorm(delta[i,2],prec[i,2]) # normal likelihood for 2-arm trials resdev[i] <- (y[i,2]-delta[i,2])*(y[i,2]-delta[i,2])*prec[i,2] #Deviance contribution for trial i lik[i] <- logdensity.norm(y[i,2], delta[i,2],prec[i,2]) } for(i in (NS2+1):(NS2+NS3)) { # LOOP THROUGH 3-ARM STUDIES for (k in 1:(na[i]-1)) { # set variance-covariance matrix for (j in 1:(na[i]-1)) { Sigma[i,j,k] <- V[i]*(1-equals(j,k)) + vari[i,k+1]*equals(j,k) } } Omega[i,1:(na[i]-1),1:(na[i]-1)] <- inverse(Sigma[i,,]) #Precision matrix # multivariate normal likelihood for 3-arm trials y[i,2:na[i]] ~ dmnorm(delta[i,2:na[i]],Omega[i,1:(na[i]-1),1:(na[i]-1)]) lik[i] <- logdensity.mnorm(y[i,2:na[i]], delta[i,2:na[i]],Omega[i,1:(na[i]-1),1:(na[i]-1)]) #Deviance contribution for trial i for (k in 1:(na[i]-1)){ # multiply vector & matrix ydiff[i,k]<- y[i,(k+1)] - delta[i,(k+1)] z[i,k]<- inprod(Omega[i,k,1:(na[i]-1)], ydiff[i,1:(na[i]-1)]) } resdev[i]<- inprod(ydiff[i,1:(na[i]-1)], z[i,1:(na[i]-1)]) } for(i in 1:(NS2+NS3)){ # LOOP THROUGH ALL STUDIES #w[i,1] <- 0 # adjustment for multi-arm trials is zero for control arm #delta[i,1] <- 0 # treatment effect is zero for control arm for (k in 2:na[i]) { # LOOP THROUGH ARMS vari[i,k] <- pow(se[i,k], 2) prec[i,k] <- 1/vari[i,k] # calculate variances } # Code for random effects for (k in 2:na[i]) { delta[i,k] <- d[t[i, k]] - d[t[i, 1]] } } d[1] <- 0.00000E+00 for(k in 2:NT) { d[k] ~ dnorm(0, 0.11) # vague priors on treatment effects } }