[R-meta] Question about function reporter()

Viechtbauer, Wolfgang (NP) wo||g@ng@v|echtb@uer @end|ng |rom m@@@tr|chtun|ver@|ty@n|
Thu Jun 15 11:20:20 CEST 2023

No offense taken :)

Yes, generating tables like that is also something on my to-do list. There are dozens of packages out there that actually do this for different types of models and so it would just be a matter of adding metafor support to one or more of these packages.

I also agree that one should never use what reporter() spits out and take this at face value. On the other hand, it provides a template illustrating how results might be reported.


>-----Original Message-----
>From: Yefeng Yang [mailto:yefeng.yang1 using unsw.edu.au]
>Sent: Thursday, 15 June, 2023 11:06
>To: R Special Interest Group for Meta-Analysis
>Cc: Viechtbauer, Wolfgang (NP); Gabriel Cotlier
>Subject: Re: [R-meta] Question about function reporter()
>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
>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-
>Sent: Thursday, 15 June 2023 18:38
>To: R Special Interest Group for Meta-Analysis <r-sig-meta-analysis using r-
>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
>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 ...
>>-----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 :
>>[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,

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