5

I am running a meta-analysis using metafor R package. I am comparing studies on a continuous variable, that can be synthetized by the mean. Such studies can be grouped in three blocks. I used a meta regression, e.g.

dat <- escalc(measure="MN", mi=mean, sdi=sd, ni=num, data=dbtemp)
res <- rma(yi, vi, mods =~ factor(group), data=dat)

I know that I can know whether group is significant or not. But how can I assess whether each level within group is significant from the other. I.e., how I can perform multiple comparisons (post hoc analysis) within a meta - analysis context?

mpiktas
  • 33,140
  • 5
  • 82
  • 138
Giorgio Spedicato
  • 3,444
  • 4
  • 29
  • 39

1 Answers1

5

You can use anova(res, L=c(...)) to obtain contrasts. For a three-level factor (with levels 1, 2, and 3), the model will include two dummy variables, contrasting level 2 vs 1 and level 3 vs 1. So you already have those contrasts. With anova(res, L=c(0,-1,1)) you can get the contrast of level 3 vs 2. If you want all three contrasts at the same time, use:

anova(res, L=rbind(c(0,1,0),c(0,0,1),c(0,-1,1)))

You can also use the glht() function from the multcomp package for this:

summary(glht(res, linfct=rbind(c(0,1,0),c(0,0,1),c(0,-1,1))), test=adjusted("none"))

By changing the test argument, you can obtain multiplicity adjusted p-values (see help(summary.glht) for more details).

I also have an extensive discussion/illustration related to these types of analyses on the metafor package website. See:

http://www.metafor-project.org/doku.php/tips:testing_factors_lincoms

Wolfgang
  • 15,542
  • 1
  • 47
  • 74