top of page

Funnel Plots

Funnel plots are a graphical representation of the observed intervention effects, plotted on the x-axis, against each study's size or precision, plotted on the y-axis. This type of plot forms a funnel shape in the absence of bias. The funnel shape occurs because as the study size increases, the precision of each study's effect estimates also increases; larger studies thus have a lower standard error and are closer to the true effect estimate. Smaller studies may have more widely spread effect estimates due to their higher variability, which scatter at the base of the funnel plot.

​

Breaking down the simple funnel plot

Each study is represented by a dot of equal size and plotted according to the observed outcome and corresponding standard error. The solid vertical line indicates the average effect size among the included studies and the dotted diagonal lines forming the funnel shape serve as the 95% CI for the aggregated studies. 

​

# Funnel plot

nstudy=10
se=y=NULL
set.seed(1234)
  for (istudy in 1:nstudy){
  se=c(se, runif(1, 0.1, 0.4))
  y=c(y, rnorm(1, sd=se))
}

random = rma(y, sei=se)
funnel(random)

 
Breaking down the contour enhanced funnel plot
The contour enhanced funnel plot depicts the same information from the included studies as the simple funnel plot, but has additional shaded areas which represent different confidence intervals. In the example, the white region of the funnel corresponds with the 90% CI, the white and light gray regions correspond with the 95% CI, and the white, light gray, and dark gray regions correspond with the 99% CI, though these levels of confidence may be adjusted in the R code.
​

# Contour enhanced funnel plot

nstudy=10
se=y=NULL
set.seed(1234)
  for (istudy in 1:nstudy){
  se=c(se, runif(1, 0.1, 0.4))
  y=c(y, rnorm(1, sd=se))
}

random = rma(y, sei=se)
funnel(random, level=c(90, 95, 99), shade=c("white", "gray", "darkgray"), refline=0)

bottom of page