R中psych包EFA与Lavaan包CFA结果不一致问题咨询
EFA(psych)转CFA(lavaan)出现标准化载荷>1、负残差的原因与解决方向
核心原因解析
模型约束逻辑的本质差异
psych包的EFA(含斜交旋转)是探索性框架,不对指标-因子的归属做绝对固定,仅通过旋转优化因子结构,残差计算基于整体协方差的拟合残差(而非CFA中单个指标的残差方差)。而lavaan的CFA是验证性框架,要求严格固定每个指标的因子归属,同时需显式定义因子间的相关性(斜交因子场景)。若CFA模型未正确设置因子相关,或强制指标归属与实际数据的隐性关联冲突,极易触发Heywood案例(标准化载荷>1、残差方差为负)。斜交旋转结果的适配误区
斜交旋转(如promax)输出的是模式矩阵(pattern matrix),反映剔除其他因子影响后的纯载荷;而CFA中估计的载荷是指标与因子的直接回归系数。当因子间相关度较高时,直接将EFA的模式载荷对应的结构套入CFA,会因模型约束过严(强制指标仅归属于一个因子,但实际指标与其他因子存在未被允许的关联),导致参数估计出现不合理值。样本量与模型复杂度的匹配问题
EFA对样本量的容忍度更高,而CFA需要足够的样本支撑参数估计(通常建议每个指标对应5-10个样本)。若3因子模型的指标数量偏少或样本量不足,参数估计的稳定性会大幅下降,进而出现反常结果。两类残差的定义差异
psych的EFA中“无负残差”指的是协方差拟合残差(观测协方差与模型预测协方差的差值),和CFA中单个指标的残差方差(指标无法被所属因子解释的变异部分)完全不是同一概念,因此EFA的残差结果无法直接推导CFA的残差表现。
可行的解决步骤
- 校验CFA模型代码:确保每个指标仅归属于EFA确定的对应因子,且显式声明因子间的相关性(例如:
f1 ~~ f2; f1 ~~ f3; f2 ~~ f3)。 - 确认EFA的因子结构清晰度:使用
fa.diagram(fa_result)或print(fa_result, sort=TRUE)检查指标的主导因子是否明确,若存在明显的交叉载荷(即使EFA中载荷值较低),需调整CFA的指标归属或合并指标。 - 评估样本量合理性:若样本量未达到CFA的最低要求,优先考虑扩充样本,或简化模型(如移除载荷极低的指标)。
- 对比正交旋转的EFA结果:先尝试将正交旋转(如varimax)得到的因子结构代入CFA,排查是否因因子间高相关性导致的异常估计。
- 参考修正指数优化模型:运行
modificationIndices(cfa_result)查看模型的潜在调整方向,若存在显著的跨因子载荷修正项,说明EFA得出的结构并不完全适配CFA的严格约束,需微调模型。
内容的提问来源于stack exchange,提问作者Mason Lowery
相关产品推荐
相关产品推荐

