[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 10:38:46 CEST 2023

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 ...


>-----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