【发布时间】:2013-03-23 11:01:00
【问题描述】:
我正在尝试使用带有 varimax 旋转的 R 进行因子分析,但没有成功。我在 SAS 上运行完全相同的数据,可以得到结果。
在 R 中,如果我使用
fa(r=cor(m1), nfactors=8, fm="ml", rotate="varimax")
我会得到
In smc, the correlation matrix was not invertible, smc's returned as 1s
In smc, the correlation matrix was not invertible, smc's returned as 1s
Error in optim(start, FAfn, FAgr, method = "L-BFGS-B", lower = 0.005, :
L-BFGS-B needs finite values of 'fn'
In addition: Warning messages:
1: In cor.smooth(R) : Matrix was not positive definite, smoothing was done
2: In cor.smooth(R) : Matrix was not positive definite, smoothing was done
3: In log(e) : NaNs produced
如果我使用
factanal(cor(m1), factors=8)
我会得到
Error in solve.default(cv) :
system is computationally singular: reciprocal condition number = 4.36969e-19
谁能帮助我如何使用 R 成功地进行因子分析。谢谢。
Tq 提前
【问题讨论】:
-
两个函数都表明相关矩阵是奇异的。您是否查看了 SAS 文档以了解该函数在奇异矩阵的情况下的作用?也许它有一些方法可以绕过它,这就是它给出输出的原因。
-
一个更新,如果我设置因子数
-
来自 SAS 文档“每个变量与所有其他变量的平方多重相关 (SMC) 用作先前的公共估计。如果您的相关矩阵是奇异的,您应该指定 PRIORS=MAX 而不是PRIORS=SMC。”
-
如果协变量之间的自相关性很强,例如,如果您将 X1 相对于 X2 移动,保留顺序,然后取它们的差值,也会发生这种情况。
-
@Bonono 如果任何 X1 与任何 X2 序列相关,您可能会看到此消息。也就是说,如果变量 X1 具有值 {x0, x1, x2, x3, ...} 并且变量 X2 具有值 {x1, x2, x3, x4, ...},则可能会出现这种情况,其中每个值都是在时间和 X2 使 X1 的值“在时间上向前移动”。更一般地说,任何序列相关/自相关都可能在此处产生“奇异系统”。
标签: r statistics factor-analysis