如何在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
相关产品推荐
相关产品推荐

