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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:32:19