lavaan错误 - 未计算标准误差 - R

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的巨大协方差可以通过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") 吗?输出是什么?你能展示一下数据吗? - Tom
谢谢你的回答,Tom。我会把这些数据放在我的帖子里。 - Lea_c
也许四因素结构确实不是数据的基础。您是否检查了cor(DF)(实际上,您可以提供协方差矩阵而不是原始数据)?例如,在样本数据中,I11I12显示负相关性。此外,我认为估计顺序的人为因素导致I1I10具有较大的负值;如果您在相应因素的第一位放置另一个项目,则我怀疑这些值将大部分为负。然而,这个问题可能更适合在stats.stackexchange上解决。 - Tom
1个回答

1
请看这个lavaan讨论。当因子方差在数千而其他低于1时,往往会对估计过程造成问题。
我假设一些变量(特别是1和4因子的变量)的范围从1到50,而其他变量的范围可能从1到5。如果是这种情况,我建议您在进行CFA估计之前将您的变量转换为相同的标准,例如:
vars <- c("I1", "I2", "I3", "I10", "I11", "I12")
DF[, vars] <- DF[, vars] / 10

我已经尝试阅读所有与lavaan相关的讨论,以便在分享我的问题时包含这个。但是它并没有帮助我。所有变量范围从1到6,项目方差之间没有显着差异。 - Lea_c
我提到了那个具体的讨论,因为在第二篇帖子中,特伦斯·约根森简洁地描述了为什么将方差设置为比其他方差大至少一千倍可能是一个不好的想法。 - Tom
1
哦,我明白了。实际上,在lavaan中,项目1和项目10的方差非常大(分别为-7795.413和-9881.204),但这是一个错误,因为var(DF $ I1)= 1.683052,var(DF $ I10)= 1.966163。 - Lea_c
我在我的问题中添加了一个示例(我不知道如何分享它) - Lea_c
2
使用 dput 命令可以将您的样本数据转换为 ASCII 文本表示形式,然后您可以将其复制并粘贴到您的问题中;另请参阅 如何创建一个完美的 R 可重现示例 - Tom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接