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

R语言lavaan做CFA时fitmeasures与summary拟合指标结果不一致

lavaan包WLSMV估计CFA时不同命令拟合指标不一致问题

问题场景

使用R语言lavaan包开展验证性因子分析,模型包含2个二分有序观测变量,因数据不满足正态分布,选用WLSMV估计器,指定有序变量类型。模型代码如下:

library(lavaan)
CFA <- "
    A =~ BK01_01_z+BK03_01_z+ BK03_03_z+ BK03_04_z+BK03_05_z+ BK03_07_z+ BK03_08_z+ BK05_01_z+BK05_02_z+ BK05_03_z+ BK05_04_z 
    
    B=~GK04_01_z + GK04_02_z+ GK04_03_z+GK04_04_z+GK04_05_z 
    
    C =~ GS09_01_z+GS09_02_z
    
    Z=~A+B+C
    "

fit <- cfa(CFA, data = df_clean, estimator ="WLSMV",
           ordered = c("GS09_01_z",
                       "GS09_02_z"))

运行不同命令提取拟合指标时,结果存在明显差异:

  • 执行summary(fit, fit.measures=TRUE)输出结果:RMSEA = 0.069; CFI = 0.663; TLI = 0.609
  • 执行fitmeasures(fit, c("cfi","rmsea","srmr","tli"))输出结果:cfi = 0.964; rmsea = 0.041; srmr = 0.060; tli = 0.958

差异成因

这是lavaan在稳健估计器下的默认输出规则差异导致的,属于常见使用误区:

  1. 当使用WLSMV这类带校正的稳健估计器时,lavaan会同时计算两类拟合指标:
    • 未校正指标:基于传统正态假设、皮尔逊协方差矩阵计算的基准指标,完全不适用于带有序变量的WLSMV估计场景,结果无参考价值
    • 稳健校正指标:经过WLSMV对应的均值-方差缩放移位校正、基于适配有序变量的混合相关矩阵(连续变量用皮尔逊相关、有序变量用多重序相关)计算的指标,是这类模型应该报告的有效指标
  2. 两个命令的默认提取规则不同:
    • summary(fit, fit.measures=TRUE)会先在靠前位置输出未校正的原始指标,校正后的稳健指标会放在输出末尾的「Scaled Fit Indices」板块,多数用户不会翻到输出末尾,容易误把前面的未校正指标当成最终结果
    • fitmeasures()函数在检测到使用稳健估计器时,会默认优先返回带校正后缀的稳健指标,也就是观测到的第二组结果
  3. 可通过运行以下命令验证对应关系,输出结果中不带.scaled后缀的数值会和summary靠前位置的结果完全匹配,带.scaled后缀的数值会和fitmeasures默认输出的结果完全匹配:
fitmeasures(fit, c("cfi","cfi.scaled","rmsea","rmsea.scaled","tli","tli.scaled","srmr"))

注意事项

使用WLSMV估计包含有序变量的CFA模型时,应当报告校正后的稳健拟合指标,未校正的原始指标不具备解释意义。

内容的提问来源于stack exchange,提问作者Mara Behrend

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 01:09:24