funnel.meta: Funnel plot

View source: R/funnel.R

funnel.metaR Documentation

Funnel plot

Description

Draw a funnel plot which can be used to assess small study effects in meta-analysis. A contour-enhanced funnel plot can also be produced to assess causes of funnel plot asymmetry.

Usage

## S3 method for class 'meta'
funnel(
  x,
  type = "standard",
  xlim = NULL,
  ylim = NULL,
  xlab = NULL,
  ylab = NULL,
  common = x$common,
  random = x$random,
  axes = TRUE,
  pch = if (!inherits(x, "trimfill")) 21 else ifelse(x$trimfill, 1, 21),
  text = NULL,
  cex = 1,
  lty.common = 2,
  lty.random = 9,
  lwd = 1,
  lwd.common = lwd,
  lwd.random = lwd,
  col = "black",
  bg = "darkgray",
  col.common = "black",
  col.random = "black",
  log,
  yaxis,
  contour.levels = if (type == "contour") c(0.9, 0.95, 0.99) else NULL,
  col.contour = if (type == "contour") c("gray80", "gray70", "gray60") else NULL,
  ref = ifelse(is_relative_effect(x$sm), 1, 0),
  level = if (common | random) x$level else NULL,
  studlab = FALSE,
  cex.studlab = 0.8,
  pos.studlab = 2,
  ref.triangle = FALSE,
  lty.ref = 1,
  lwd.ref = lwd,
  col.ref = "black",
  lty.ref.triangle = 5,
  backtransf = x$backtransf,
  warn.deprecated = gs("warn.deprecated"),
  ...
)

setvals(x, vals = seq_along(unique(x)))

Arguments

x

An object of class meta.

type

A character string indicating type of funnel plot. Either "standard" or "contour", can be abbreviated.

xlim

The x limits (min,max) of the plot.

ylim

The y limits (min,max) of the plot.

xlab

A label for the x-axis.

ylab

A label for the y-axis.

common

A logical indicating whether the common effect estimate should be plotted.

random

A logical indicating whether the random effects estimate should be plotted.

axes

A logical indicating whether axes should be drawn on the plot.

pch

The plotting symbol(s) used for individual studies.

text

A character vector specifying the text to be used instead of plotting symbol.

cex

The magnification to be used for plotting symbols.

lty.common

Line type (common effect estimate).

lty.random

Line type (random effects estimate).

lwd

The line width for confidence intervals (if level is not NULL).

lwd.common

The line width for common effect estimate (if common is not NULL).

lwd.random

The line width for random effects estimate (if random is not NULL).

col

A vector with colour of plotting symbols.

bg

A vector with background colour of plotting symbols (only used if pch in 21:25).

col.common

Colour of line representing common effect estimate.

col.random

Colour of line representing random effects estimate.

log

A character string which contains "x" if the x-axis is to be logarithmic, "y" if the y-axis is to be logarithmic and "xy" or "yx" if both axes are to be logarithmic.

yaxis

A character string indicating which type of weights are to be used. Either "se", "invvar", "invse", "size", "invsqrtsize", or "ess".

contour.levels

A numeric vector specifying contour levels to produce contour-enhanced funnel plot.

col.contour

Colour of contours.

ref

Reference value (null effect) used to produce contour-enhanced funnel plot.

level

The confidence level utilised in the plot. For the funnel plot, confidence limits are not drawn if yaxis="size" or yaxis="invsqrtsize".

studlab

A logical indicating whether study labels should be printed in the graph. A vector with study labels can also be provided (must be of same length as x$TE then).

cex.studlab

Size(s) of study labels, see argument cex in text.

pos.studlab

Position of study labels, see argument pos in text.

ref.triangle

A logical indicating whether approximate confidence limits should be printed around reference value (null effect).

lty.ref

Line type (reference value).

lwd.ref

The line width for the reference value and corresponding confidence intervals (if ref.triangle is TRUE and level is not NULL).

col.ref

Colour of line representing reference value.

lty.ref.triangle

Line type (confidence intervals of reference value).

backtransf

A logical indicating whether results for relative summary measures (argument sm equal to "OR", "RR", "HR", or "IRR") should be back transformed in funnel plots. If backtransf=TRUE, results for sm="OR" are printed as odds ratios rather than log odds ratios, for example.

