如何比较同一中介模型中两个竞争中介的效应系数及显著性?
竞争中介变量的效应显著性判断与比较问题
我有两个竞争中介变量M1和M2,均可能介导自变量RD(X)与因变量Perf(Y)之间的关系。我使用R语言的lavaan包结合Bootstrap自助法,针对同一数据集分别开展了两项中介分析:一项以M1为中介变量,另一项以M2为中介变量。结果显示,M2的间接效应(即a1*b1)标准化系数估计值为0.199,高于M1的0.170。
我想明确两个核心问题:
- 如何判断这两个中介效应是否具备统计显著性?
- 若二者均显著,能否直接得出M2对X与Y关系的中介效应强于M1的结论?
注:我的模型为有调节的中介模型,但当前仅关注中介效应的比较,暂不涉及有调节的中介效应。此前查找资料仅找到自变量系数比较的方法,未找到中介变量效应比较的相关内容。
附上我的分析代码:
# 中介变量M1的模型 ModMediation1 <- ' M1 ~ a1*RD + a2*PD + a3*RDXPD + a4*FA + a5*FS + a6*FG + a7*T Perf ~ b1*M1 + b2*FA + b3*FS + b4*FG + b5*T + c2*PD + c3*RDXPD # 间接效应定义 IndEff := a1*b1 # 有调节的中介指数 IndModMed := a3*b1 ' ModMediation1_fit <- lavaan::sem(ModMediation1, data = p2_df, se = "bootstrap", bootstrap = 10000) summary(ModMediation1_fit, fit.measures = TRUE, rsq = TRUE, standardized = TRUE, ci = TRUE) parameterestimates(ModMediation1_fit, boot.ci.type = "bca.simple", standardized = TRUE, level = 0.95) # 中介变量M2的模型 ModMediation2 <- ' M2 ~ a1*RD + a2*PD + a3*RDXPD + a4*FA + a5*FS + a6*FG + a7*T Perf ~ b1*M2 + b2*FA + b3*FS + b4*FG + b5*T + c2*PD + c3*RDXPD # 间接效应定义 IndEff := a1*b1 # 有调节的中介指数 IndModMed := a3*b1 ' ModMediation2_fit <- lavaan::sem(ModMediation2, data = p2_df, se = "bootstrap", bootstrap = 10000) summary(ModMediation2_fit, fit.measures = TRUE, rsq = TRUE, standardized = TRUE, ci = TRUE) parameterestimates(ModMediation2_fit, boot.ci.type = "bca.simple", standardized = TRUE, level = 0.95)
问题解答
一、判断单个中介效应的统计显著性
你已经采用了Bootstrap方法,直接通过**间接效应的95%置信区间(CI)**即可判断:
- 从
parameterestimates()输出中找到IndEff对应的行,查看ci.lower和ci.upper值 - 若该区间不包含0,说明该中介效应在0.05显著性水平上具备统计显著性
summary()输出中也会提供标准化效应值及对应CI,结果与上述一致
二、比较两个中介效应的强弱(是否存在显著差异)
不能仅凭系数大小直接下结论——系数差异可能由抽样误差导致,必须通过构建包含两个中介变量的单一模型,并用Bootstrap检验效应差异的显著性,步骤如下:
1. 构建联合中介模型
将M1和M2放入同一个SEM模型中,同时估计二者的间接效应,并定义效应差异:
# 包含M1和M2的联合中介模型 JointModMediation <- ' # M1的预测方程 M1 ~ a1*RD + a2*PD + a3*RDXPD + a4*FA + a5*FS + a6*FG + a7*T # M2的预测方程 M2 ~ a1_2*RD + a2_2*PD + a3_2*RDXPD + a4_2*FA + a5_2*FS + a6_2*FG + a7_2*T # 因变量Perf的预测方程(同时纳入M1和M2) Perf ~ b1*M1 + b1_2*M2 + b2*FA + b3*FS + b4*FG + b5*T + c2*PD + c3*RDXPD # 定义两个中介的间接效应 IndEff_M1 := a1*b1 IndEff_M2 := a1_2*b1_2 # 定义两个间接效应的差异(M2 - M1) IndEff_Diff := IndEff_M2 - IndEff_M1 ' # 拟合模型,使用Bootstrap估计标准误和置信区间 Joint_fit <- lavaan::sem(JointModMediation, data = p2_df, se = "bootstrap", bootstrap = 10000) # 查看结果,重点关注IndEff_Diff的置信区间 summary(Joint_fit, fit.measures = TRUE, rsq = TRUE, standardized = TRUE, ci = TRUE) parameterestimates(Joint_fit, boot.ci.type = "bca.simple", standardized = TRUE, level = 0.95)
2. 解读效应差异的显著性
- 查看
IndEff_Diff对应的95%置信区间:- 若区间不包含0,说明M2与M1的中介效应存在显著差异,此时可得出M2的中介效应更强的结论
- 若区间包含0,说明二者的效应差异无统计显著性,不能判定M2效应更强
关键提醒
- 分开建模时,两个效应的估计相互独立,无法准确比较;联合模型能控制M1与M2的共变关系,得到更严谨的效应差异估计
- 你之前的分开模型未控制两个中介变量的关联,可能导致效应估计存在偏差,联合模型是更合理的选择
内容的提问来源于stack exchange,提问作者Mel
相关产品推荐
相关产品推荐

