Lavaan能否构建形成性测量模型?变量XX测量方式及代码咨询
结构方程模型中形成性测量的建模问题与Lavaan实现方案
核心问题
- 变量XX的测量形式选择:理论上因测量核心为知识类内容,形成性测量模型更适配,但当前模型存在识别问题
- 已尝试的识别手段:固定第一个指标载荷为1;考虑过限制XX的方差为1、允许CC指标间协方差(疑问:此举能否提供新信息、是否会增加自由度)
- 关键疑问:形成性测量模型能否在Lavaan中完整建模,还是仅能通过PLS路径建模实现?若Lavaan可行,该案例的最优建模方式是什么?
解答与最优建模方案
1. Lavaan对形成性模型的支持
Lavaan完全支持形成性测量模型的建模,无需局限于PLS路径建模,且能实现比PLS更严谨的模型检验(如拟合指数、显著性检验等)。
2. 形成性模型的识别策略
形成性模型的识别需要锚定潜变量的度量单位,常用且合理的策略有两种(二选一即可,无需同时使用):
- 固定第一个指标的载荷为1:你在代码中已实现
XX <~ 1*CC,这是最常用的方法,操作简单且符合度量逻辑 - 固定潜变量的方差为1:替代方案,语法为
XX ~~ 1*XX,效果与固定第一个载荷一致
关于你提到的额外策略:
- 允许CC指标间协方差:若理论上这些指标存在共同方法变异或其他关联,可添加协方差约束,但此举不会增加自由度(反而会减少,因为多估计了协方差参数);若无理论依据,不建议随意添加,避免模型过度拟合。
- 注意:形成性模型中,指标的残差方差应自由估计,代码中
CC ~~ 1*CC是固定残差方差为1,除非有特殊理论依据,否则应删除该约束。
3. 针对该案例的代码优化建议
整理后的代码如下,修正了不合理的约束,并优化了格式:
# 原始测量模型(未打包) modPP <- ' # 测量模型 ZZ =~ AA1 + AA2 + AA3 + AA4 + AA5 + AA6 + AA7 + AA8 + AA9 + AA10 BB =~ YY1 + YY2 + YY3 + YY4 + YY5 XX <~ CC1 + CC2 + CC3 + CC4 + CC5 + CC6 + CC7 + CC8 + CC9 + CC10 + CC11 + CC12 + CC13 + CC14 + CC15 + CC16 + CC17 + CC18 + CC19 + CC20 + CC21 + CC22 + CC23 + CC24 + CC25 + CC26 + CC27 + CC28 + CC29 + CC30 + CC31 + CC32 + CC33 + CC34 + CC35 ' # 打包后的测量模型 modPP_parcel <- ' # 测量模型 ZZ =~ par1 + par2 + par3 + par4 BB =~ YY1 + YY2 + YY3 + YY4 + YY5 # 固定第一个形成性指标载荷为1,实现模型识别 XX <~ 1*CC1 + CC2 + CC3 + CC4 + CC5 + CC6 + CC7 + CC8 + CC9 + CC10 + CC11 + CC12 + CC13 + CC14 + CC15 + CC16 + CC17 + CC18 + CC19 + CC20 + CC21 + CC22 + CC23 + CC24 + CC25 + CC26 + CC27 + CC28 + CC29 + CC30 + CC31 + CC32 + CC33 + CC34 + CC35 # 路径模型 JJ ~ ZZ + BB + XX + U + T ZZ ~ U + XX + T BB ~ XX + U + ZZ + T CC1 ~ U + T # 注意:若要所有CC指标都回归U和T,需逐个列出或用循环生成 U ~ T # 残差协方差(仅当理论支持时保留) YY1 ~~ YY2 ' # 定义打包变量名 parcel.names_PP <- paste0("par", 1:4) # 执行项目打包并评估拟合 parcelAllocation(modPP_parcel, df, parcel.names_PP, modPP, nAlloc = 100, fun = "cfa", alpha = 0.05, fit.measures = c("chisq", "df", "cfi", "tli", "rmsea", "srmr"), show.progress = FALSE, iseed = 12345, do.fit = TRUE, return.fit = TRUE, warn = FALSE) # 生成打包后的数据列表 dataList <- parcelAllocation(modPP_parcel, df, parcel.names_PP, modPP, nAlloc = 100, iseed = 12345, do.fit = FALSE) # 拟合多组/缺失数据模型 fit.parcelsPP <- sem.mi(modPP_parcel, data = dataList) # 输出结果 summary(fit.parcelsPP, fit.measures = TRUE, standardized = TRUE, rsq = TRUE) # 查看警告 warnings()
额外注意事项
- 项目打包(parcelAllocation)用于反映性潜变量ZZ是合理的,但需确保打包逻辑符合理论(如按维度打包、随机打包)
- 若CC指标数量过多(35个),可考虑先进行探索性因子分析筛选核心指标,避免形成性模型过于复杂
- 形成性模型的检验重点在于指标的显著性和模型整体拟合,而非反映性模型常用的信度指标(如Cronbach's α)
内容的提问来源于stack exchange,提问作者HHKK
相关产品推荐
相关产品推荐

