当协方差矩阵不是正定时,如何进行因子分析?


11

我有一个数据集,其中包含717个观测值(行),这些观测值由33个变量(列)描述。通过对所有变量进行z评分来标准化数据。没有两个变量是线性相关的()。我还删除了所有方差很小(小于)的变量。下图显示了相应的相关矩阵(以绝对值表示)。0.1r=10.1

当我尝试factoran在Matlab中使用以下方法运行因子分析时:

[Loadings1,specVar1,T,stats] = factoran(Z2,1);

我收到以下错误:

The data X must have a covariance matrix that is positive definite.

你能告诉我问题出在哪里吗?是否由于使用的变量之间相互依存性较低?另外,我该怎么办?


我的相关矩阵:

在此处输入图片说明


3
我认为这是相互依存度低的相反问题。您可能有一些变量之间线性相关,这会导致协方差矩阵是半确定的(即,具有一些零本征值)。
usεr11852

3
对于投票否决问题的人们来说:为什么样本协方差矩阵的正定性问题在这里会成为话题?用户担心为什么因子分析的标准应用程序不起作用。如果需要,请索取更多信息!
usεr11852

2
您能否计算并呈现样本协方差矩阵的特征值?(例如eig(cov(Z2)))。我强烈怀疑其中一些很小。
usεr11852

3
我同意@usεr11852:似乎这个问题被误认为是题外话(我自己投票决定将其关闭)。它的确看起来像是一个编程问题,但实际上是一个完全合理且合理的问题。我对其进行了编辑,并投票决定重新开放。可惜OP似乎已经消失了。
变形虫说恢复莫妮卡2015年

3
我认为这个问题可能有一些统计内容,而Matlab社区将无法提供帮助。您如何计算Z2矩阵?如果您的数据中缺少值,那么当使用数据的不同子样本计算矩阵中的不同相关性时,成对删除可能会使矩阵变得不可逆。
StasK 2015年

Answers:


1

让我们用定义相关矩阵。因为它是半正定的,但不是正定的,它的频谱分解看起来像 其中的列包括正交的特征向量和 0 \ end {pmatrix} 是一个对角矩阵,其中包含与的特征向量相对应的特征。其中一些是C

C=QDQ1,
QC
D=(λ1000λ2λn00000)
Q0。此外,是的等级。nC

恢复正定性的一种简单方法是将特征值设置为数值上非零的某个值,例如因此,设置 其中 然后,0

λn+1,λn+2,...=1015.
C~=QD~Q1,
D~=(λ1000λ2λn10150001015)

在Matlab中,可以使用以下命令获得:Q,D

[Q,D] = eig(C)

构造只是简单的Matrix操作。C~

备注:很难说这如何影响因素分析。因此,可能应该谨慎使用这种方法。而且,即使这是一个是一个相关矩阵,也可能不是。因此,可能需要对条目进行另一种标准化。CC~


0

您的矩阵可能会遇到数值问题。它实际上可能是正定的,但数值计算则相反。

在这种情况下,一种非常常见的解决方案是为所有对角线元素添加一个非常低的值(例如1.E-10)。如果这样做不能解决问题,请尝试逐渐增加该值。


对角线条目似乎已经占据主导地位。您认为这会有所帮助吗?
乔纳斯(Jonas)'18

我担心第八和第十项,如果有些是线性相关的,那一定是这两个。我对实际的本征分解计算还不太了解,但我认为这种解决方案可以起作用:对角线添加1e-10不会对线性相关性有多大影响,但是它可能只是添加了数字上必要的内容,因此本征值的计算是固定的(即无0本征值)。但是,如果我的解决方案不起作用,我会发现您的解决方案很不错。
Romain Reboulleau

-2

当您的数据是高斯型时,FA效果最好,因此您可能想尝试一些预处理方法来获得更像高斯型的数据。


这个答案让我感到困惑。对不相关数据进行FA的意义是什么?
ttnphns

@ttnphns我认为你是对的!在关联的数据上应用FA毫无意义!我的建议来自一种特定的FA,其中PCA用于从数据创建矢量表示的预处理中,您将在其中应用FA。原始数据通常在转换为矢量表示之前由PCA投影。FA应用于矢量表示,而不应用于PCA投影数据。我的错!我将更新我的答案。尽管在某些情况下,如果FA模型无法收敛,则概率PCA可能与FA一样好。你不同意吗?
PickleRick
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.