[R-meta] [metafor] Mantel-Haenszel method - rma.mh vs meta(metabin)
Dr. Guido Schwarzer
gu|do@@chw@rzer @end|ng |rom un|k||n|k-|re|burg@de
Tue Jan 31 15:17:40 CET 2023
Hi,
The difference is actually due to using the Paule-Mandel estimator in metabin() - argument 'method.tau = "PM"' and the REML estimator in rma() - missing argument 'method' which by default is equal to "REML".
Using argument 'addyi = FALSE' in escalc() as suggested by Wolfgang and 'method = "PM"' in rma(), you get the exact same results (R code is provided below).
In metabin(), the random effects version of the MH method is only used for the DerSimonian-Laird estimator (method.tau = "DL"). Like RevMan 5, the heterogeneity statistic Q is then based on the MH estimator which is the main input to the DerSimonian-Laird estimator. This behaviour can be changed using argument 'Q.Cochrane = FALSE'. I just noticed that this point is not clear on the help page for 'meta-package'. I will add some details on this.
Best wishes,
Guido
library(readxl)
library(meta)
library(metafor)
df <- read_xlsx("Breast-Cancer-SLN-detection-RD-Jan2023-2.xlsx")
m.sln <- metabin(event.e = ICG_pos, n.e = ICG_total,
event.c = RI_pos, n.c = RI_total,
studlab = paste(Study, Year, sep = ", "), data = df,
sm = "RD", common = FALSE,
method.tau = "PM", method.random.ci = "HK",
title = "SLN detection rate")
##
m.sln$Q.Cochrane
dat <- escalc(measure = "RD",
ai = ICG_pos, ci = RI_pos, n1i = ICG_total, n2i = RI_total,
slab = paste(Study, Year, sep = ", "),
addyi = FALSE, data = df)
##
summary(dat$yi - m.sln$TE)
summary(dat$vi - m.sln$seTE^2)
res <- rma(dat, method = "PM", test = "knha")
m.sln$tau^2
res$tau2
data.frame(lower = round(m.sln$lower.random, 4),
upper = round(m.sln$upper.random, 4))
predict(res)
More information about the R-sig-meta-analysis
mailing list