funnel.bayesmeta {bayesmeta}R Documentation

Generate a funnel plot for a bayesmeta object.


Generates a funnel plot, showing effect estimates (y[i]) vs. their standard errors (sigma[i]).


  ## S3 method for class 'bayesmeta'
funnel(x, main=deparse(substitute(x)), xlab=expression("effect "*y[i]),
       ylab=expression("standard error "*sigma[i]),
       zero=0.0, FE=FALSE, legend=FE, ...)



a bayesmeta object.


main title for the plot.


x-axis title.


y-axis title.


value at which a vertical ‘reference’ line should be drawn (default is 0). The line can be suppressed by setting this argument to ‘NA’.


a (logical) flag indicating whether the “fixed effect” (FE) funnel (for τ=0) is supposed to be shown along with the “random effects” (RE) funnel.


a (logical) flag indicating whether a legend identifying ‘RE’ and ‘FE’ funnels is supposed to be shown.


other arguments passed to the plot() function.


Generates a funnel plot of effect estimates (y[i]) on the x-axis vs. their associated standard errors (sigma[i]) on the y-axis (Note that the y-axis is pointing downwards). For many studies (large k) and in the absence of publication (selection) bias, the plot should resemble a (more or less) symmetric “funnel” shape (Sterne et al, 2005). Presence of publication bias, i.e., selection bias due to the fact that more dramatic effects may have higher chances of publication than less pronounced (or less controversial) findings, may cause asymmetry in the plot; especially towards the bottom of the plot, studies may then populate a preferred corner.

Besides the k individual studies that are shown as circles, a vertical reference line is shown; its position is determined by the ‘zero’ argument. The “funnel” indicated in grey shows the estimated central 95% prediction interval for “new” effect estimates y[i] conditional on a particular standard error sigma[i], which results from convolving the prediction interval for the true value theta[i] with a normal distribution with variance sigma[i]^2. At sigma[i]=0 (top of the funnel), this simply corresponds to the “plain” prediction interval for theta[i]. Convolutions are computed via the convolve() function, using the algorithm described in Roever and Friede (2017).

By setting the “FE=TRUE” argument, one may request a “fixed effect” (FE) funnel along with the “random effects” (RE) funnel that is shown by default. The FE funnel is analogous to the RE funnel, except that it is based on homogeneity (τ=0).


Especially for few studies (small k), the conclusions from a forest plot are usually not very obvious (Sterne et al, 2011; Terrin et al., 2005). Publication bias often requires rather large sample sizes to become apparent; funnel plots should hence always be interpreted with caution.


Christian Roever


J.A.C. Sterne, B.J. Becker and M. Egger. The funnel plot. In: H.R. Rothstein, A.J. Sutton and M. Borenstein, eds. Publication bias in meta-analysis - prevention, assessment and adjustments. Wiley and Sons, 2005 (Chapter 5). doi: 10.1002/0470870168.ch5.

J.A.C. Sterne et al. Recommendations for examining and interpreting funnel plot asymmetry in meta-analyses of randomised controlled trials. BMJ, 343:d4002, 2011. doi: 10.1136/bmj.d4002.

N. Terrin, C.H. Schmid and J. Lau. In an empirical evaluation of the funnel plot, researchers could not visually identify publication bias. Journal of Clinical Epidemiology, 58(9):894-901, 2005. doi: 10.1016/j.jclinepi.2005.01.006.

C. Roever, T. Friede. Discrete approximation of a mixture distribution via restricted divergence. Journal of Computational and Graphical Statistics, 26(1):217-222, 2017. doi: 10.1080/10618600.2016.1276840.

See Also

bayesmeta, funnel


data("dat.egger2001", package="metafor")
es <- escalc(measure="OR", ai=ai, n1i=n1i, ci=ci, n2i=n2i,
             slab=study, data=dat.egger2001)
## Not run: 
bm <- bayesmeta(es)
funnel(bm, xlab="logarithmic odds ratio", ylab="standard error",
       main="Egger (2001) example data")

## End(Not run)

[Package bayesmeta version 2.7 Index]