[R-meta] Can/should we code for treatment groups?
Jack Solomon
kj@j@o|omon @end|ng |rom gm@||@com
Sat Jul 31 21:08:59 CEST 2021
(Please keep the list cc'd, and I emphasize again that I'm a junior list
member, please wait for confirmation from senior list members).
My answer is inline.
>>>> Thank you for your response. I'm assuming that the logic you're
describing applies to my "measure" variable as well right (I mean "measure"
in addition to "time")?
Potentially yes. Although, in the case of "measure" (which I take to be
synonymous with "outcome" [e.g., A = depression, B = Anxiety, etc.], and
not for example some forms of a test or scale focused on the same outcome
[e.g., A = X scale for depression, B = Y scale for depression]), you noted
that your codes for different levels of it (A, B, etc.) refer to the same
thing.
Therefore, unlike "trt_grp", you "can" add a random effect to generalize
beyond the levels of "measure" itself (it's not simply an indexing
variable). Now, to your new question, the idea behind using indexing
variables (e.g., "trt_grp") is to navigate the random effects to "attach"
to the appropriate rows of your data (using the random-effects design
matrix).
[my own question/view here is that the variance component for "trt_grp" is
perhaps, then, non-interpretable?!].
In your example, it is "theoretically" possible to assume that the true
effects associated with each outcome are correlated IF they belong to the
same treatment group in the same study. In addition, it is also
"theoretically" possible that true effect sizes at different time points
are correlated IF they come from the same treatment group, same outcome,
and same study. In `rma.mv()` syntax, that would be:
list(~ measure | interaction(study, trt_grp), ~ time | interaction(study,
trt_grp, measure))
Note that the reason I keep saying theoretically is that you should test a
range of models to find the best-fitting model. For example, it is entirely
possible that at the end, you end up not using your "trt_grp" indexing
variable either partially, like:
list(~ measure | interaction(study, trt_grp), ~ time | interaction(study,
measure))
Or fully, like:
list(~ measure | study, ~ time | interaction(study, measure))
and anything else in between.
Finally, one has to also think about how the above random effect choices go
with the structure ("struct =") of their hierarchical dependence. Often
combining these two choices (1- what has to be taken random, 2- what form
the hierarchical dependence should take) creates a wide number of possible
models that can be fit to the data and compared to find a defensible model.
Just my two cents,
Jack
On Sat, Jul 31, 2021 at 1:06 PM Simon Harmel <sim.harmel using gmail.com> wrote:
> Dear Jack,
>
> Thank you for your response. I'm assuming that the logic you're describing
> applies to my "measure" variable as well right (I mean "measure" in
> addition to "time")?
>
> Many thanks,
> Simon
>
> On Sat, Jul 31, 2021 at 9:09 AM Jack Solomon <kj.jsolomon using gmail.com>
> wrote:
>
>> Dear Simon,
>>
>> I offer my two cents, my senior colleagues (perhaps Wolfgang and James)
>> on the list are welcome to further clarify. To your main question, no. You
>> need each code to represent the same thing (e.g., the same type of
>> treatment) across all studies so you could generalize beyond the observed
>> levels of "trt_grp" by adding a random-effect for it.
>>
>> That said, I think (again comments are welcome by the list members) there
>> is at least one way in which coding by simply distinguishing between
>> "treatment groups" in each study (i.e., coding any group 1, and then
>> another group 2 etc. simply for indexing purposes) might be useful.
>>
>> For example, if you intend (as your example data suggests) to fit a
>> longitudinal multilevel model, it may be more "realistic" to assume that
>> true effect sizes at different time points are correlated IF they come from
>> the same treatment group in each study; rather than simply each study as a
>> whole disregarding the groups.
>>
>> The former in `rma.mv()` syntax will be represented by: `~ time | study`
>> . The latter will be represented by: `~ time | interaction(study,
>> trt_grp)`.
>>
>> Again just my two cents,
>> Jack
>>
>>
>>
>> On Thu, Jul 29, 2021 at 4:12 PM Simon Harmel <sim.harmel using gmail.com>
>> wrote:
>>
>>> Dear Meta-Analysis Experts,
>>>
>>> My understanding is that when coding for any random feature in studies,
>>> the
>>> code (numeric or otherwise) should denote the same thing across the
>>> studies. For example, measure "A" in study 1 and study 2, 3 ... should
>>> all
>>> refer to the same thing.
>>>
>>> But some of my studies have multiple treatment groups (trt_grp) and I'm
>>> simply coding them 1, 2, ... in each study. Thus, trt_grp "1" in study 1
>>> and study 2, 3,... DON'T necessarily refer to the same thing. Same is
>>> true
>>> for "samp" (independent samples of subjects recruited in each study)
>>> across
>>> the studies.
>>>
>>> So, my question is; can "trt_grp" and "samp" be used as
>>> random-effects and be generalizable beyond their levels (or can they even
>>> be used as fixed effects)?
>>>
>>> I highly appreciate your input,
>>> Simon
>>>
>>> study samp trt_grp measure time
>>> 1 1 1 A 0
>>> 1 1 2 B 1
>>> 1 2 1 A 0
>>> 1 2 2 B 1
>>> 2 1 1 A 0
>>> 2 1 2 B 0
>>>
>>> [[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
>>>
>>
[[alternative HTML version deleted]]
More information about the R-sig-meta-analysis
mailing list