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

lavaan::cfa稳健估计器不收敛及数据类型判定咨询

问题背景

处理包含724名被试的HEXACO人格测试清洁数据集,执行验证性因子分析(CFA)时发现数据严重违反多元正态性(HZ = 1.000,p < 0.001),标准CFA方法不适用。目前使用R的lavaan::cfa(),设置estimator = "MLR"但模型收敛不稳定,希望明确两个核心问题。

数据详情

  • 回答量表范围为-5到5(共11个类别)
  • 已移除极端反应风格被试(超过50%答案处于量表极端值或中点)

核心问题

  • 数据违反多元正态性时,MLR是否是CFA的最佳估计器,或有更好替代方案?
  • -5到5的量表应视为连续型还是有序型处理?

模型信息

模型调用代码

first_order_fit <- cfa(first_order_model, 
                       data = final_model_data, 
                       estimator = "MLR", 
                       verbose = TRUE)

模型语法

first_order_model <- '
    a_flexibility =~ Q239 + Q274 + Q262 + Q183
    a_forgiveness =~ Q200 + Q271 + Q264 + Q222
    a_gentleness =~ Q238 + Q244 + Q272 + Q247
    a_patience =~ Q282 + Q253 + Q234 + Q226
    c_diligence =~ Q267 + Q233 + Q195 + Q193
    c_organization =~ Q260 + Q189 + Q275 + Q228
    c_perfectionism =~ Q249 + Q210 + Q263 + Q216 + Q214
    c_prudence =~ Q265 + Q270 + Q254 + Q259
    e_anxiety =~ Q185 + Q202 + Q208 + Q243 + Q261
    e_dependence =~ Q273 + Q236 + Q279 + Q211 + Q204
    e_fearfulness =~ Q217 + Q221 + Q213 + Q205
    e_sentimentality =~ Q229 + Q251 + Q237 + Q209
    h_fairness =~ Q277 + Q192 + Q219 + Q203
    h_greed_avoidance =~ Q188 + Q215 + Q255 + Q231
    h_modesty =~ Q266 + Q206 + Q258 + Q207
    h_sincerity =~ Q199 + Q223 + Q225 + Q240
    o_aesthetic_appreciation =~ Q196 + Q268 + Q281
    o_creativity =~ Q212 + Q191 + Q194 + Q242 + Q256
    o_inquisitivness =~ Q278 + Q246 + Q280 + Q186
    o_unconventionality =~ Q227 + Q235 + Q250 + Q201
    x_livelyness =~ Q220 + Q252 + Q276 + Q230
    x_sociability =~ Q218 + Q224 + Q241 + Q232
    x_social_boldness =~ Q184 + Q197 + Q190 + Q187 + Q245
    x_social_self_esteem =~ Q198 + Q269 + Q248 + Q257
'

模型说明

  • 未指定初始值
  • 未固定任何协方差

收敛状态

运行结果显示:

convergence status (0=ok): 0
nlminb message says: relative convergence (4)
number of iterations: 2493
number of function evaluations [objective, gradient]: 3300 2494
lavoptim ... done.
lavimplied ... done.
lavloglik ... done.
lavbaseline ...

模型虽显示收敛状态为0,但提示相对收敛,迭代次数较多,存在不稳定迹象。

样本数据生成代码

set.seed(123)

n_participants <- 200
n_questions <- 100

sample_data <- data.frame(
    matrix(
        sample(-5:5, n_participants * n_questions, replace = TRUE), 
        nrow = n_participants, 
        ncol = n_questions
    )
)

colnames(sample_data) <- paste0("Q", 183:282)

多元正态性检验代码

# Mardia检验
mvn_result <- mvn(data = sample_data, mvnTest = "mardia", multivariatePlot = "qq")

# HZ检验
mvn_result_hz <- mvn(data = final_model_data, mvnTest = "hz")

问题解答

关于估计器选择:MLR是否最优?

MLR是处理非正态连续数据的常用稳健估计器,通过Satorra-Bentler校正标准误和拟合指数,在非正态场景下表现优于普通ML。但也有合适的替代方案:

  1. WLSMV:若将数据视为有序分类,加权最小二乘均值和方差调整估计器是更适配的选择,专门针对有序数据设计,能避免连续近似带来的偏差。
  2. Bootstrap:可搭配任何估计器使用,通过重复抽样获取稳健标准误和置信区间,724的样本量足够支撑该方法,能有效应对非正态问题。

模型收敛不稳定优先排查设定问题:检查是否存在负方差、因子间协方差过高、载荷不合理等情况;也可尝试指定初始值,或先验证单个因子再逐步整合模型,而非直接更换估计器。

关于数据类型:连续还是有序?

-5到5的11类别量表属于宽范围有序分类数据,两种处理方式各有依据:

  1. 视为连续:当类别数≥5时,部分研究认为可近似连续处理,若数据分布均匀,MLR能接受这种近似。但如果存在地板/天花板效应、类别分布极度不均,会引入误差。
  2. 视为有序:严格来说,量表数据本质是有序分类,WLSMV能准确处理这类数据,更符合数据本质。对于人格测试的因子结构验证,推荐优先按有序数据处理,还可能改善模型收敛性。

若当前MLR模型收敛不佳,可尝试在cfa()中添加ordered = TRUE参数,切换为WLSMV估计器重新运行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:44:55