鉴于每项研究都有一个单一的效应量估计(见上面的评论),可以使用常规的元回归方法进行分析。您可以使用metafor包进行此类分析。“诀窍”是对变量进行编码,以指示在特定研究中比较了哪些治疗方法:
library(metafor)
my_data$A1 <- ifelse(treat1 == "A1", 1, 0)
my_data$A2 <- ifelse(treat1 == "A2", 1, 0)
my_data$B1 <- ifelse(treat2 == "B1", -1, 0)
my_data$B2 <- ifelse(treat2 == "B2", -1, 0)
res <- rma(TE, sei=seTE, mods = ~ A1 + A2 + B1 - 1, data=my_data)
res
产量:
Mixed-Effects Model (k = 38; tau^2 estimator: REML)
tau^2 (estimated amount of residual heterogeneity): 0.2898 (SE = 0.1578)
tau (square root of estimated tau^2 value): 0.5384
I^2 (residual heterogeneity / unaccounted variability): 59.02%
H^2 (unaccounted variability / sampling variability): 2.44
Test for Residual Heterogeneity:
QE(df = 35) = 93.5215, p-val < .0001
Test of Moderators (coefficient(s) 1,2,3):
QM(df = 3) = 435.5223, p-val < .0001
Model Results:
estimate se zval pval ci.lb ci.ub
A1 2.2446 0.2837 7.9123 <.0001 1.6886 2.8006 ***
A2 0.9060 0.3387 2.6751 0.0075 0.2422 1.5699 **
B1 -2.2983 0.3467 -6.6294 <.0001 -2.9778 -1.6188 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
由于变量B2
已被忽略,这成为“参考”处理。因此, 的系数A1
是比较治疗A1
与时的估计平均效果B2
。的系数A2
是比较治疗A2
与时的估计平均效果B2
。的系数B1
是比较治疗B1
与时的估计平均效果B2
。
此处分析的网络如下所示:
A1 A2
|\ /|
| \ / |
| X |
| / \ |
|/ \|
B1 B2
因此, 和 之间的比较B1
纯粹B2
基于间接证据。
A1
除了上面的比较(即vs A2
、A1
vsB1
和A2
vs B1
)之外,这里还有 3 个比较。您可以通过更改“参考”处理来获得这些。
这里的一个假设是,无论比较如何,异质性的数量都是相同的。这可能是真的,也可能不是。
描述此类分析的文章是:
萨兰蒂等人。(2008 年)。评估随机试验网络。医学研究中的统计方法, 17,279-301。
编辑:要测试第一个因素 (A & B) 的影响是否取决于第二个因素 (1 & 2),即 (A1 vs B1) = (A2 vs B2) 与否,请首先注意:
(A1-B2) - (A2-B2) - (B1-B2) = (A1-A2) - (B1-B2)
= (A1-B1) - (A2-B2).
所以,你只需要测试是否b1 - b2 - b3 = 0
. 你可以这样做:
predict(res, newmods=c(1,-1,-1))
或安装/加载multcomp
包并使用:
summary(glht(res1, linfct=rbind(c(1,-1,-1))), test=adjusted("none"))
产生:
Simultaneous Tests for General Linear Hypotheses
Linear Hypotheses:
Estimate Std. Error z value Pr(>|z|)
1 == 0 3.6369 0.5779 6.293 3.12e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Adjusted p values reported -- none method)