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

含两个中介变量的有调节中介分析(R语言实现报错求助)

带调节的多重中介分析(lavaan实现)问题修正

问题背景

我有数据集df2,其中IV1与IV2存在显著交互作用,希望开展多重中介分析:用M1、M2两个中介变量解释IV1与DV的关联,同时IV2调节中介变量(M1、M2)与DV之间的关系。尝试用lavaan包实现时出现错误,相关代码及错误信息如下:

数据集代码

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)

错误的lavaan代码及报错信息

model <- "
  # Regression paths from IV to mediators
  M1 ~ IV1 * IV2
  M2 ~ IV1 * IV2
  
  # Regression paths from mediators to DV
  DV ~ IV1 + IV2
  
  # Indirect effects
  indirect1 := IV1 * IV2 * M1
  indirect2 := IV1 * IV2 * M2
"

fit <- lavaan::cfa(model, data = df2)

报错:

Error in lav_partable_constraints_def(partable, con = LIST, debug = debug) : 
  lavaan ERROR: unknown label(s) in variable definition(s): IV2 M1 M2

错误原因分析

  1. 函数误用:使用了cfa()(验证性因子分析)函数,但实际要做的是路径分析,应该用sem()函数。
  2. 间接效应定义错误:lavaan中定义间接效应需要给路径系数加标签,通过标签相乘计算,不能直接用变量名相乘。
  3. 模型设定不全:
    • 未加入中介变量M1、M2到DV的路径;
    • 未体现IV2对中介-MV路径的调节作用(即M1与IV2的交互项、M2与IV2的交互项对DV的影响);
    • 原模型未完整覆盖研究假设的路径关系。

修正后的lavaan代码

# 先将IV1、IV2转为数值型(避免因子类型导致的交互项问题)
df2$IV1 <- as.numeric(df2$IV1)
df2$IV2 <- as.numeric(df2$IV2)

# 定义带标签的路径模型
model <- "
  # 1. IV对中介的回归(含IV1与IV2的交互)
  M1 ~ a1*IV1 + b1*IV2 + int1*IV1:IV2  # IV1:IV2是交互项,int1是标签
  M2 ~ a2*IV1 + b2*IV2 + int2*IV1:IV2
  
  # 2. 中介、IV及调节项对DV的回归(IV2调节中介与DV的关系)
  DV ~ c1*IV1 + c2*IV2 + d1*M1 + d2*M2 + mod1*M1:IV2 + mod2*M2:IV2
  
  # 3. 定义间接效应(分不同路径)
  # IV1通过M1到DV的直接间接效应
  indirect_M1 := a1 * d1
  # IV1通过M1及IV2调节的间接效应
  indirect_M1_mod := a1 * mod1
  # IV1通过M2到DV的直接间接效应
  indirect_M2 := a2 * d2
  # IV1通过M2及IV2调节的间接效应
  indirect_M2_mod := a2 * mod2
  # 总间接效应
  total_indirect := indirect_M1 + indirect_M1_mod + indirect_M2 + indirect_M2_mod
  # 总效应
  total_effect := c1 + total_indirect
"

# 用sem函数拟合模型,bootstrap法计算置信区间
fit <- lavaan::sem(model, data = df2, se = "bootstrap", bootstrap = 1000)

# 提取结果(含间接效应与置信区间)
mediation_results <- lavaan::parameterEstimates(fit, ci = TRUE)
print(mediation_results, digits = 3)

代码说明

  • 变量类型转换:将IV1、IV2转为数值型,确保交互项计算正常;
  • 路径标签:给每个路径系数添加标签(如a1、d1),方便后续定义间接效应;
  • 调节项加入:在DV的回归中加入M1:IV2和M2:IV2交互项,体现IV2对中介-MV关系的调节;
  • 间接效应拆分:拆分出不同路径的间接效应,更清晰对应研究假设;
  • bootstrap方法:设置se = "bootstrap"和bootstrap = 1000,用自助法计算间接效应的置信区间,更适合中介分析的统计推断。

内容的提问来源于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 00:58:11