metafor 和加权 lm() 标准误差之间的差异

机器算法验证 r 荟萃分析 流明
2022-04-04 20:33:48

我和我的朋友试图理解为什么包中的加权lm()与固定效应 rma模型metafor会产生相同的元分析点估计,但这些估计的标准误差(因此p值和 95% CI)不同。

例如:

#install and call metafor package
install.packages("metafor")
library(metafor)

#read in example data for standardized mean differences and standard errors
d<-c(0.38, 0.36, -0.35, 1.55, 0.26, 1.2, 0.38, 0.46, 0.27, 0.24, -0.07, -0.26, -0.31, 1.15, 0.23, 0.29, 0.38, 0.19, 0.4, 0.15, 0.2, 0.25, 0.34)
d.se<-c(1.8, 3.49, 1.53, 4.96, 2.08, 3.48, 0.07, 0.07, 0.09, 0.09, 0.01, 0.09, 6.64, 5.08, 7.44, 0.16, 0.18, 2.05, 0.17, 0.16, 0.17, 0.22, 0.09)
d.v<-d.se*d.se

#run fixed-effects intercept-only models with lm() and metafor
lm.intercept<-lm(d ~ 1, weights=I(1/d.v))
summary(lm.intercept)

metafor.intercept<-rma(yi=d, vi=d.v, method="FE")
summary(metafor.intercept)

两种方法都产生 -0.0361 的适当估计值,但该lm()方法产生 0.02585 的标准误差(因此该估计值在p >.05 水平上不显着),而该metafor方法产生 0.0095 的标准误差(因此该估计值在p < .05 水平上显着)。您添加到模型中的主持人也会出现同样的差异(例如,d~d.se)。

我有点相信这种lm()方法会以某种方式错误地估计标准误差(我已经手动完成了这个例子的计算:这里的google doc电子表格),但我和我的朋友想更好地理解为什么/如何发生这种情况.

有谁知道是什么导致了两个模型之间标准误差的差异?

1个回答

不久前,我rma()metafor包中的函数和lm()andlme()函数(nlme包中的后者)之间进行了广泛的比较,以拟合固定和随机/混合效应模型。您可以在 metafor 软件包网站上找到它:

http://www.metafor-project.org/doku.php/tips:rma_vs_lm_and_lme

简要总结一下:当您使用带权重的lm()andlme()函数时,这适合假设权重(即抽样方差)仅在比例常数(实际上是估计的误差方差)已知的模型。这些不是文献中通常描述的标准元分析模型。