r - 熔岩错误 - 没有计算标准错误 - R
问题描述
我创建了一份问卷。该问卷由四个子量表组成,测量我感兴趣的变量的 4 个不同组成部分。每个分量表由 3 个项目组成。每个项目是一个 6 点量表(然后每个项目的响应包含在 1 到 6 之间)。
这是我的数据样本,每一行都是一个主题:
> dput(DF[1:10, 7:18 ])
structure(list(I1 = c(3, 6, 6, 4, 5, 5, 3, 3, 5, 4), I2 = c(3,
5, 5, 6, 4, 5, 2, 5, 5, 4), I3 = c(1, 4, 2, 3, 3, 4, 4, 1, 5,
2), I4 = c(5, 6, 6, 6, 5, 6, 6, 6, 6, 6), I5 = c(5, 6, 5, 5,
6, 6, 5, 6, 5, 5), I6 = c(4, 6, 6, 6, 5, 5, 6, 4, 5, 4), I7 = c(3,
6, 5, 6, 4, 4, 3, 5, 3, 4), I8 = c(4, 6, 5, 5, 4, 4, 3, 5, 3,
5), I9 = c(4, 6, 4, 4, 5, 5, 5, 4, 4, 3), I10 = c(2, 4, 5, 6,
3, 2, 4, 1, 2, 4), I11 = c(3, 3, 4, 6, 4, 6, 5, 5, 2, 3), I12 = c(3,
6, 6, 6, 5, 4, 4, 4, 5, 5)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"))
217 名参与者完成了这份问卷(没有缺失值),我想测试我的数据是否支持我的 CFA 模型。
这是我的代码:
library(lavaan)
model <- "
Factor1 =~ I1 + I2 + I3
Factor2 =~ I4 + I5 + I6
Factor3 =~ I7 + I8 + I9
Factor4 =~ I10 + I11 + I12
"
fit <- cfa(model, data = DF)
summary(fit, fit.measures = TRUE, standardized = TRUE)
但是当我运行它时,我有以下错误,我不明白为什么。这是错误消息:
lavaan 警告:优化器警告尚未找到解决方案!
lavaan 警告:优化器警告尚未找到解决方案!
lavaan 警告:无法计算标准误差!信息矩阵不能倒置。这可能是模型未识别的症状。
lavaan 警告:一些估计的 ov 方差为负
lavaan 警告:潜在变量的协方差矩阵
不是正定的;使用 lavInspect(fit, "cov.lv") 进行调查。
这是我对 lavInspect 的看法:
> lavInspect(fit, "cov.lv")
Factr1 Factr2 Factr3 Factr4
Factor1 7797.062
Factor2 0.248 0.451
Factor3 0.215 0.182 0.289
Factor4 -0.254 -0.159 0.280 9883.238
知道因子 1 和因子 4 的这个巨大的 cov 可以用 lavaan 显示的 I1 (-7795.413) 和 I10 (-9881.204) 的非常高的方差来解释,但是如果我直接向 R 询问 var(DF$I1) 和 var( DF$I10),结果大不相同。
Variances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
.I1 -7795.413 NA -7795.413 -4729.827
.I2 1.684 NA 1.684 1.000
.I3 1.535 NA 1.535 1.000
.I4 0.807 NA 0.807 0.641
.I6 1.859 NA 1.859 0.884
.I7 1.370 NA 1.370 0.826
.I8 1.201 NA 1.201 0.832
.I9 1.681 NA 1.681 0.950
.I10 -9881.204 NA -9881.204 -4859.350
.I11 2.215 NA 2.215 1.000
.I12 0.784 NA 0.784 1.000
> var(DF$I1)
[1] 1.683052
> var(DF$I10)
[1] 1.966163
有谁知道为什么它不起作用?是因为我的模型不够适合我的数据吗?
先感谢您!
解决方案
看看这个熔岩讨论。具有数千个因子方差和其他小于 1 的因子方差往往会给估计过程带来问题。
我假设某些变量(尤其是因子 1 和 4 的变量)的范围从 1 到 50,而其他变量的范围可能从 1 到 5。如果是这种情况,我建议您在之前将变量转换为相同的边距CFA 估计,例如,
vars <- c("I1", "I2", "I3", "I10", "I11", "I12")
DF[, vars] <- DF[, vars] / 10
推荐阅读
- python - 如何在Python中对相似的序列保留顺序进行分组?
- python - 将 BeautifulSoup 和 json 组合成一个输出
- anylogic - 在 Anylogic 中使用过程建模库进行船舶航行行为
- ksqldb - KSQL查询线程数
- python - Pyspark/Databricks - org.apache.spark.SparkException:作业因阶段失败而中止:
- reactjs - 卡住:'Uncaught TypeError: this.state.users.map is not a function' in react (Axios)
- java - 如何更新 Java 中的反序列化对象?
- javascript - Apify 网络爬虫忽略 URL 片段
- python - 我使用生成器表达式有什么问题?
- vue.js - Cytoscape 布局 - 处理锁定节点