加载和评分(使用 oblimin 旋转)之间的因子顺序不同,这怎么可能?

Factor order differs between loadings and scoring (with oblimin rotation), how is this possible?

我是 运行 对来自 python 中 factor_analyser 包的调查的一组问题进行探索性因素分析。结果显示了 8 个因素,其中包含一组明确的变量,每个因素中的载荷最高。

为了正确命名因素并验证它们,我想分析所回答的问题(对一个因素有高负荷)与所有受访者的因素得分之间的相关性。

然而,当我分析这些结果时,这些因素似乎发生了变化。例如,在 'achievement'-问题上包含高负载变量的第一个因素在评分结果中显示为与受访者的 'achievement'-问题具有高度相关性的第二个因素。此外,当使用因子评分进行分析时,第一个因子的高负荷变量与该因子评分的相关性最低。见下方代码:

fa = FactorAnalyzer(rotation = 'oblimin',
                   n_factors = 8)

fa.fit(test_data)
data_loadings = pd.DataFrame(fa.loadings_(test_data), index = test_data.columns)
data_transformed = pd.DataFrame(fa.transform(test_data), index = test_data.index)

Here's the visual outcome of the factor loadings, and here 相关矩阵的视觉结果。您可以在其中看到与因子 [0] 具有最高负载的(排序的)变量不同于与因子 [0] 具有最高相关性的变量。

有谁知道这是怎么可能的?它与旋转有关,还是与索引命名有关?

这似乎是 FactorAnalyzer 包的问题。

当倾斜旋转改变了因子的方差顺序时,将对因子重新排序以确保第一个具有最大方差。然而,结构矩阵是在重新排序之前使用载荷分配的,这导致这些顺序有时会不同。

这会给用户带来很多惊喜;如果已经对这些因素进行了解释或命名,则用户可能会感到困惑,因为所得到的因素分数与此解释根本不匹配,并且与不同的项目相关,而不是与具有最强负载的项目相关。

我已经提交了 pull request 来更改包中的这个。