Parametric, robust, and Bayesian random-effects meta-analysis.
A non-parametric meta-analysis is not available, so type = "nonparametric"
is not supported.
Usage
meta_analysis(
data,
type = "parametric",
random = "mixture",
digits = 2L,
conf.level = 0.95,
...
)Arguments
- data
A data frame. It must contain columns named
estimate(effect sizes or outcomes) andstd.error(corresponding standard errors). These two columns will be used:as
yiandseiarguments inmetafor::rma()(for parametric test)as
yiandseiarguments inmetaplus::metaplus()(for robust test)as
yandSEarguments inmetaBMA::meta_random()(for Bayesian test)
- type
A character specifying the type of statistical approach:
"parametric""nonparametric""robust""bayes"
You can specify just the initial letter (e.g.
"np"or"bf"). Matching is on the initial lowercase letter only, so any other value (including capitalized values such as"Bayes") falls back to"parametric"without a warning.- random
The type of random-effects distribution for the robust meta-analysis:
"mixture"(default; mixture of normals),"normal", or"t-dist"(t-distribution). Passed tometaplus::metaplus()and only used whentype = "robust".- digits
Number of digits for rounding or significant figures. May also be
"signif"to return significant figures or"scientific"to return scientific notation. Control the number of digits by adding the value as suffix, e.g.digits = "scientific4"to have scientific notation with 4 decimal places, ordigits = "signif5"for 5 significant figures (see alsosignif()).- conf.level
Scalar between
0and1(default:95%confidence/credible intervals,0.95).- ...
Additional arguments passed to the respective meta-analysis function.
Value
The returned object is a tibble data frame with the additional class
"statsExpressions". The exact set of columns depends on the test and, for
functions that accept a type argument, on the chosen analysis (parametric,
non-parametric, robust, or Bayesian). Any given call therefore returns some
(not all) of the columns below.
Hypothesis testing
statistic: the numeric value of a statisticdfand/ordf.error: degrees of freedom for the test. A t-test usesdf.error, a chi-squared test usesdf, and a parametric ANOVA uses both (numeratordfand denominatordf.error)p.value: the p-value associated with the observed statistic (two-sided unless a one-sidedalternativeis requested, where supported)method: the name of the inferential statistical test
Effect size estimation
effectsize: the name of the effect sizeestimate: estimated value of the effect sizeconf.level: the coverage level of the confidence/credible interval (e.g.0.95); the interval itself spansconf.lowtoconf.highconf.low: lower bound for the effect size estimateconf.high: upper bound for the effect size estimateconf.method: method used to compute the confidence/credible intervalconf.distribution: statistical distribution for the effect
Bayesian analysis (only when type = "bayes")
bf10: Bayes factor for the alternative hypothesis relative to the nulllog_e_bf10: natural logarithm of the Bayes factor (present for most, but not all, Bayesian analyses)prior.distribution,prior.scale,prior.location: prior specification used to compute the Bayes factor and posterior estimates
Pairwise comparisons (for pairwise_comparisons() and
pairwise_contingency_table())
group1,group2: the two levels being comparedp.adjust.method: the adjustment method used for multiple comparisonsp.value.adj: the adjusted p-value; returned bypairwise_contingency_table(). Note thatpairwise_comparisons()instead folds the adjusted value intop.value(and does not return a separatep.value.adjcolumn)
Common columns
n.obs: sample size used for the analysis: observations for unpaired tests, complete subjects/pairs for paired two-sample tests and ANOVAs, or studies for meta-analysisexpression: a list-column of pre-formatted plotmath expressions; each element is alanguageobject (not a character string) containing the statistical details, ready to be used in{ggplot2}(e.g. inlabs()orannotate())
For a per-function, column-by-column breakdown of the output (and an explanation
of the internal add_expression_col() engine that builds the expression
column), see the Return value schema
article. For more examples, see the Data frame outputs article.
Note
The package needed for the chosen type ({metafor}, {metaplus}, or
{metaBMA}) is only suggested, so you will be asked to install it if it is
not available.
Random-effects meta-analysis
Below is a summary of:
the statistical test carried out for inferential statistics
the type of effect size estimate and a measure of uncertainty for this estimate
the functions used internally to compute these details
Hypothesis testing and effect size estimation
| Type | Test | Effect size | CI available? | Function used |
| Parametric | Meta-analysis via random-effects models | beta | Yes | metafor::rma() |
| Robust | Meta-analysis via robust random-effects models | beta | Yes | metaplus::metaplus() |
| Bayesian | Meta-analysis via Bayesian random-effects models | beta | Yes | metaBMA::meta_random() |
Citation
Patil, I., (2021). statsExpressions: R Package for Tidy Dataframes and Expressions with Statistical Details. Journal of Open Source Software, 6(61), 3236, https://doi.org/10.21105/joss.03236
Examples
# let's use `mag` dataset from `{metaplus}`
data(mag, package = "metaplus")
dat <- dplyr::rename(mag, estimate = yi, std.error = sei)
# ----------------------- parametric ---------------------------------------
set.seed(123)
meta_analysis(dat)
#> # A tibble: 1 × 14
#> term effectsize estimate std.error conf.level conf.low
#> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 Overall meta-analytic summary estimate -0.767 0.212 0.95 -1.18
#> conf.high statistic p.value weight method conf.method
#> <dbl> <dbl> <dbl> <dbl> <chr> <chr>
#> 1 -0.351 -3.62 0.000295 NA Meta-analysis using 'metafor' Wald
#> n.obs expression
#> <int> <list>
#> 1 16 <language>
# ----------------------- robust --------------------------------------------
set.seed(123)
meta_analysis(dat, type = "robust", random = "normal")
#> # A tibble: 1 × 14
#> term effectsize estimate std.error conf.low conf.high
#> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 Overall meta-analytic summary estimate -0.746 0.234 -1.26 -0.343
#> statistic p.value weight conf.level method
#> <dbl> <dbl> <dbl> <dbl> <chr>
#> 1 -3.20 0.000501 NA 0.95 Robust meta-analysis using 'metaplus'
#> conf.method n.obs expression
#> <chr> <int> <list>
#> 1 Wald 16 <language>
# ----------------------- Bayesian ------------------------------------------
# suppress warnings about divergent transitions after warmup
set.seed(123)
suppressWarnings(meta_analysis(dat, type = "bayes"))
#> # A tibble: 2 × 20
#> term effectsize estimate std.error conf.level
#> <chr> <chr> <dbl> <dbl> <dbl>
#> 1 Overall meta-analytic posterior estimate -0.643 0.220 0.95
#> 2 tau meta-analytic posterior estimate 0.484 0.182 0.95
#> conf.low conf.high weight bf10 rhat ess component prior.distribution
#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <chr>
#> 1 -1.11 -0.242 NA 53.0 1 3507 meta Student's t
#> 2 0.205 0.909 NA 53.0 1 3460. meta Inverse gamma
#> prior.location prior.scale method conf.method
#> <dbl> <dbl> <chr> <chr>
#> 1 0 0.707 Bayesian meta-analysis using 'metaBMA' ETI
#> 2 1 0.15 Bayesian meta-analysis using 'metaBMA' ETI
#> log_e_bf10 n.obs expression
#> <dbl> <int> <list>
#> 1 3.97 16 <language>
#> 2 3.97 16 <language>
