### load BCG vaccine data
data(dat.bcg)
### calculate log risk rates and corresponding sampling variances
dat <- escalc(measure="RR", ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat.bcg)
dat.bcg$yi <- dat$yi
dat.bcg$vi <- dat$vi
ranktest(yi, vi, data=dat.bcg)
### Egger's regression test (multiplicative model)
summary(lm(yi ~ sqrt(vi), weights=1/vi, data=dat.bcg))
### Egger's regression test (fixed-effects model)
rma(yi, vi, mods=sqrt(vi), data=dat.bcg, method="FE")
### Egger's regression test (random-effects model)
rma(yi, vi, mods=sqrt(vi), data=dat.bcg, method="DL")
### Egger's test using the sampling variance as moderator
summary(lm(yi ~ vi, weights=1/vi, data=dat.bcg))
rma(yi, vi, mods=vi, data=dat.bcg, method="FE")
rma(yi, vi, mods=vi, data=dat.bcg, method="DL")
### add total sample size to data frame
dat.bcg$n.tot <- dat.bcg$tpos + dat.bcg$tneg + dat.bcg$cpos + dat.bcg$cneg
### Macaskill's test (using total sample size)
summary(lm(yi ~ n.tot, weights=1/vi, data=dat.bcg))
### Peters' test (using inverse of total sample size)
summary(lm(yi ~ I(1/n.tot), weights=1/vi, data=dat.bcg))
### note: one may consider using a pooled estimate of the sampling variance
### to reduce the correlation between yi and vi; see Macaskill et al. (2005)
### and Peters et al. (2006) for more details when using odds ratios as the
### outcome measure
### Egger's regression test using a mixed-effects model that also
### includes absolute latitude as a moderator
rma(yi, vi, mods=cbind(ablat, sei=sqrt(vi)), data=dat.bcg, method="DL")
Run the code above in your browser using DataLab