使用lavaan包做CFA分析时报错missing observed variables: ..constant如何解决
报错原因分析
核心触发原因是模型定义语法存在笔误:你在定义ROCI因子的加载项时,将v31遗漏了变量前缀v,写成了纯数字31。lavaan不会将纯数字识别为数据集里的观测变量,会默认把它解析为固定取值的常数项,而你的输入数据集不存在对应的常数变量,因此触发了missing observed variables in dataset: ..constant..报错。
除此之外你代码还存在一处隐性问题:拟合结果赋值给了fit对象,但后续summary调用的是不存在的fit1,待当前报错解决后运行到这一步也会触发对象未找到的报错。
排查解决步骤
- 修正模型语法的笔误:把加载项末尾的
+31替换为+v31,确保所有观测变量名和数据集列名完全一致 - 提前核对变量存在性:运行
colnames(STR_Historical_Data),确认v4、v6、v7、v8、v11、v17、v18、v19、v20、v22、v24、v26、v29、v31、v32都在数据集列名列表中,排除其他拼写错误 - 修正summary的调用对象:把
summary(fit1, fitmeasures=TRUE)中的fit1替换为实际赋值的fit - 重新运行全量代码即可完成CFA拟合
修正后完整代码示例
# CFA Model model1 <- ' ROCI =~ v4+v6+v7+v8+v11+v17+v18+v19+v20+v22+v24+v26+v29+v31+v32' fit <- cfa(model1, data = STR_Historical_Data) summary(fit, fitmeasures=TRUE)
内容的提问来源于stack exchange,提问作者Mercy Sanchez
相关产品推荐
相关产品推荐

