[R-meta] rma.glmm and relative risk

Michael Dewey ||@t@ @end|ng |rom dewey@myzen@co@uk
Thu Sep 5 13:17:05 CEST 2019


Dear David

My feeling is that if the log-binomial model does not converge it is 
telling you something about the data-set, possibly that it is trying to 
estimate risk ratios which would, in turn, lead to impossible 
predictions on the response scale. I must confess though this is just a 
hunch and have have zero evidence to back it up.

Michael

On 05/09/2019 09:11, David Hajage wrote:
> Dear Wolfgang,
> 
> Thank you very much for this (so complete) answer.
> 
> My request is explained by:
> - the desire to compare the results obtained with the one-step and two-step
> methods
> - the need to provide RR to a collaborator who finds the OR misleading
> 
> I fully understand the problems of convergence. What would you recommend in
> this situation?
> - provide RR after verifying that there is no convergence issues? would
> this be acceptable, or subject to questioning at the time of publication?
> - explain the possible convergence issues and convince the investigator to
> "accept" OR estimations?
> 
> Thank you again,
> Best,
> David
> 
> 
> On Wed, Sep 4, 2019 at 11:59 PM Viechtbauer, Wolfgang (SP) <
> wolfgang.viechtbauer using maastrichtuniversity.nl> wrote:
> 
>> Hi David,
>>
>> 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
>> predict(res, transf=exp)
>>
>> res <- rma.glmm(measure="OR", ai=ai, ci=ci, n1i=n1i, n2i=n2i, data=dat,
>> model="UM.RS")
>> res
>> predict(res, transf=exp)
>>
>> 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)
>> res
>> predict(res, transf=exp)
>>
>> 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"))
>> res
>> predict(res, transf=exp)
>>
>> 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"))
>>
>> Best,
>> Wolfgang
>>
>> -----Original Message-----
>> 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
>>
>> Dear all,
>>
>> 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
>> rma.glmm.
>> 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,
>>
>> Best wishes,
>> --
>> David
>>
> 
> 	[[alternative HTML version deleted]]
> 
> _______________________________________________
> R-sig-meta-analysis mailing list
> R-sig-meta-analysis using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-meta-analysis
> 
> ---
> This email has been checked for viruses by AVG.
> https://www.avg.com
> 
> 

-- 
Michael
http://www.dewey.myzen.co.uk/home.html



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