因子分析问题——奇异协方差矩阵?

机器算法验证 spss 因子分析 Python
2022-03-24 02:59:28

我无法对我的数据集执行因子分析。

当我在 SPSS(默认设置)中执行因子分析时,它工作正常。问题是,我需要以编程方式(在 Python 中)。当我尝试使用 Python(MDP 库)对同一数据集进行因子分析时,出现此错误:

“数据的协方差矩阵是奇异的,需要去除冗余维度”

在查看 MDP 文档时,它说“......返回潜在变量的最大 A 后验估计”。作为因子分析新手,我并不太清楚这意味着什么,但我尝试将 SPSS 中的默认提取方法从“主成分”更改为“最大似然”。然后,在 SPSS 中,我收到错误:

“这个矩阵不是正定的。”

这两个错误是一回事吗?无论如何,我可以做些什么来修复我的数据集,以使协方差矩阵不是奇异的?

谢谢!

编辑:好的,所以我试图简化事情,但也许从一开始就解释一切会更好。

我有一系列文件。是的,我只使用 9 个文档作为一个简单的测试用例,但我的最终目标是在更大的语料库上使用它。

我已经建立了一个术语文档矩阵,执行了 tf-idf,并做了 SVD——主要是在 blog.josephwilk.net/.../latent-semantic-analysis-in-python.html 的帮助下

现在我有一个重构矩阵,我想将文档分类。所以,我尝试使用因子分析。事实上,它似乎起作用了——当我把它放在 SPSS 中时,因子负载表明文档按照我认为应该的方式进行分组,并且负载比我没有执行 SVD 时要高。(虽然我认为从技术上讲,SPSS 正在做 PCA,即使它在“因素分析”标题下)。

我尝试使用 MDP 的 PCANode,但这似乎并没有给我任何接近我想要的东西。奇怪的是,如果我转置矩阵,因子分析确实有效(它将对术语进行分组,而不是对文档进行分组)。

希望这一切现在都变得更有意义了......

1个回答

是的,这两个错误等同于同一件事。他们(大致)告诉您两个或多个清单变量是线性相关的(例如y1=ay2+b对于标量a,b)。这两个变量(维度)将是“冗余的”,这意味着样本协方差矩阵是不可逆的(即奇异的),因此也不是正定的。

至于你应该怎么做,那要看情况了。首先,我会尝试找出哪些变量给您带来了麻烦;散点图矩阵可能足以告诉您这一点。然后你可以决定从那里做什么 - 很可能会删除一些冗余变量。