如何使用lavaan包修复代码以输入协方差矩阵

时间:2019-02-18 04:23:11

标签: r

使用lavaan输入协方差矩阵时,我收到以下错误消息:

  

lav_matrix_lower2full(c(0.77,0.38,0.65,0.39,0.39,0.62,-0.25,:     p == round(p,0)不为真

我之前使用下面的代码没有问题。

Full.cor<-lav_matrix_lower2full(c(.77,.38,.65,.39,.39,.62,-.25,-.32,-.27,6.09,.31,.29,.26,-.36,7.67,.24,.25,.19,-.18,.51,1.69,-3.16,-3.56,-2,63,6.09,-3.12,-4.58,204.79,-.92,-.88,-.72,.88,-1.49,-1.41,16.53,7.24))

有什么想法我做错了吗?

1 个答案:

答案 0 :(得分:2)

来自?lav_matrix_lower2full(黑体字):

  

“ lav_matrix_vechr_reverse”(别名:“ lav_matrix_vechu_reverse”       和“ lav_matrix_lower2full”)创建对称矩阵,给出       仅下部三角形元素,逐行显示。如果对角线=       FALSE,将添加零元素对角线。

对于任何对称n × n矩阵,都有n(n+1)/2下三角元素(包括对角线)。

由于未提供正确数量的“未包装”矩阵元素而导致错误。

例如,对于一个3 × 3矩阵,我们需要提供6个元素

lav_matrix_lower2full(c(0, 1, 2, 3, 4, 5))
#     [,1] [,2] [,3]
#[1,]    0    1    3
#[2,]    1    2    4
#[3,]    3    4    5

如果我们改为这样做

lav_matrix_lower2full(c(0, 1, 2, 3, 4))

我们得到错误

  

lav_matrix_lower2full(c(0,1,2,3,4))中的错误:     p == round(p,0)不为真

在您的情况下,您有37个元素,这表明两者之一

  • 对于需要36个元素的潜在8 × 8协方差矩阵,您还有一个错误的元素,或者
  • 对于需要45个元素的潜在9 × 9协方差矩阵,您缺少8个其他元素。