[R-meta] Question about longitudinal that report multiple outcomes

Viechtbauer, Wolfgang (SP) wo||g@ng@v|echtb@uer @end|ng |rom m@@@tr|chtun|ver@|ty@n|
Thu Apr 29 10:08:22 CEST 2021


Please see below.

Best,
Wolfgang

>-----Original Message-----
>From: Jack Solomon [mailto:kj.jsolomon using gmail.com]
>Sent: Thursday, 29 April, 2021 4:08
>To: Viechtbauer, Wolfgang (SP)
>Cc: r-sig-meta-analysis using r-project.org
>Subject: Re: Question about longitudinal that report multiple outcomes
>
>Dear Wolfgang,
>
>Thank you so much for your response.
>
>Wolfgang: I can't quite parse your question. We are saying that the two 1.1
>effects are dependent and that the two 1.2 effects are dependent and that the two
>2.1 effects are dependent. But the two 1.1 effects are not correlated with any of
>the other effects and so on. If this is what you meant, then yes.
>
>++++ My question is that shouldn't 1.1, and 1.1 be correlated with 1.2 and 1.2 as
>they belong to "study 1"? Is n't the goal to let the effect sizes from each study
>to be correlated with each other due to multiple outcomes and multiple time
>points, and let the effect sizes from different studies to be uncorrelated with
>each other due to being from independent studies?

Yes, but that's not the purpose of the '~ time | interaction(study,outcome)' term which you asked about. This term allows for correlation among multiple effect sizes obtained over time from the same study and the same outcome. The correlation of different outcomes from the same study occurs via the '~ outcome | study' term.

>++++ I imagine "~time | interaction(study,outcome)" is the same as "~time |
>study/outcome", correct? 

