[R-meta] rma.glmm and relative risk
Viechtbauer, Wolfgang (SP)
wo||g@ng@v|echtb@uer @end|ng |rom m@@@tr|chtun|ver@|ty@n|
Wed Sep 4 23:59:49 CEST 2019
measure="RR" is not (currently) available in rma.glmm() because that would require using a log instead of the logit link and you are (much?) more likely to run into convergence problems when doing logistic mixed-effects models with a log link.
Just for the fun of it, I just pushed an update to the 'devel' version of metafor on GitHub (which you can install as described here: https://wviechtb.github.io/metafor/#installation) that adds an (undocumented) 'family' argument to rma.glmm() that allows you to change the link function (and in principle even the family, but that would be really asking for trouble). You still have to use measure="OR" -- which is a bit of a misnomer when switching to a log link -- but I didn't want to make extensive changes to rma.glmm() right now.
Let's try an example (where the outcome is not rare, because for rare outcomes, you won't see much of a difference between RRs and ORs). I'll start with the analysis using ORs:
### copy data into 'dat'
dat <- dat.linde2005
### remove studies with no response information and study with no responses in either group
dat <- dat[-c(5,6,26),]
res <- rma(measure="OR", ai=ai, ci=ci, n1i=n1i, n2i=n2i, data=dat)
res <- rma.glmm(measure="OR", ai=ai, ci=ci, n1i=n1i, n2i=n2i, data=dat, model="UM.RS")
So, using a 'normal-normal' (two-step) model and using a logistic random-effects model gives very similar results here. Okay, now let's use a 'normal-normal' model with RRs:
res <- rma(measure="RR", ai=ai, ci=ci, n1i=n1i, n2i=n2i, data=dat)
And now you can do:
res <- rma.glmm(measure="OR", ai=ai, ci=ci, n1i=n1i, n2i=n2i, data=dat, model="UM.RS", family=binomial(link="log"))
Two things to note: The results are indeed close again to those from the normal-normal model. But you also get a convergence warning (it does converge, but with some troubles).
So, feel free to play around with that. I don't know if I will leave that option in (and I'll have to go through all functions that operate on 'rma.glmm' model objects to check that nothing else breaks as a result). Use at your own risk.
In principle, one could now even move to a risk difference scale, by using an identity link:
rma(measure="RD", ai=ai, ci=ci, n1i=n1i, n2i=n2i, data=dat)
But this is even more difficult to fit and fails spectacularly here:
rma.glmm(measure="OR", ai=ai, ci=ci, n1i=n1i, n2i=n2i, data=dat, model="UM.RS", family=binomial(link="identity"))
For our beloved BCG dataset, this does work, but I had to switch to the UM.FS model:
dat <- dat.bcg
rma(measure="RD", ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat)
rma.glmm(measure="OR", ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat, model="UM.FS", family=binomial(link="identity"))
From: R-sig-meta-analysis [mailto:r-sig-meta-analysis-bounces using r-project.org] On Behalf Of David Hajage
Sent: Wednesday, 04 September, 2019 18:29
To: r-sig-meta-analysis using r-project.org
Subject: [R-meta] rma.glmm and relative risk
First, I would like to thank Mr Viechtbauer and all the contributors of the
metafor package: it is very useful and convenient piece of software.
I have a little question regarding the function ‘rma.glmm’. I have a binary
outcome, and applied the following one-step model:
> rma.glmm(measure = "OR",
+ ai = exp_event, bi = exp_noevent, ci = con_event, di = con_noevent,
+ data = ma, model="UM.RS")
I would prefer to express the results in terms of relative risk. This seems
possible when applying a two-step approach (because measure = “RR” is an
option of the function ‘escalc’), but it doesn’t seem possible with
Is there a reason for that? And is there a workaround within your package?
(I know that I can directly use glmer, but I would really prefer staying in
the workflow of metafor package).
Thank you very much for you help,
More information about the R-sig-meta-analysis