lavaan运行CFA报错缺失观测变量..constant..问题咨询
lavaan CFA 报错:missing observed variables in dataset: ..constant.. 排查
报错信息
运行cfa()函数时触发如下错误:
Error in lavaan::lavaan(model = m7f, data = dat, std.lv = TRUE, model.type = "cfa", : lavaan ERROR: missing observed variables in dataset: ..constant..
错误原因
..constant..是lavaan内部用来指代模型截距/常数项的虚拟变量,正常运行时不会要求用户数据集包含这个变量。触发该报错的核心原因是模型语法编写不符合lavaan规则:
模型定义中DiD和DiO两个因子的测量指标,给带空格的变量名额外加了双引号包裹。lavaan的模型语法原生支持带空格的变量名,不需要额外加引号,手动加R语法层面的双引号会干扰lavaan的语法解析器,导致解析逻辑错乱,误将内部虚拟变量..constant..识别为需要从数据集读取的观测变量,最终抛出缺失变量的错误。
修复方案
- 删除模型语法中所有包裹带空格变量名的双引号,修正后的模型代码如下:
m7f<-' Abs =~ IdentificationScale_1 + IdentificationScale_2 + IdentificationScale_3 Mot =~ IdentificationScale_4 + IdentificationScale_5 + IdentificationScale_6 CoE =~ IdentificationScale_7 + IdentificationScale_8 + IdentificationScale_9 AfE =~ IdentificationScale_10 + IdentificationScale_11 + IdentificationScale_12 Com =~ Compassion_1 + Compassion_2 + Compassion_3 + Compassion_4 + Compassion_5 + Compassion_6 DiD =~ Personal Distress_1 + Personal Distress_2 + Personal Distress_3 + Personal Distress_4 DiO =~ Personal Distress_5 + Personal Distress_6 + Personal Distress_7 + Personal Distress_8 ' sevfac26it<- cfa(m7f, data = dat, std.lv = TRUE)
- 运行
colnames(dat)核对所有测量指标的列名和模型中书写的名称完全匹配,重点确认带空格的Personal Distress_*系列变量的空格数量、拼写没有错误,避免因名称不匹配触发其他报错。
内容的提问来源于stack exchange,提问作者Kashelhirst
相关产品推荐
相关产品推荐

