Solved – Using mvmeta to perform a network meta-analysis

meta-analysismeta-regressionnetwork-meta-analysisr

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)

Best Answer

There is a fairly new R package for conducting network meta-analysis called 'gemtc' by Gert van Valkenhoef and Joel Kuiper. It is quite user friendly and the authors are responsive to questions about their package.

The link is below:

http://cran.r-project.org/web/packages/gemtc/

Related Question