Trim-and-fill funnel plot

Funnel plot with imputed studies

MA
A funnel plot with algorithmically imputed “missing” studies that would make it symmetric, and the adjusted pooled estimate.
MAEstablished

Trim-and-fill funnel plot example

Trim-and-fill funnel plot of the passive smoking studies. Filled circles are observed studies; open circles are the seven studies imputed on the left to restore symmetry. The vertical line is the adjusted pooled estimate. Data: metadat::dat.hackshaw1998.
Family
Small-study effects and reporting bias
Purpose
Provide a sensitivity analysis for funnel asymmetry by imputing mirror-image studies.
Inputs
Study estimates with standard errors.
Software
R metafor::trimfill(), meta::trimfill(); Stata meta trimfill

What it shows

Duval and Tweedie’s trim-and-fill method estimates how many studies are missing from the sparse side of the funnel, “trims” the most extreme studies from the other side, re-estimates the center, and then “fills” in mirror images of the trimmed studies. The plot shows the observed studies, the imputed ones in a different symbol, and the adjusted pooled estimate.

How to read it

  • Filled points: observed studies.
  • Open points: imputed studies, mirror images of observed ones.
  • Vertical line: the pooled estimate after filling.
  • Funnel: pseudo-confidence limits around the adjusted estimate.

Interpretation

Seven studies are imputed on the left. The pooled odds ratio falls from 1.24 to 1.19 (95% CI 1.08 to 1.31), so the association persists under this adjustment. A reasonable conclusion is that the result is fairly robust to the kind of asymmetry trim-and-fill assumes, not that the true effect is 1.19.

Pitfalls

  • Imputed studies are not real missing studies; they are an artifact of the symmetry assumption.
  • The adjusted estimate is not a bias-corrected truth. The method performs poorly when heterogeneity is large and when asymmetry has causes other than publication bias.
  • Results depend on the estimator of the number of missing studies (\(L_0\) or \(R_0\)) and on the model.

Code

library(metafor)

data(dat.hackshaw1998, package = "metadat")

fit <- rma(yi, vi, data = dat.hackshaw1998, method = "REML")

# Trim-and-fill imputes "missing" studies to make the funnel symmetric
tf <- trimfill(fit)

funnel(tf, atransf = exp, at = log(c(0.25, 0.5, 1, 2, 4, 8)),
       pch = 21, bg = "#9fb3c8", col = "#1d4e89",
       pch.fill = 21, col.fill = "#b5452b",
       legend = list(show = "cis"),
       xlab = "Odds ratio (log scale)")
meta set yi sei
meta trimfill, funnel

References

  • Duval S, Tweedie R. Trim and fill: a simple funnel-plot-based method of testing and adjusting for publication bias in meta-analysis. Biometrics. 2000;56:455-463. doi:10.1111/j.0006-341X.2000.00455.x
  • Peters JL, Sutton AJ, Jones DR, Abrams KR, Rushton L. Performance of the trim and fill method in the presence of publication bias and between-study heterogeneity. Stat Med. 2007;26:4544-4562. doi:10.1002/sim.2889