[R-meta] Meta-regression in network meta-analysis

Viechtbauer, Wolfgang (SP) wo||g@ng@v|echtb@uer @end|ng |rom m@@@tr|chtun|ver@|ty@n|
Fri Aug 20 13:36:54 CEST 2021

As a follow-up -- I have added code to compute P-scores for this example here:


It is slightly different (and doesn't depend on multcomp), but gives the same results.


>-----Original Message-----
>From: R-sig-meta-analysis [mailto:r-sig-meta-analysis-bounces using r-project.org] On
>Behalf Of Viechtbauer, Wolfgang (SP)
>Sent: Wednesday, 18 August, 2021 13:46
>To: Torbahn, Gabriel; Natan Gosmann; r-sig-meta-analysis using r-project.org
>Subject: Re: [R-meta] Meta-regression in network meta-analysis
>Dear all,
>Catching up on emails after my summer break and saw your (unanswered) post.
>One can also compute P-scores based on a network meta-analysis conducted with
>metafor, although this is not automated. Let's consider the example from:
>Rücker, G., & Schwarzer, G. (2015). Ranking treatments in frequentist network
>meta-analysis works without resampling methods. BMC Medical Research Methodology,
>15, 58. https://doi.org/10.1186/s12874-015-0060-8
>See here for the corresponding analysis using metafor:
>Go down to the part with the comment:
>### network meta-analysis using a contrast-based random-effects model
>res <- rma.mv(yi, V, mods = ~ acarbose + benfluorex + metformin + miglitol +
>pioglitazone +
>                              rosiglitazone + sitagliptin + sulfonylurea +
>vildagliptin - 1,
>              random = ~ comp | study, rho=1/2, data=dat)
>### corresponding forest plot
>forest(coef(res), diag(vcov(res)), slab=names(coef(res)), order="obs",
>       xlim=c(-3.0, 2.5), alim=c(-1.5, 0.5), psize=1, xlab="Estimate",
>The results are slightly different from Figure 4 in the paper because netmeta in
>this example is not using REML estimation, but the results are essentially the
>In order to compute P-scores, we need to compute p-values for all pairwise
>comparisons, including the reference treatment (in this case, placebo), which was
>left out of 'mods' (to make it the reference treatment). So, we need to add 0 as
>the coefficient for placebo and also set the corresponding row/column in the var-
>cov matrix of the coefficients to 0. Then we can get all these p-values with:
>contr <- contrMat(rep(1:(res$p+1)), type="Tukey")
>b <- coef(res)
>vb <- vcov(res)
>b <- c(b[1:5],0,b[6:9])
>vb <- bldiag(vb[1:5,1:5],0,vb[6:9,6:9])
>pvals <- apply(contr, 1, function(x) pnorm((x%*%b) / sqrt(t(x)%*%vb%*%x)))
>And we can create Table 2 with:
>tab <- vec2mat(pvals, corr=FALSE)
>tab[lower.tri(tab)] <- t((1 - tab)[lower.tri(tab)])
>rownames(tab) <- colnames(tab) <-
>round(tab, 2)
>Finally, we can get the P-scores with:
>cbind(round(sort(apply(tab, 1, mean, na.rm=TRUE), decreasing=TRUE), 3))
>These are the same values as in Table 3 (except for the slight discrepancy due to
>rma.mv() using REML and netmeta in the example using a DL-type estimator).
>One could include potential moderators in the example above to do a network meta-
>regression. I would center these moderators at some meaningful values, so that one
>could interpret the treatment effect estimates (as above) as the predicted
>estimates at the values at which the predictors were centered. Then one could
>proceed as above to compute P-scores conditional on those predictors.
>>-----Original Message-----
>>From: R-sig-meta-analysis [mailto:r-sig-meta-analysis-bounces using r-project.org] On
>>Behalf Of Torbahn, Gabriel
>>Sent: Thursday, 12 August, 2021 10:47
>>To: Natan Gosmann; r-sig-meta-analysis using r-project.org
>>Subject: Re: [R-meta] Meta-regression in network meta-analysis
>>Good morning,
>>just a follow-up on this question:
>>has there been an answer to this issue?
>>Thank you and best regards,
>>Von: R-sig-meta-analysis <r-sig-meta-analysis-bounces using r-project.org> im Auftrag
>>von Natan Gosmann <natan.gosmann using gmail.com>
>>Gesendet: Freitag, 6. August 2021 08:04:12
>>An: r-sig-meta-analysis using r-project.org
>>Betreff: [R-meta] Meta-regression in network meta-analysis
>>Dear colleagues,
>>We are currently performing a network meta-analysis to evaluate the
>>efficacy of some interventions. In order to provide more complete results,
>>it would be really helpful to estimate treatment rankings; however, we
>>think it would be essential to also perform meta-regression analysis.
>>Netmeta can estimate treatment rankings and metafor can perform the
>>meta-regression analyses; nevertheless, to the best of our knowledge, none
>>of them can perform both analyses.
>>Is there any way to estimate treatment rankings in metafor (eg. SUCRA,
>>p-score) or to perform meta-regression in network meta-analyses in netmeta?
>>We didn't find this information in netmeta or metafor manual, so any
>>guidance here would be really helpful.
>R-sig-meta-analysis mailing list
>R-sig-meta-analysis using r-project.org

More information about the R-sig-meta-analysis mailing list