You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中实现含两个中介变量的双路径中介分析?

双中介变量的因果中介分析实现(R语言)

核心思路

要实现自变量通过两个并行中介变量作用于因变量的因果中介分析,可使用mediation包完成:通过拟合多变量中介模型和包含所有中介变量的结果模型,再用mediate()函数计算中介效应,最终得到你需要的格式输出。

步骤1:加载依赖包与数据

首先加载所需包,并用你提供的代码生成数据集:

# 加载包
library(mediation)

# 生成数据集
id <- rep(c(1, 2, 3), each = 4)
IV1 <- rep(c(2, 1), each = 2, times = 3)
IV2 <- rep(c(1, 2), times = 6)
DV <- c(4,3,2,4,4,4,5,4,4,4,3,5)
M1 <- c(1,1,1,3,3,5,3,4,3,4,2,4)
M2 <- c(3,4,4,4,4,5,4,5,4,4,4,4)
df2 <- data.frame(id, IV1, IV2, DV, M1, M2)

步骤2:IV1的双中介分析

拟合模型

  • 中介模型:以M1和M2为联合因变量,IV1为自变量
  • 结果模型:以DV为因变量,IV1、M1、M2为自变量
# 拟合多变量中介模型
med_model_IV1 <- lm(cbind(M1, M2) ~ IV1, data = df2)
# 拟合结果模型
out_model_IV1 <- lm(DV ~ IV1 + M1 + M2, data = df2)

# 运行中介分析,bootstrap抽样1000次(可按需调整次数)
result_IV1 <- mediate(med_model_IV1, out_model_IV1, 
                      treat = "IV1", mediator = c("M1", "M2"),
                      boot = TRUE, sims = 1000)

查看输出

执行summary(result_IV1)即可得到目标格式结果,输出包含:

  • 单个中介变量的ACME(平均因果中介效应)
  • 总ACME(两个中介效应之和)
  • ADE(平均直接效应)
  • 总效应、中介比例等统计量

步骤3:IV2的双中介分析

重复上述流程,替换自变量为IV2即可:

# 拟合多变量中介模型
med_model_IV2 <- lm(cbind(M1, M2) ~ IV2, data = df2)
# 拟合结果模型
out_model_IV2 <- lm(DV ~ IV2 + M1 + M2, data = df2)

# 运行中介分析
result_IV2 <- mediate(med_model_IV2, out_model_IV2, 
                      treat = "IV2", mediator = c("M1", "M2"),
                      boot = TRUE, sims = 1000)

# 查看结果
summary(result_IV2)

可选:考虑重复测量的混合效应模型

如果数据存在重复测量(如示例中的id为重复观测单位),可使用lme4包拟合混合效应模型适配分层数据:

library(lme4)

# IV1的混合效应中介分析
med_lmer_IV1 <- lmer(cbind(M1, M2) ~ IV1 + (1|id), data = df2)
out_lmer_IV1 <- lmer(DV ~ IV1 + M1 + M2 + (1|id), data = df2)
result_lmer_IV1 <- mediate(med_lmer_IV1, out_lmer_IV1, 
                           treat = "IV1", mediator = c("M1", "M2"),
                           boot = TRUE, sims = 1000)
summary(result_lmer_IV1)

内容的提问来源于stack exchange,提问作者aesm315

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 01:57:51