# [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(meta)
library(metafor)

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)

```