Skip to contents

Conducts an influence analysis of a meta-analysis generated by meta functions, and allows to produce influence diagnostic plots.

Usage

InfluenceAnalysis(x, random = FALSE, subplot.heights = c(30,18),
    subplot.widths = c(30,30), forest.lims = 'default',
    return.separate.plots = FALSE, text.scale = 1)

Arguments

x

An object of class meta, generated by the metabin, metagen, metacont, metacor, metainc, metarate or metaprop function.

random

Logical. Should the random-effects model be used to generate the influence diagnostics? Uses the method.tau specified in the meta object if one of "DL", "HE", "SJ", "ML", "REML", "EB", "PM", "HS" or "GENQ" (to ensure compatibility with the metafor package). Otherwise, the DerSimonian-Laird ("DL"; DerSimonian & Laird, 1986) estimator is used. FALSE by default.

subplot.heights

Concatenated array of two numerics. Specifies the heights of the first (first number) and second (second number) row of the overall plot generated when plotting the results. Default is c(30,18).

subplot.widths

Concatenated array of two numerics. Specifies the widths of the first (first number) and second (second number) column of the overall results plot generated when plotting the results. Default is c(30,30).

forest.lims

Concatenated array of two numerics. Specifies the x-axis limits of the forest plots generated when plotting the results. Use "default" if standard settings should be used (this is the default).

return.separate.plots

Logical. When plotted, should the influence plots be shown as separate plots in lieu of returning them in one overall plot?

text.scale

Positive numeric. Scaling factor for the text geoms used when plotting the results. Values <1 shrink the text, while values >1 increase the text size. Default is 1.

Value

A list object of class influence.analysis containing the following objects is returned (if results are saved to a variable):

  • BaujatPlot: The Baujat plot

  • InfluenceCharacteristics: The Viechtbauer-Cheung influence characteristics plot

  • ForestEffectSize: The forest plot sorted by effect size

  • ForestI2: The forest plot sorted by between-study heterogeneity

  • Data: A data.frame containing the data used for plotting.

Otherwise, the function prints out (1) the results of the Leave-One-Out Analysis (sorted by \(I^2\)), (2) the Viechtbauer-Cheung Influence Diagnostics and (3) Baujat Plot data (sorted by heterogeneity contribution), in this order. Plots can be produced manually by plugging a saved object of class InfluenceAnalysis generated by the function into the plot function. It is also possible to only produce one specific plot by specifying the name of the plot as a character in the second argument of the plot call (see Examples).

Details

The function conducts an influence analysis using the "Leave-One-Out" paradigm internally and produces data for four influence diagnostics. Diagnostic plots can be produced by saving the output of the function to an object and plugging it into the plot function. These diagnostics may be used to determine which study or effect size may have an excessive influence on the overall results of a meta-analysis and/or contribute substantially to the between-study heterogeneity in an analysis. This may be used for outlier detection and to test the robustness of the overall results found in an analysis. Results for four diagnostics are calculated:

  • Baujat Plot: Baujat et al. (2002) proposed a plot to evaluate heterogeneity patterns in a meta-analysis. The x-axis of the Baujat plot shows the overall heterogeneity contribution of each effect size while the y-axis shows the influence of each effect size on the pooled result. The baujat function is called internally to produce the results. Effect sizes or studies with high values on both the x and y-axis may be considered to be influential cases; effect sizes or studies with high heterogeneity contribution (x-axis) and low influence on the overall results can be outliers which might be deleted to reduce the amount of between-study heterogeneity.

  • Influence Characteristics: Several influence analysis diagnostics proposed by Viechtbauer & Cheung (2010). Results are calculated by an internal call to influence.rma.uni. In the console output, potentially influential studies are marked with an asterisk (*). When plotted, effect sizes/studies determined to be influential cases using the "rules of thumb" described in Viechtbauer & Cheung (2010) are shown in red. For further details, see the documentation of the influence.rma.uni function.

  • Forest Plot for the Leave-One-Out Analysis, sorted by Effect Size: This displays the effect size and \(I^2\)-heterogeneity when omitting one of the \(k\) studies each time. The plot is sorted by effect size to determine which studies or effect sizes particularly affect the overall effect size. Results are generated by an internal call to metainf.

  • Forest Plot for the Leave-One-Out Analysis, sorted by \(I^2\): see above; results are sorted by \(I^2\) to determine the study for which exclusion results in the greatest reduction of heterogeneity.

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.3

DerSimonian R. & Laird N. (1986), Meta-analysis in clinical trials. Controlled Clinical Trials, 7, 177–188.

Viechtbauer, W., & Cheung, M. W.-L. (2010). Outlier and influence diagnostics for meta-analysis. Research Synthesis Methods, 1, 112–125.

Author

Mathias Harrer & David Daniel Ebert

Examples


if (FALSE) {
# Load 'ThirdWave' data
data(ThirdWave)

# Create 'meta' meta-analysis object
suppressPackageStartupMessages(library(meta))
meta = metagen(TE, seTE, studlab = paste(ThirdWave$Author), data=ThirdWave)

# Run influence analysis; specify to return separate plots when plotted
inf.an = InfluenceAnalysis(meta, random = TRUE,
                           return.separate.plots = TRUE)

# Show results in console
inf.an

# Generate all plots
plot(inf.an)

# For baujat plot
plot(inf.an, "baujat")

# For influence diagnostics plot
plot(inf.an, "influence")

# For forest plot sorted by effect size
plot(inf.an, "ES")

# For forest plot sorted by I-squared
plot(inf.an, "I2")}