[R-meta] metafor::matreg() and its workflow

Viechtbauer, Wolfgang (SP) wo||g@ng@v|echtb@uer @end|ng |rom m@@@tr|chtun|ver@|ty@n|
Mon Dec 13 19:53:03 CET 2021


There is an upcoming talk by Suzanne Jak on MASEM at this seminar series:

https://www.srmasig.org/seminar/

Might be of interest.

Best,
Wolfgang

>-----Original Message-----
>From: Stefanou Revesz [mailto:stefanourevesz using gmail.com]
>Sent: Thursday, 09 December, 2021 23:23
>To: Viechtbauer, Wolfgang (SP)
>Cc: R meta
>Subject: Re: metafor::matreg() and its workflow
>
>Dear Wolfgang,
>
>I see, so conditioning (using predict() ) is the way to go even if
>there is a large set of conditions.
>
>Related to the above, if instead of vcov(), one intends to use G and H
>matrices (latent regression), would that also require conditioning on
>the levels of fixed effects?
>
>The other challenge that I expect to encounter (I'm preparing to do a
>meta-analysis exploring anxiety and achievement) is that correlations
>reported in each study may not reflect the same pair of variables
>across the studies. Thus, this prevents me from having a "var1.var2"
>like variable in my model which also means I can't proceed to mateg().
>I believe, in that case, I can do only an exploratory study of
>correlations (with rma.mv() ) rather than a model based one (with
>matreg() ).
>
>Thank you,
>Stefanou
>
>
>On Thu, Dec 9, 2021 at 12:24 PM Viechtbauer, Wolfgang (SP)
><wolfgang.viechtbauer using maastrichtuniversity.nl> wrote:
>>
>> I don't know what it is you are really trying to accomplish. One can stick
>moderators into the rma.mv() model, sure. So one can 'control' for them, or in
>other words, the estimated correlation matrix will then be a conditional estimate
>given a certain set of values for the moderators. That can be further passed on
>to matreg(). But I don't know if this is what you want to do, so I cannot say
>whether this is methodologically reasonable or whether a more reasonable exists -
>- to accomplish what? And what exactly is the problem of moderators in the
>rma.mv() fit?
>>
>> Best,
>> Wolfgang
>>
>> >-----Original Message-----
>> >From: Stefanou Revesz [mailto:stefanourevesz using gmail.com]
>> >Sent: Thursday, 09 December, 2021 18:40
>> >To: Viechtbauer, Wolfgang (SP)
>> >Cc: R meta
>> >Subject: Re: metafor::matreg() and its workflow
>> >
>> >Thanks Wolfgang,
>> >
>> >But is what I have done a methodologically reasonable way to do this,
>> >or a more reasonable way exists.
>> >
>> >It's great that vcov() or random effects var-covariance matrix can be
>> >obtained from an rma.mv() fit and then used in a secondary SEM
>> >framework.
>> >
>> >But it seems to me that moderators used in rma.mv() get in the way,
>> >and I often have several of them.
>> >
>> >So, is there any literature on this or a strategy to get around the
>> >problem of moderators in the rma.mv() fit?
>> >
>> >Thank you for your guidance,
>> >Stefanou
>> >
>> >On Thu, Dec 9, 2021 at 11:17 AM Viechtbauer, Wolfgang (SP)
>> ><wolfgang.viechtbauer using maastrichtuniversity.nl> wrote:
>> >>
>> >> >-----Original Message-----
>> >> >From: Stefanou Revesz [mailto:stefanourevesz using gmail.com]
>> >> >Sent: Tuesday, 07 December, 2021 23:41
>> >> >To: Viechtbauer, Wolfgang (SP)
>> >> >Cc: R meta
>> >> >Subject: Re: metafor::matreg() and its workflow
>> >> >
>> >> >Hi Wolfgang,
>> >> >
>> >> >Once again, thank you for the chapter and the two useful resources.
>> >> >For concreteness, are the last two lines OK to use or other solutions
>> >> >exist?
>> >> >
>> >> >Many thanks,
>> >> >Stefanou
>> >> >
>> >> >set.seed(0)
>> >> >dat <- dat.craft2003
>> >> >dat$Xwb <- rnorm(nrow(dat),rnorm(nrow(dat),9,4),2)
>> >> >
>> >> >tmp <- rcalc(ri ~ var1 + var2| study, ni=ni, data=dat)
>> >> >V <- tmp$V
>> >> >dat$var1.var2 <- tmp$dat$var1.var2
>> >> >
>> >> >dat$var1.var2 <- factor(dat$var1.var2,
>> >> >                        levels=c("acog.perf", "asom.perf",
>> >> >"conf.perf", "acog.asom", "acog.conf", "asom.conf"))
>> >> >
>> >> >res <- rma.mv(ri~ 0+var1.var2+sport+Xwb, V, random = ~ var1.var2 |
>> >> >study, struct="UN", data=dat)
>> >> >
>> >> >R <- vec2mat(coef(res)[1:6]) # Is this OK?
>> >>
>> >> The first 6 coefficients are the estimated pooled correlations when 'sport'
>is
>> >I and when Xwb is 0. If this is what you want, then this is ok.
>> >>
>> >> >matreg(1, 2:4, R=R, V=vcov(res)[1:6,1:6]) # Is this OK?
>> >>
>> >> If the above is ok, then this is ok.
>> >>
>> >> Best,
>> >> Wolfgang


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