I have a series of single-armed trials where the outcome is a binary response. Imagine a trial where you have no control arm; you merely give 100 patients a procedure (which can be done in many different ways) and see how many are 'well' (more later) at the end of the year. There are hundreds of these trials for me to look at.

I believe I can meta-analyse these as big group as follows, assuming x is the number well, n is n, and they're in df.

model <- rma(measure="PLO", xi=x, ni=n, data=df) #PLO = logit transformed proportion (log odds)
print(res, digits=3) #This will print the log odds
predict(model, transf=transf.ilogit, digits=3) #This will back-transform with the inverse logit transformation

I can plot this quite nicely with:


The thing is, as alluded to, there are lots of different ways to do the procedure and lots of different classifications of whether the patient is 'well'.

I want to do meta-regression/MV analysis on these trials (I may have over 100) to see if the characteristics of the trial predict the outcomes significantly.

I've done a lot of reading e.g http://www.metafor-project.org/doku.php/tips:regression_with_rma but my problem is all the examples of meta-regression seem to treat each 'row' equally, when of course they should be weighted by n.

I was wondering if it would be valid to supply my predictors in question merely via the mods argument and otherwise performing the analysis as I did for the meta-analysis, e.g.:

model_2 <- rma(measure="PLO", xi=x, ni=n, data=df, mods=~predictor1 + predictor2 + predictor3)

If I do I end up with something like:

Mixed-Effects Model (k = 60; tau^2 estimator: REML)

tau^2 (estimated amount of residual heterogeneity):     0.3651 (SE = 0.0908)
tau (square root of estimated tau^2 value):             0.6042
I^2 (residual heterogeneity / unaccounted variability): 81.40%
H^2 (unaccounted variability / sampling variability):   5.38
R^2 (amount of heterogeneity accounted for):            0.00%

Test for Residual Heterogeneity: 
QE(df = 57) = 311.1484, p-val < .0001

Test of Moderators (coefficient(s) 2,3): 
QM(df = 2) = 0.2739, p-val = 0.8720

Model Results:

                      estimate      se     zval    pval    ci.lb   ci.ub     
intrcpt                  1.1155  0.2997   3.7220  0.0002   0.5281  1.7030  ***
predictor1               0.0974  0.2763   0.3525  0.7244  -0.4441  0.6390     
predictor2              -0.0818  0.2085  -0.3923  0.6949  -0.4905  0.3269  

1) Is this the appropriate way of doing this?

2) Also, when I used to do patient-level multivariate regression, my practice was to include variables in the multivariate analysis if they were significant on univariate analysis; is this standard practice for my example, too? As in should I supply them individually as single mods=~predictor and look for significance before including them in a model?

Thank you


2 Answers 2


The link you give deliberately weights all the trails equally to make a point about the similarity to the lm() call. It does this by setting vi to 0. If you miss this line out, each row (trial) will be weighted by a function of its variance in the rma() call as you require.

You haven't given any example data; but from experience if there are "hundreds" of trials it is likely lots of them a small with few outcome events. In this situation the logit transform might not be most appropriate. Fortunately, the extensive worked examples on the metafor website provide guidance - check out http://www.metafor-project.org/doku.php/analyses:miller1978


As far as your questions about meta-regression are concerned:

1 your command looks correct

2 selecting on the basis of univariate analyses to choose variables to put into a multivariable model is unlikely to be the best option. Why do you want to select? What scientific hypothesis do you have which says you mist select a small subset in that way? would it not be better, especially since you have so many studies to fit a model with all the moderators and then, based on the science, test hypotheses about them?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.