[R-meta] Deeks’ funnel plot asymmetry test for publication bias

Viechtbauer, Wolfgang (SP) wo||g@ng@v|echtb@uer @end|ng |rom m@@@tr|chtun|ver@|ty@n|
Mon Aug 10 15:06:46 CEST 2020


Dear Tobias,

You can do this test by just setting the sampling variances of the log odds ratios to

1/(4*n1) + 1/(4*n2)
 
(where n1 and n2 are the number of cases and non-cases).

Here is an example, reproducing Figure 1 from Deeks et al. (2005) and the corresponding results from the regression test. Note that the points for studies 8 and 11 are not quite in the same place as what Figure 1 in the paper shows, so either I made a mistake in extracting the data from the Kearon et al. (1998) meta-analysis or they did. In any case, the code is correct - the results are just slightly different.

library(metafor)

dat <- read.table(header=TRUE, text = "
tp np  tn  nn
10 25  47  53
15 24  29  32
10 14  44  47
13 23 123 123
10 32  55  56
16 61 184 186
12 49 137 138
13 26  66  74
16 80  NA  NA
24 42  55  57
17 27  85  91
 5 22  45  46
18 31 240 245
24 28 104 104
26 55  81  89")

############################################################################

# remove 9th study, which has NAs for the specificity part anyway
dat <- dat[-9,]
rownames(dat) <- 1:nrow(dat)

# compute diagnostic log odds ratios and corresponding sampling variances
dat <- escalc(measure="OR", ai=tp, n1i=np, ci=nn-tn, n2i=nn, data=dat, add=1/2, to="all")
dat

# fit RE model
res <- rma(yi, vi, data=dat, method="DL")
res

############################################################################

# funnel plot with SE on the y-axis / corresponding regression test

sav <- funnel(res, atransf=exp, xlim=c(0,7), at=log(c(1, 10, 100, 1000)), 
              ylim=c(0,1.5), steps=4, back=NA, level=NA, lwd=2, lty=1)
text(sav$x+0.15, sav$y, cex=0.8)

reg <- regtest(res, model="lm")
reg

ys <- seq(0, 1.5, length=100)
lines(coef(reg$fit)[1] + coef(reg$fit)[2]*ys, ys, lwd=2, lty=3)

############################################################################

# funnel plot with total sample size on the y-axis / corresponding regression test

sav <- funnel(res, yaxis="ni", atransf=exp, xlim=c(0,7), at=log(c(1, 10, 100, 1000)), 
              ylim=c(0,300), steps=4, back=NA, level=NA, lwd=2, lty=1)
text(sav$x+0.15, sav$y, cex=0.8)

reg <- regtest(res, model="lm", predictor="ni")
reg

ys <- seq(0, 300, length=100)
lines(coef(reg$fit)[1] + coef(reg$fit)[2]*ys, ys, lwd=2, lty=3)

############################################################################

# funnel plot with 1/sqrt(ESS) on the y-axis / corresponding regression test

dat$vi <- 1/(4*dat$np) + 1/(4*dat$nn)
tmp <- rma(yi, vi, data=dat, method="DL")

sav <- funnel(tmp, atransf=exp, xlim=c(0,7), at=log(c(1, 10, 100, 1000)), 
              ylim=c(0,.15), steps=4, back=NA, level=NA, lwd=2, lty=1, refline=coef(res), ylab="1/root(ess)")
text(sav$x+0.15, sav$y, cex=0.8)

reg <- regtest(tmp, model="lm")
reg

ys <- seq(0, .15, length=100)
lines(coef(reg$fit)[1] + coef(reg$fit)[2]*ys, ys, lwd=2, lty=3)

############################################################################

Best,
Wolfgang

>-----Original Message-----
>From: R-sig-meta-analysis [mailto:r-sig-meta-analysis-bounces using r-project.org]
>On Behalf Of Tobias Saueressig
>Sent: Monday, 10 August, 2020 12:07
>To: r-sig-meta-analysis using r-project.org
>Subject: [R-meta] Deeks’ funnel plot asymmetry test for publication bias
>
>Hello,
>
>I am performing a diagnostic accuracy meta-analysis. As a check for
>publication bias/small study effects I want to use the Deeks' funnel plot
>asymmetry test for publication bias. I could not find a implementation in a
>software program. Does anybody know if there is a package that contains this
>test?
>
>Thank you in advance
>
>Tobias Saueressig


More information about the R-sig-meta-analysis mailing list