[R-meta] Question about function reporter()
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 at 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 at 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 at 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 at 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 at 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 at r-project.org>
on behalf
of Viechtbauer, Wolfgang (NP) via R-sig-meta-analysis
<r-sig-meta-analysis at r-
project.org> Sent: Thursday, 15 June 2023 18:38 To: R Special Interest Group for Meta-Analysis <r-sig-meta-analysis at r- project.org> Cc: Viechtbauer, Wolfgang (NP) <
wolfgang.viechtbauer at maastrichtuniversity.nl>;
Gabriel Cotlier <gabiklm01 at 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 at 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