Funnel plot
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.
## S3 method for class 'meta' funnel( x, xlim = NULL, ylim = NULL, xlab = NULL, ylab = NULL, comb.fixed = x$comb.fixed, comb.random = x$comb.random, axes = TRUE, pch = if (!inherits(x, "trimfill")) 21 else ifelse(x$trimfill, 1, 21), text = NULL, cex = 1, lty.fixed = 2, lty.random = 9, lwd = 1, lwd.fixed = lwd, lwd.random = lwd, col = "black", bg = "darkgray", col.fixed = "black", col.random = "black", log, yaxis, contour.levels = NULL, col.contour, ref = ifelse(is.relative.effect(x$sm), 1, 0), level = if (comb.fixed | comb.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, ... )
x |
An object of class |
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. |
comb.fixed |
A logical indicating whether the pooled fixed effect estimate should be plotted. |
comb.random |
A logical indicating whether the pooled random effects estimate should be plotted. |
axes |
A logical indicating whether axes should be drawn on the plot. |
pch |
The plotting symbol 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 symbol. |
lty.fixed |
Line type (pooled fixed effect estimate). |
lty.random |
Line type (pooled random effects estimate). |
lwd |
The line width for confidence intervals (if |
lwd.fixed |
The line width for fixed effect estimate (if
|
lwd.random |
The line width for random effects estimate (if
|
col |
A vector with colour of plotting symbols. |
bg |
A vector with background colour of plotting symbols (only
used if |
col.fixed |
Colour of line representing fixed effect estimate. |
col.random |
Colour of line representing random effects estimate. |
log |
A character string which contains |
yaxis |
A character string indicating which type of weights
are to be used. Either |
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
|
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 |
cex.studlab |
Size of study labels, see argument |
pos.studlab |
Position of study labels, see argument
|
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 |
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 |
... |
Additional graphical arguments (ignored at the moment). |
A funnel plot (Light & Pillemer, 1984) is drawn in the active
graphics window. If comb.fixed
is TRUE, the pooled estimate
of the fixed effect model is plotted as a vertical line. Similarly,
if comb.random
is TRUE, the pooled estimate of the random
effects model is plotted. If level
is not NULL, the
corresponding approximate confidence limits are drawn around the
fixed effect estimate (if comb.fixed
is TRUE) or the random
effects estimate (if comb.random
is TRUE and
comb.fixed
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
.
Guido Schwarzer sc@imbi.uni-freiburg.de, Petra Graham pgraham@efs.mq.edu.au
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
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") oldpar <- par(mfrow = c(2, 2)) # Standard funnel plot # funnel(m1) # Funnel plot with confidence intervals, fixed effect estimate and # contours # cc <- funnel(m1, comb.fixed = TRUE, level = 0.95, contour = c(0.9, 0.95, 0.99))$col.contour legend(0.05, 0.05, c("0.1 > p > 0.05", "0.05 > p > 0.01", "< 0.01"), fill = cc) # Contour-enhanced funnel plot with user-chosen colours # funnel(m1, comb.fixed = 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")) par(oldpar)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.