
Find Statistical Outliers in a Meta-Analysis
find.outliers.Rd
Searches for statistical outliers in meta-analysis results generated by meta
functions or the
rma.uni
in the metafor
package.
Arguments
- x
Either (1) an object of class
meta
, generated by themetabin
,metagen
,metacont
,metacor
,metainc
,metarate
ormetaprop
function; or (2) and object of classrma.uni
created with therma.uni
function inmetafor
.- ...
Additional parameters for the
rma.uni
orupdate.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}\) estimatormethod.tau
is inherited fromx
.m.fixed
: An object of classmeta
containing the results of the meta-analysis with outliers removed (assuming a fixed-effect model).m.random
: An object of classmeta
containing the results of the meta-analysis with outliers removed (assuming a random-effects model, and using the samemethod.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 classrma.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
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")
}