A few months ago, I posted these two questions about practical considerations in collecting data for a network meta-analysis and the available R packages that can analyze such data. For those unfamiliar with network meta-analysis, it is a method that compares a set of treatments against each other. Part of what's attractive about this method is that multivariate extensions of network meta-analysis can accommodate studies that compare more than two treatments against each other; traditional meta-analytic methods can only accommodate two treatments.
I am currently attempting to use the mvmeta package to conduct the meta-analysis. However, I'm a little stuck in figuring out how to implement the meta-analysis.
As I understand it, network meta-analysis can be implemented at either the arm level or the contrast level. In my own meta-analysis, however, authors rarely report the outcome at the arm level, and much of my data had to be extracted using test statistics from the comparison between arms (e.g., a t-test comparing treatment A to treatment B). Therefore, I'm using the contrast-based approach, which accommodates studies with more than three arms by modeling the different comparisons between the arms as separate outcomes. For a study with k arms, k - 1 comparisons fully represent the differences between the arms. So, one must choose a reference treatment and calculate the k - 1 comparisons to that reference treatment. For example, for a study comparing treatments A, B, and C to each other, one would calculate separate effect sizes for the AB and AC comparisons.
What I don't understand is how to extend this framework to represent studies that don't include the reference treatment. So, in the above example, I don't understand how to accommodate a study that compares treatments B and C.
One possibility is that I would simply run a new analysis with B as the reference treatment. Do any of you know if this is actually the case?
For reference, I have included some R code that I wrote that I believe performs a network meta-analysis using mvmeta below. My question, restated in the context of the sample R code, is that I don't see how to represent studies that observe BC comparisons.
library(mvmeta) # Construct data AB <- c(.5, .3, .2, .2, NA, NA, .1) AC <- c(NA, .3, .4, NA, .2, .1, .5) # Where are the BC comparisons? d <- data.frame(AB, AC) n1 <- 50 n2 <- 50 nT <- 150 # Total N for 3-arm studies in this example # Create list of N = 7 within-study variance-covariance matrices (S matrices). # These are a function of the effect sizes and study Ns specified above. S <- list(matrix(c(1/n1 + 1/n2 + .5/(2*(n1 + n2)), NA, NA, NA), ncol = 2, nrow = 2), matrix(c(1/n1 + 1/n2 + .3/(2*nT), 1/n1 + .3 * .3 / (2*nT), 1/n1 + .3 * .3 / (2*nT), 1/n1 + 1/n2 + .3/(2*nT)), ncol = 2, nrow = 2), matrix(c(1/n1 + 1/n2 + .2/(2*nT), 1/n1 + .2 * .4 / (2*nT), 1/n1 + .2 * .4 / (2*nT), 1/n1 + 1/n2 + .4/(2*nT)), ncol = 2, nrow = 2), matrix(c(1/n1 + 1/n2 + .2/(2*(n1 + n2)), NA, NA, NA), ncol = 2, nrow = 2), matrix(c(NA, NA, NA, 1/n1 + 1/n2 + .2/(2*(n1 + n2))), ncol = 2, nrow = 2), matrix(c(NA, NA, NA, 1/n1 + 1/n2 + .1/(2*(n1 + n2))), ncol = 2, nrow = 2), matrix(c(1/n1 + 1/n2 + .1/(2*nT), 1/n1 + .1 * .5 / (2*nT), 1/n1 + .1 * .5 / (2*nT), 1/n1 + 1/n2 + .5/(2*nT)), ncol = 2, nrow = 2)) mod <- mvmeta(cbind(AB, AC) ~ 1, S = S, data = d, method = "reml") summary(mod)