warn.deprecated

A logical indicating whether warnings should be printed if deprecated arguments are used.

...

Additional arguments (passed on to plot.default).

vals

Vector with values used in setvals (see Examples).

Details

A funnel plot (Light & Pillemer, 1984) is drawn in the active graphics window. If common is TRUE, the estimate of the common effect model is plotted as a vertical line. Similarly, if random is TRUE, the estimate of the random effects model is plotted. If level is not NULL, the corresponding approximate confidence limits are drawn around the common effect estimate (if common is TRUE) or the random effects estimate (if random is TRUE and common is FALSE).

In the funnel plot, the standard error of the treatment estimates is plotted on the y-axis by default (yaxis = "se") which is likely to be the best choice (Sterne & Egger, 2001). Only exception is meta-analysis of diagnostic test accuracy studies (Deeks et al., 2005) where the inverse of the square root of the effective study size is used (yaxis = "ess"). Other possible choices for yaxis are "invvar" (inverse of the variance), "invse" (inverse of the standard error), "size" (study size), and "invsqrtsize" (1 / sqrt(study size)).

If argument yaxis is not equal to "size", "invsqrtsize" or "ess", contour-enhanced funnel plots can be produced (Peters et al., 2008) by specifying the contour levels (argument contour.levels). By default (argument col.contour missing), suitable gray levels will be used to distinguish the contours. Different colours can be chosen by argument col.contour.

Note

R function setvals can be used to easily define the input for the arguments pch, text, cex, col, bg, and cex.studlab.

Author(s)

Guido Schwarzer guido.schwarzer@uniklinik-freiburg.de, Petra Graham pgraham@efs.mq.edu.au

References

Deeks JJ, Macaskill P, Irwig L (2005): The performance of tests of publication bias and other sample size effects in systematic reviews of diagnostic test accuracy was assessed. Journal of Clinical Epidemiology, 58:882–93

Light RJ & Pillemer DB (1984): Summing Up. The Science of Reviewing Research. Cambridge: Harvard University Press

Peters JL, Sutton AJ, Jones DR, Abrams KR, Rushton L (2008): Contour-enhanced meta-analysis funnel plots help distinguish publication bias from other causes of asymmetry. Journal of Clinical Epidemiology, 61, 991–6

Sterne JAC & Egger M (2001): Funnel plots for detecting bias in meta-analysis: Guidelines on choice of axis. Journal of Clinical Epidemiology, 54, 1046–55

See Also

metabias, metabin, metagen, radial

Examples

data(Olkin1995)
m1 <- metabin(ev.exp, n.exp, ev.cont, n.cont,
  data = Olkin1995, subset = c(41, 47, 51, 59),
  studlab = paste(author, year),
  sm = "RR", method = "I")

# Standard funnel plot
#
funnel(m1)

# Funnel plot with confidence intervals, common effect estimate and
# contours
#
fun <- funnel(m1, common = TRUE, level = 0.95, type = "contour")
legend("topleft", fun$text.contour, fill = fun$col.contour, bg = "white")

# Contour-enhanced funnel plot with user-chosen colours
#
funnel(m1, common = TRUE,
  level = 0.95, contour = c(0.9, 0.95, 0.99),
  col.contour = c("darkgreen", "green", "lightgreen"),
  lwd = 2, cex = 2, pch = 16, studlab = TRUE, cex.studlab = 1.25)
legend(0.05, 0.05,
  c("0.1 > p > 0.05", "0.05 > p > 0.01", "< 0.01"),
  fill = c("darkgreen", "green", "lightgreen"))

fun <- funnel(m1, common = TRUE,
  level = 0.95, contour = c(0.9, 0.95, 0.99),
  col.contour = c("darkgreen", "green", "lightgreen"),
  lwd = 2, cex = 2, pch = 16, studlab = TRUE, cex.studlab = 1.25)
legend(0.05, 0.05, fun$text.contour, fill = fun$col.contour)

# Use different colours for log risk ratios below and above 0
#
funnel(m1, bg = setvals(TE < 0, c("green", "red")))


meta documentation built on Oct. 31, 2024, 5:07 p.m.