Skip to contents

Searches for statistical outliers in meta-analysis results generated by meta functions or the rma.uni in the metafor package.

Usage

find.outliers(x, ...)

Arguments

x

Either (1) an object of class meta, generated by the metabin, metagen, metacont, metacor, metainc, metarate or metaprop function; or (2) and object of class rma.uni created with the rma.uni function in metafor.

...

Additional parameters for the rma.uni or update.meta function.

Value

Returns the identified outliers and the meta-analysis results when the outliers are removed. If the provided meta-analysis object is of class meta, the following objects are returned if the results of the function are saved to another object:

  • out.study.fixed: A numeric vector containing the names of the outlying studies when assuming a fixed-effect model.

  • out.study.random: A numeric vector containing the names of the outlying studies when assuming a random-effects model. The \(\tau^{2}\) estimator method.tau is inherited from x.

  • m.fixed: An object of class meta containing the results of the meta-analysis with outliers removed (assuming a fixed-effect model).

  • m.random: An object of class meta containing the results of the meta-analysis with outliers removed (assuming a random-effects model, and using the same method.tau as in the original analysis).

If the provided meta-analysis object is of class rma.uni, the following objects are returned if the results of the function are saved to another object:

  • out.study: A numeric vector containing the names of the outlying studies.

  • m: An object of class rma.uni containing the results of the meta-analysis with outliers removed (using the same settings as in the meta-analysis object provided).

Details

This function searches for outlying studies in a meta-analysis results object. Studies are defined as outliers when their 95% confidence interval lies ouside the 95% confidence interval of the pooled effect.

When outliers are found, the function automatically recalculates the meta-analysis results, using the same settings as in the object provided in x, but excluding the detected outliers.

A forest plot of the meta-analysis with outliers removed can be generated directly by plugging the output of the function into the forest function.

References

Harrer, M., Cuijpers, P., Furukawa, T.A, & Ebert, D. D. (2019). Doing Meta-Analysis in R: A Hands-on Guide. DOI: 10.5281/zenodo.2551803. Chapter 6.2

Author

Mathias Harrer & David Daniel Ebert

Examples

suppressPackageStartupMessages(library(meta))
suppressPackageStartupMessages(library(metafor))
suppressPackageStartupMessages(library(dmetar))

# Pool with meta
m1 <- metagen(TE, seTE, data = ThirdWave,
              studlab = ThirdWave$Author, comb.fixed = FALSE)
#> Warning: Use argument 'fixed' instead of 'comb.fixed' (deprecated).

# Pool with metafor
m2 <- rma(yi = TE, sei = seTE, data = ThirdWave,
          slab = ThirdWave$Author, method = "PM")

# Find outliers
fo1 <- find.outliers(m1)
fo2 <- find.outliers(m2)

# Show summary
summary(fo1)
#> Identified outliers (random-effects model) 
#> ------------------------------------------ 
#> "DanitzOrsillo", "Shapiro et al." 
#>  
#> Results with outliers removed 
#> ----------------------------- 
#> Number of studies combined: k = 16
#> 
#>                                       95%-CI    z  p-value
#> Random effects model 0.4528 [0.3347; 0.5710] 7.51 < 0.0001
#> 
#> Quantifying heterogeneity:
#>  tau^2 = 0.0139 [0.0000; 0.1032]; tau = 0.1180 [0.0000; 0.3213]
#>  I^2 = 24.8% [0.0%; 58.7%]; H = 1.15 [1.00; 1.56]
#> 
#> Test of heterogeneity:
#>      Q d.f. p-value
#>  19.95   15  0.1739
#> 
#> Details on meta-analytical method:
#> - Inverse variance method
#> - Restricted maximum-likelihood estimator for tau^2
#> - Q-profile method for confidence interval of tau^2 and tau
summary(fo2)
#> Identified outliers (PM) 
#> ------------------------- 
#> "DanitzOrsillo", "Shapiro et al." 
#>  
#> Results with outliers removed 
#> ----------------------------- 
#> 
#> Random-Effects Model (k = 16; tau^2 estimator: PM)
#> 
#> tau^2 (estimated amount of total heterogeneity): 0.0128 (SE = 0.0207)
#> tau (square root of estimated tau^2 value):      0.1130
#> I^2 (total heterogeneity / total variability):   23.42%
#> H^2 (total variability / sampling variability):  1.31
#> 
#> Test for Heterogeneity:
#> Q(df = 15) = 19.9498, p-val = 0.1739
#> 
#> Model Results:
#> 
#> estimate      se    zval    pval   ci.lb   ci.ub     ​ 
#>   0.4514  0.0596  7.5781  <.0001  0.3347  0.5682  *** 
#> 
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#> 

if (FALSE) {
# Make forest plot
# Pass additional arguments from meta & metafor's forest function
forest(fo1, prediction = TRUE)
forest(fo2, cex = .8, col = "lightblue")
}