[R-meta] Question about function reporter()

Gabriel Cotlier g@b|k|m01 @end|ng |rom gm@||@com
Fri Jun 16 15:00:24 CEST 2023


Yes, I doi have many studies that provide with more than one correlation,
in agreement with the Cerde2010 dataset, and indeed as a mitake
definitely forgot to include the id corresponding to each study in my table
would be Study_ID, although I had I never included it in the
random argument.


On Fri, Jun 16, 2023 at 3:23 PM Gabriel Cotlier <gabiklm01 using gmail.com> wrote:

> Hello Wolfgang,
>
> Thank you very much for the explanation  and the link. I will go through
> it carefully.
>
> Briefly, I was trying to use '~ 1 | alloc'  (with alloc being a column in
> the table class numerical taking the sing of the correlation either -1 or
> 1)  to model whether the influence of the correlations' sing  hold for the
> alternative hypothesis that when positive the correlations --which are
> coming from different studies (or experiments in the studies)-- are the
> result of correlating a magnitud A with B; whereas when negative the
> correlations comes from correlating the same source A source with C.
> Thanks a lot again.
> Kind regards,
> Gabriel
>
>
>
> On Fri, Jun 16, 2023 at 2:34 PM Viechtbauer, Wolfgang (NP) <
> wolfgang.viechtbauer using maastrichtuniversity.nl> wrote:
>
>> There is no universal definition of what a random-effects model is, but
>> take a look at:
>>
>> https://www.metafor-project.org/doku.php/analyses:crede2010
>>
>> and especially the section "A Common Mistake when Fitting the Multilevel
>> Model". So, if your data have such a multilevel structure, then typically
>> we would add a random effect for articles and a random effect for the
>> observations within articles. Beyond this, you could do '~ 1 | alloc'
>> although it is still not clear to me what you think this is modelling.
>>
>> Best,
>> Wolfgang
>>
>> >-----Original Message-----
>> >From: Gabriel Cotlier [mailto:gabiklm01 using gmail.com]
>> >Sent: Friday, 16 June, 2023 11:45
>> >To: Viechtbauer, Wolfgang (NP)
>> >Cc: R Special Interest Group for Meta-Analysis
>> >Subject: Re: [R-meta] Question about function reporter()
>> >
>> >Hello Wolfgang,
>> >
>> >As far as I understand from your explanation, by setting random
>> variables to
>> >observe the potential influence of whether the correlations ( yi ) are
>> >positive or negative would not be a random model, is this correct?
>> >
>> >But, what if I keep moderator for grouping by Type (categorical:
>> corresponding
>> >to the method employed by the studies either "CS", "R", "E")  and would
>> include
>> >in random another "Id" that represent whether the correlations come from
>> either
>> >the same or a different study by means of the variable named "Article"
>> >(numerical: with same value for same article ) as follows:
>> >
>> >res3a <- rma.mv(yi = yi,
>> >               V = vi,
>> >               mods = ~Type - 1,
>> >               random = list(~1 | alloc, ~1 | Article),
>> >               data = dat)
>> >
>> >Could now be considered in this case a random effect model?
>> >
>> >Thanks a lot.
>> >Kind regards,
>> >Gabriel
>> >
>> >On Fri, Jun 16, 2023 at 11:45 AM Viechtbauer, Wolfgang (NP)
>> ><wolfgang.viechtbauer using maastrichtuniversity.nl> wrote:
>> >As for your actual question: That's a bit too broad. Essentially, you
>> need to
>> >familiarize yourself with what people typically report for standard RE
>> models (as
>> >reporter() does), then familiarize yourself with what people report meta-
>> >regression models (since you have a meta-regression model), and then
>> consider how
>> >the random effects structure of your model differs from a standard RE
>> model and
>> >how this might affect what to report. I am not aware of any papers that
>> will walk
>> >you through all of that. People typically learn reporting practices from
>> what
>> >other people have done, so reading lots of existing meta-analyses will
>> give you a
>> >sense of how this is done.
>> >
>> >This aside, I am not sure what you hope to accomplish by adding a random
>> effect
>> >for whether the outcome is positive or negative. Also, your model does
>> not
>> >capture any heterogeneity beyond this, so it isn't really a
>> random-effects model
>> >(or something akin to it).
>> >
>> >Best,
>> >Wolfgang
>> >
>> >>-----Original Message-----
>> >>From: Gabriel Cotlier [mailto:gabiklm01 using gmail.com]
>> >>Sent: Friday, 16 June, 2023 9:08
>> >>To: Yefeng Yang
>> >>Cc: R Special Interest Group for Meta-Analysis; Viechtbauer, Wolfgang
>> (NP)
>> >>Subject: Re: [R-meta] Question about function reporter()
>> >>
>> >>Hello,
>> >>
>> >>Wolfgang : very helpful and nourishing knowledge and guidance about the
>> >>function rma.mv() potential and complexity, thanks a lot for the
>> explanation!
>> >>Yes indeed, maybe in the "longue durée" --or not so much-- future time
>> we will
>> >be
>> >>more worried about bigger threats AI technology can pose to us ...
>> >>
>> >>Anyway, It become an interesting participative discussion afterwards.
>> >>
>> >>Maybe, I should apologize due to the lack of specificity or rugurosity
>> in my
>> >>question, since I was only thinking --but did not write it--in my
>> particular
>> >>case, mainly of an rma.rm() function with the simplest the possible
>> "random"
>> >>arguments rather than the more the complex nested random effect models,
>> such as
>> >>for instance:
>> >>
>> >>data_1 <- rma.mv(yi = yi,
>> >>                     V = vi,
>> >>                     mods = ~Type - 1,
>> >>                     random = ~1 | alloc,
>> >>                     data = dat)
>> >>
>> >>where the "alloc" variable refers just whether the correlation ( yi )
>> has either
>> >>positive or negative sign (numerical variable  taking either -1 or 1)
>> and "Type"
>> >>is a just categorical variable (of char class) composed of 3 clases
>> Types namly
>> >>"R", "E", and "CS".
>> >>
>> >>Maybe there is instead of a reporter() function output results some
>> bibliography
>> >>that can lead me to a nice manner in which I can report the results of
>> my simple
>> >>application of rma.mv() function output as an example to support the
>> bases of
>> >the
>> >>writing of my report.
>> >>
>> >>Thanks a lot.
>> >>Kind regards,
>> >>Gabriel
>> >>
>> >>On Thu, Jun 15, 2023 at 12:05 PM Yefeng Yang <yefeng.yang1 using unsw.edu.au>
>> wrote:
>> >>Actually, I have a different opinion about reporter() function. Just
>> for an open
>> >>discussion and no offensive. Instead of automatically generating an
>> analysis
>> >>report based on the fitted model (via rma()), it is probably more
>> useful to have
>> >>a helper function to automatically generate a "publication-ready" table
>> that
>> >>shows the quantities recommended by various PRISMA-related reporting
>> guidelines,
>> >>such as the name of the moderator, tau, I2, point estimate, CIs, k, t,
>> p, et al.
>> >>The analysis report is something that should be (and must be at some
>> point) done
>> >>by the analysts themselves and they are responsible for the proper
>> >>interpretation.
>> >>
>> >>Regards,
>> >>Yefeng
>> >>
>> >>________________________________________
>> >>From: R-sig-meta-analysis <r-sig-meta-analysis-bounces using r-project.org>
>> on behalf
>> >>of Viechtbauer, Wolfgang (NP) via R-sig-meta-analysis
>> <r-sig-meta-analysis using r-
>> >>project.org>
>> >>Sent: Thursday, 15 June 2023 18:38
>> >>To: R Special Interest Group for Meta-Analysis <r-sig-meta-analysis using r-
>> >>project.org>
>> >>Cc: Viechtbauer, Wolfgang (NP) <
>> wolfgang.viechtbauer using maastrichtuniversity.nl>;
>> >>Gabriel Cotlier <gabiklm01 using gmail.com>
>> >>Subject: Re: [R-meta] Question about function reporter()
>> >>
>> >>Dear Gabriel,
>> >>
>> >>You can't, since reporter() doesn't currently work for 'rma.mv'
>> objects.
>> >>
>> >>Models that can be fitted with rma() (same as rma.uni()) are relatively
>> simple
>> >>and the number of possibilities that need to be covered for translating
>> the
>> >>results from such a model into text are managable. Although even here,
>> there are
>> >>currently restrictions. For example, reporter() currently only works for
>> >>'intercept-only models' (i.e., models without moderators), it doesn't
>> work when
>> >>robust() was used on the model, and it doesn't work for location-scale
>> models.
>> >>Allowing reporter() to work with meta-regression models is on my radar,
>> but not
>> >>sure when I will get to this.
>> >>
>> >>Models that can be fitted with rma.mv() are an entirely different
>> beast. This
>> >>function allows users to fit multilevel models (with essentially no
>> limits on
>> >the
>> >>number of levels), multivariate models (with multiple correlated random
>> >effects),
>> >>network meta-analyses, phylogenetic meta-analyses, spatio-temporal
>> models,
>> >models
>> >>with random slopes, models with crossed random effects, and
>> combinations thereof
>> >>(e.g., multivariate network meta-analysis). Such models will also
>> typically
>> >>involve one or multiple moderators (e.g., to distinguish different
>> outcomes,
>> >>treatments, time points, etc.). Depending on the type of model,
>> different
>> >aspects
>> >>of the results are also more or less relevant (e.g., in a phylogenetic
>> MA, there
>> >>would be a lot of focus on the random effects for species, while in a
>> network
>> >MA,
>> >>focus would be more on contrasting the different treatments with each
>> other).
>> >>There is essentially no way in hell that one could write reporter()-like
>> >>functionality for 'rma.mv' type models that covers all these
>> >>aspects/possibilities in a sensible way.
>> >>
>> >>Of course, one could consider writing a version that only covers a few
>> special
>> >>cases; for example, models of the form rma.mv(yi, V, random = ~ 1 |
>> >>level1/level2/level3/...) or rma.mv(yi, V, random = ~ var1 | var2)
>> although the
>> >>latter type of model would often be used when var1 corresponds to
>> different
>> >>outcomes in which case the model would probably involve moderators and
>> be of the
>> >>form rma.mv(yi, V, mods = ~ outcome, random = ~ outcome | study), but
>> in the
>> >end,
>> >>the reporter() function cannot read the users mind as to what the goal
>> and focus
>> >>of their analysis was.
>> >>
>> >>Alternatively, one could generate very generic text that does cover many
>> >>possibilities, but this would add essentially nothing to just reading
>> the output
>> >>directly.
>> >>
>> >>Maybe if we wait another 20-30 years, ChatGPT (or Skynet or whatever it
>> will be
>> >>called then) will be able to do something like this automatically.
>> However, we
>> >>might be too busy fighting off the Terminators at that point to worry
>> about
>> >>rma.mv() models ...
>> >>
>> >>Best,
>> >>Wolfgang
>> >>
>> >>>-----Original Message-----
>> >>>From: R-sig-meta-analysis [mailto:
>> r-sig-meta-analysis-bounces using r-project.org] On
>> >>>Behalf Of Gabriel Cotlier via R-sig-meta-analysis
>> >>>Sent: Thursday, 15 June, 2023 6:37
>> >>>To: R Special Interest Group for Meta-Analysis
>> >>>Cc: Gabriel Cotlier
>> >>>Subject: [R-meta] Question about function reporter()
>> >>>
>> >>>Hello all,
>> >>>
>> >>>I am using an object of class "rma.mv" "rma" as :
>> >>>
>> >>>class(data)
>> >>>[1] "rma.mv" "rma"
>> >>>
>> >>>and would like to use the function reporter().
>> >>>How could this possibly be done either directly in metafor in R or
>> maybe in
>> >>>JAMOVI or in other software where the metafor package is included?
>> >>>
>> >>>Thanks a lot.
>> >>>Kind regards,
>> >>>Gabriel
>>
>

	[[alternative HTML version deleted]]



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