Learn R Programming

statsExpressions (version 1.3.5)

meta_analysis: Random-effects meta-analysis

Description

Parametric, non-parametric, robust, and Bayesian random-effects meta-analysis.

Usage

meta_analysis(
  data,
  type = "parametric",
  random = "mixture",
  k = 2L,
  conf.level = 0.95,
  ...
)

Value

The returned tibble data frame can contain some or all of the following columns (the exact columns will depend on the statistical test):

  • statistic: the numeric value of a statistic

  • df: the numeric value of a parameter being modeled (often degrees of freedom for the test)

  • df.error and df: relevant only if the statistic in question has two degrees of freedom (e.g. anova)

  • p.value: the two-sided p-value associated with the observed statistic

  • method: the name of the inferential statistical test

  • estimate: estimated value of the effect size

  • conf.low: lower bound for the effect size estimate

  • conf.high: upper bound for the effect size estimate

  • conf.level: width of the confidence interval

  • conf.method: method used to compute confidence interval

  • conf.distribution: statistical distribution for the effect

  • effectsize: the name of the effect size

  • n.obs: number of observations

  • expression: pre-formatted expression containing statistical details

For examples of dataframe outputs, see examples and this vignette.

Note that all examples are preceded by set.seed() calls for reproducibility.

Arguments

data

A dataframe. It must contain columns named estimate (effect sizes or outcomes) and std.error (corresponding standard errors). These two columns will be used:

  • as yi and sei arguments in metafor::rma (for parametric test) or metaplus::metaplus (for robust test)

  • as y and SE arguments in metaBMA::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.

random

The type of random effects distribution. One of "normal", "t-dist", "mixture", for standard normal, \(t\)-distribution or mixture of normals respectively.

k

Number of digits after decimal point (should be an integer) (Default: k = 2L).

conf.level

Scalar between 0 and 1 (default: 95% confidence/credible intervals, 0.95). If NULL, no confidence intervals will be computed.

...

Additional arguments passed to the respective meta-analysis function.

Random-effects meta-analysis

The table below provides summary about:

  • statistical test carried out for inferential statistics

  • type of effect size estimate and a measure of uncertainty for this estimate

  • functions used internally to compute these details

Hypothesis testing and Effect size estimation

TypeTestCI available?Function used
ParametricPearson's correlation coefficientYescorrelation::correlation()
Non-parametricSpearman's rank correlation coefficientYescorrelation::correlation()
RobustWinsorized Pearson correlation coefficientYescorrelation::correlation()
BayesianBayesian Pearson's correlation coefficientYescorrelation::correlation()

Examples

Run this code
if (FALSE) { # requireNamespace("metafor", quietly = TRUE)
# \donttest{
# setup
set.seed(123)
library(statsExpressions)
options(tibble.width = Inf, pillar.bold = TRUE, pillar.neg = TRUE)

# a data frame with estimates and standard errors (`mag` dataset from `{metaplus}`)
df <- structure(list(
  study = structure(c(
    8L, 10L, 15L, 1L, 4L, 11L, 3L, 2L, 14L, 9L, 12L, 5L, 16L, 7L, 13L, 6L
  ), .Label = c(
    "Abraham", "Bertschat", "Ceremuzynski", "Feldstedt", "Golf",
    "ISIS-4", "LIMIT-2", "Morton", "Pereira", "Rasmussen", "Schechter", "Schechter 1",
    "Schechter 2", "Singh", "Smith", "Thogersen"
  ), class = "factor"),
  estimate = c(
    -0.8303483, -1.056053, -1.27834, -0.0434851, 0.2231435,
    -2.40752, -1.280934, -1.191703, -0.695748, -2.208274, -2.03816,
    -0.8501509, -0.7932307, -0.2993399, -1.570789, 0.0575873
  ),
  std.error = c(
    1.24701799987009, 0.41407060026039, 0.808139200261935,
    1.42950999996502, 0.489168400451215, 1.07220799987689, 1.1937340001022,
    1.66129199992054, 0.536177600240816, 1.10964800004326, 0.780726300312728,
    0.618448600127771, 0.625866199758383, 0.146572899950844,
    0.574039500383031, 0.0316420922190679
  )
), row.names = c(NA, -16L), class = "data.frame")

meta_analysis(df) # parametric
# meta_analysis(df, type = "random", random = "normal") # robust
# meta_analysis(df, type = "bayes") # Bayesian
# }
}

Run the code above in your browser using DataLab