R中的实际函数出错

时间:2018-02-15 16:53:00

标签: r factor-analysis

我使用factanal函数使用这个简单的代码:

factor_analyisi<-factanal(CFscale,factors=2,rotate="varimax")

但是我收到了这个错误:

Error in solve.default(cv) : 
  system is computationally singular: reciprocal condition number = 1.70441e-20

为什么?

这是CFscale矩阵的head

       Age X6Ckine.CCL21. BCA.1..CXCL13. ENA.78.CXCL5. EOTAXIN.CCL11.
ID2  1.3589518    -0.62230682      0.4234253    -1.0014789     -0.8840086
ID3 -1.0019921    -0.08609578      0.8596906    -0.5711517     -0.7924021
ID4  0.1621975    -0.62285177     -0.4081158    -0.6698831     -0.7941621
ID5 -0.9368626    -0.57273123     -0.3889110    -1.0381312     -0.9192960
ID7  1.1554221    -1.01596723     -0.4453790    -0.3098134     -0.8896405
ID8 -1.2136629    -0.19600220      0.1276134    -0.5717698     -0.7149634

dim(CFscale) 39 309

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

这些类型的问题都是一样的。你可以在这里看到glm版本:

https://stats.stackexchange.com/questions/76488/error-system-is-computationally-singular-when-running-a-glm

在通常在计算过程中创建线性模型(基于因子的模型)的过程中,您需要解决看起来像这样的事物:

Ab=c

其中A是系数矩阵,b是矢量,c是结果矢量。解决这个问题涉及逆转A,这基本上是你的数据(不是真的,但足够接近)。反转矩阵意味着找到A ^ -1,使

A*A^-1=I

和我是对角矩阵,对角线上有1s。当A不可反转时,它被称为单数 - 你无法解决系统问题。

从实际角度来看,这意味着问题出在数据中。当然你不想听,所以有补救措施。由于问题,通常意味着两个或多个变量高度相关。因此我建议:

  1. 检查您有理由的变量之间的相关性 怀疑是相关的 - 并删除高度相关的重复。
  2. 如果你不知道,只需检查所有对。这不是很好,因为通常两个变量可能与第三个变量相关,但这是一些东西。
  3. 最后,减少统计空间。你没有那么多变数。您可以尝试不运行每个运行,并查看是否可以解决问题。这是相关性的另一个迹象。
  4. 这也是因子分析,你只有5个变量。这是一个非常低的数量 - 通常意味着你不会期望超过1个因素,也许2.如果你得到3个,或者4个或更多因素,那么这不是你正在寻找的分析 - 重点是看看你是否可以减少你的自变量,如果你没有1-2个因素,这就不会真的那么做。由于你在寻找2个因素,这可能没有用处。