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

如何在lavaan中限制因子载荷≥0?(bifactor model场景)

双因子模型中组因子载荷符号异常的解决方法

在正交双因子模型里,组因子与一般因子正交,因子的符号具有任意性(旋转操作不改变模型拟合度),你遇到的第三个组因子(c因子)部分载荷为负的情况,本质是因子方向未锚定导致的。要让载荷方向与层级模型一致,只需通过固定载荷方向来约束即可,具体操作如下:

方法1:固定单个指标载荷为正(推荐)

选择c因子下的一个核心指标(比如第一个指标C1),固定其载荷为一个正数,以此锚定整个因子的方向。这样既不会过度约束模型,又能保证其他载荷自动调整为同方向:

Bifactor<-'
  s =~ S1+S2+S3+S4+S5+S6
  p  =~ P1+P2+P3+P4+P5+P6
  c =~ 0.6*C1 + C2+C3+C4+C5+C6  # 固定C1的载荷为0.6(正数,数值可根据理论调整)
  
  g  =~ S1+S2+S3+S4+S5+S6+P1+P2+P3+P4+P5+P6+C1+C2+C3+C4+C5+C6
'

方法2:强制所有载荷非负

如果需要确保c因子下所有指标的载荷都为正,可以给每个载荷添加非负约束:

Bifactor<-'
  s =~ S1+S2+S3+S4+S5+S6
  p  =~ P1+P2+P3+P4+P5+P6
  c =~ C1+C2+C3+C4+C5+C6
  
  g  =~ S1+S2+S3+S4+S5+S6+P1+P2+P3+P4+P5+P6+C1+C2+C3+C4+C5+C6
  
  # 约束c因子的所有载荷≥0
  C1 >= 0
  C2 >= 0
  C3 >= 0
  C4 >= 0
  C5 >= 0
  C6 >= 0
'

后续拟合与验证

修改模型后,保持原有拟合代码不变即可:

Bifactor.fit<-cfa(Bifactor,data=pras,estimator="MLM", orthogonal=TRUE, std.lv=TRUE)
summary(Bifactor.fit,fit.measures=TRUE,standardized=TRUE)

注意事项

  • 优先用方法1,过度约束(方法2)可能导致模型拟合度下降,若出现这种情况,需检查指标与c因子的理论关系是否合理。
  • 对比约束前后的拟合指数(如CFI、RMSEA),确保约束未显著损害模型拟合。
  • 若固定单个载荷后仍有负载荷,可能是该指标与组因子的实际关联确实为负,需结合理论判断是否保留约束。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:30:55