If this would work in rma.mv() (which does not), then '~ time | study/outcome' should expand into the two terms '~ time | study' and '~ time | interaction(study,outcome)' (if we would assume the same behavior as in lme()), so this is not the same as only adding '~ time | interaction(study,outcome)' or list(~ outcome | study, ~ time | interaction(study,outcome).

This aside, rma.mv() does not allow terms of the form '~ inner | outer1/outer2'. If you want to do this, then you have to do list(~ inner | outer1, ~ inner | interaction(outer1, outer2').

> If yes, why not  jus "random = ~time |
>study/outcome/esID", and instead creating "random = list(~ outcome | study, ~ time
>| study/outcome)"?

Since the answer was no, I'll skip this.

>Thank you for your knowledge,
>Jack
>
>On Wed, Apr 28, 2021 at 5:09 AM Viechtbauer, Wolfgang (SP)
><wolfgang.viechtbauer using maastrichtuniversity.nl> wrote:
>Dear Jack,
>
>Please see below for my responses.
>
>Best,
>Wolfgang
>
>>-----Original Message-----
>>From: Jack Solomon [mailto:kj.jsolomon using gmail.com]
>>Sent: Monday, 26 April, 2021 23:50
>>To: Viechtbauer, Wolfgang (SP)
>>Cc: r-sig-meta-analysis using r-project.org
>>Subject: Re: Question about longitudinal that report multiple outcomes
>>
>>Dear Wolfgang,
>>
>>Thank you very much for the kind response. I want to follow-up on two things.
>>
>>++++++First, I compared the syntax you suggest in your above response to the ones
>>you discuss here: (https://stat.ethz.ch/pipermail/r-sig-meta-analysis/2018-
>>July/000896.html), but I was not able to grasp the reasoning behind the
>syntax you
>>suggest in your above response?
>>
>>Per `?rma.mv`,  "~time | interaction(study,outcome)" would mean that effect
>>sizes with different values of "interaction(study,outcome)" are assumed to be
>>independent, while effects with the same values of the
>>"interaction(study,outcome)" share correlated random effects corresponding to the
>>levels of the "time".
>>
>>For your data example, "interaction(study,outcome)" produces 8 elements: 1.1,
>1.1,
>>1.2, 1.2, 2.1, 2.1, 3.1, 3.2, there are 3 matched pairs (e.g., 1.1, 1.1) and 2
>>unique elements (i.e., 3.1, 3.2).
>>
>>Are we saying that effect sizes corresponding to each matched pair (e.g., 1.1,
>>1.1) are dependent, but the effect sizes corresponding to the unique elements
>>(i.e., 3.1, 3.2) are independent from one another?
>
>I can't quite parse your question. We are saying that the two 1.1 effects are
>dependent and that the two 1.2 effects are dependent and that the two 2.1 effects
>are dependent. But the two 1.1 effects are not correlated with any of the other
>effects and so on. If this is what you meant, then yes.
>
>>++++++Second, I understand that the syntax you suggest in your above response
>>provides multivariate results, but if you could possibly clarify what is taken as
>>crossed (I assume 'study'), and why! and what is taken as nested and why! I can
>>better generalize this to my own meta-analysis?
>
>There is nothing crossed here. The model below specifies a hierarchical model with
>random effects for the different levels of outcome within studies and random
>effects for the different levels of time within outcomes (which in turn are nested
>within studies). So, it looks like this:
>
>     s1        s2      s3
>     /\         |      /\
>    /  \        |     /  \
>   /    \       |    /    \
>  o1    o2     o1   o1    o2
>  /\    /\     /\    |     |
> /  \  /  \   /  \   |     |
>t1  t2 t1 t2 t1  t2  t1    t1
>
>>Highly appreciate your expertise,
>>Jack
>>
>>On Mon, Apr 26, 2021 at 2:14 AM Viechtbauer, Wolfgang (SP)
>><wolfgang.viechtbauer using maastrichtuniversity.nl> wrote:
>>Hi Jack,
>>
>>That syntax won't work. Assuming the data structure is like this:
>>
>>study outcome time
>>------------------
>>1     1       1
>>1     1       2
>>1     2       1
>>1     2       2
>>2     1       1
>>2     1       2
>>3     1       1
>>3     2       1
>>
>>then I might use:
>>
>>random = list(~ outcome | study, ~ time | interaction(study,outcome))
>>
>>with maybe struct = c("CS","AR") if the different levels of 'outcome' do not have
>>any inherent meaning and are just used to distinguish different outcomes for the
>>same underlying construct. If they do, then instead of "CS" one could use "HCS"
>or
>>"UN" (in which case one might also want to use yi ~ factor(outcome)*factor(time)
>>or, equivalently, yi ~ 0 + factor(outcome) + factor(outcome):factor(time)). But
>>"HCS" and esp. "UN" adds many parameters if there are many outcomes, so this
>needs
>>to be balanced with how much data there is.
>>
>>Instead of "AR", one could also consider "HAR" or "CAR", but that again depends
>on
>>how much data there is and the spacing of the timepoints.
>>
>>Finally, strictly speaking, the 'V' matrix should then reflect not only the
>>covariances in multiple observations of the same outcome over time, but also
>among
>>different outcomes (and of different outcomes measured at different time points).
>>Constructing such a V matrix is tricky. The impute_covariance_matrix() function
>>from the clubSandwich could be useful for this (to construct an approximate V
>>matrix). This can then be followed by using cluster robust inference methods.
>>
>>Best,
>>Wolfgang
>>
>>>-----Original Message-----
>>>From: Jack Solomon [mailto:kj.jsolomon using gmail.com]
>>>Sent: Tuesday, 20 April, 2021 17:39
>>>To: r-sig-meta-analysis using r-project.org
>>>Subject: Question about longitudinal that report multiple outcomes
>>>
>>>Hi List Members,
>>>
>>>I was wondering, in this example
>>>(https://wviechtb.github.io/metafor/reference/dat.ishak2007.html), if the
>>>longitudinal studies also reported multiple outcomes, would we change our syntax
>>>to:
>>>
>>>metafor::rma.mv(yi ~ 0 + factor(time), V, random = ~ time | study / outcome,
>>>struct = "HAR", data = dat.long)
>>>
>>>Or additional changes to V also would be recommended?
>>>
>>>Thank you,
>>>Jack


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