[R-meta] Multilevel random effects structure in rma.mv for MetaLab
chbergm@ @end|ng |rom gm@||@com
Sat Jul 6 21:19:05 CEST 2019
We are part of the team behind MetaLab (metalab.stanford.edu), an open
platform for interactive, dynamic meta-analyses from developmental
psychology. (We'd be happy to tell you more, just get in touch!)
The meta-analyses on MetaLab are largely based on standardized mean
differences, comparing responses either within or between participants.
There is, of course, more structure in our data that we would like to model
correctly, so we have a question concerning the correct random effects
structure for our needs in rma.mv.
Typically, we have 1-n effect sizes per participant group, and 1-n effect
sizes from papers. Participant groups do usually not cross papers.
The variables concerned are thus
"unique_row": corresponds to unique effect sizes, equivalent to a row in
the data file
"paper": corresponds to unique paper, which can contain one or multiple
effect sizes ("unique_row")
"participant": corresponds to unique participants, can be different for
each "unique_row" or contribute several "unique_row" within a "paper".
We want to achieve two things:
1. Nest "unique_row" within "paper" (clustering of effect sizes within a
paper) - i.e. have effect-size level random effects for each record in our
2. Allow correlated random effects for "participant" within "paper" (in
case the same participant contributes multiple effect sizes)
One formula that was proposed to us is the following:
random = list(~ participant | paper, ~ unique_row | paper.participant)
Where, as we understand, the former corresponds to the ~inner | outer
structure. As to the latter, we are wondering whether it would correspond
to the ~ 1 | id structure, and in this case we would not rather want to
random = list(~ participant | paper, ~ 1 | paper).
Another question is whether the order in the list of random effects matters.
If you would like to dig deeper, our code lives here:
https://github.com/langcog/metalab2 - There is a github issue, if you would
like to discuss more (because some datasets are more intricate and require
a more complex approach - how fun)
An example dataset can be downloaded here:
It would then typically be analyzed with:
rma.mv(d_calc, d_var_calc, random = list(~ same_infant_calc | short_cite, 1
| short_cite), data = inworddb.csv)
(where same_infant_calc = participant; short_cite = paper)
Thanks in advance, everyone!
Sho Tsuji and Christina Bergmann
Researcher at the Max Planck Institute for Psycholinguistics, Language
Development Department, Nijmegen, The Netherlands
[[alternative HTML version deleted]]
More information about the R-sig-meta-analysis