【问题标题】:lavaan error - no standard errors computed - R熔岩错误 - 没有计算标准错误 - R
【发布时间】:2021-01-10 21:33:09
【问题描述】:

我创建了一份问卷。该问卷由四个子量表组成,测量我感兴趣的变量的 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 WARNING:优化器警告解决方案尚未完成 找到了!
lavaan WARNING: 优化器警告没有解决方案 找到了!
警告: 无法计算标准误!信息矩阵可以 不能倒置。这可能是模型不适合的症状 已确定。
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



 

有人知道它为什么不工作吗?是不是因为我的模型不够适合我的数据?

提前谢谢你!

【问题讨论】:

  • 你用过lavInspect(fit, "cov.lv")吗?输出是什么?你能显示数据吗?
  • 谢谢你的回答汤姆,我会把这些数据放在我的帖子里。
  • 也许 4 因子结构确实不是数据的基础。你检查了cor(DF)(实际上你可以向我们提供协方差矩阵而不是原始数据);例如,在样本数据中 I11I12 显示负相关。另外,我认为I1I10 具有较大的负值是估计顺序的产物;如果您将另一个项目放在各自因素的首位,我怀疑这些因素在很大程度上是负面的。但是,这个问题可能更适合stats.stackexchange

标签: r r-lavaan


【解决方案1】:

看看这个lavaan discussion。具有数千个因子方差和其他小于 1 的因子方差往往会给估计过程带来问题。

我假设某些变量(尤其是因子 1 和 4 的变量)的范围从 1 到 50,而其他变量的范围可能从 1 到 5。如果是这种情况,我建议您将变量转换为相同的CFA估计之前的边际,例如,

vars <- c("I1", "I2", "I3", "I10", "I11", "I12")
DF[, vars] <- DF[, vars] / 10

【讨论】:

  • 我之前尝试阅读所有与 lavaan 相关的讨论来分享我的问题,包括这个问题。但这对我没有帮助。所有变量的范围从 1 到 6,项目方差之间没有显着差异..
  • 我提到了那个具体的讨论,因为在第二篇文章中,Terrence Jorgensen 简洁地描述了为什么让方差至少比其他人大一倍可能是个坏主意。
  • 哦,我明白了。实际上,在 lavaan 中,第 1 项和第 10 项的方差很大(分别为 -7795.413 和 -9881.204),但这是一个错误,因为 var(DF$I1) = 1.683052 和 var(DF$I10) = 1.966163。
  • 我在我的问题中添加了一个示例(我不知道如何分享它)
  • 在您的示例数据上使用dput,您可以获得一个ASCII文本表示,您可以将其复制并粘贴到您的问题中;另见How to make a great R reproducible example
猜你喜欢
  • 1970-01-01
  • 2013-06-12
  • 2012-12-20
  • 2022-10-15
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-08
相关资源
最近更新 更多