含两个中介变量的有调节中介分析(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
错误原因分析
- 函数误用:使用了
cfa()(验证性因子分析)函数,但实际要做的是路径分析,应该用sem()函数。 - 间接效应定义错误:lavaan中定义间接效应需要给路径系数加标签,通过标签相乘计算,不能直接用变量名相乘。
- 模型设定不全:
- 未加入中介变量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
相关产品推荐
相关产品推荐

