sklearn 中的因子分析:解释方差

Posted

技术标签:

【中文标题】sklearn 中的因子分析:解释方差【英文标题】:Factor Analysis in sklearn: Explained Variance 【发布时间】:2017-05-14 07:51:33 【问题描述】:

scikit-learn 中的 PCA 有一个名为“explained_variance”的属性,它捕获每个组件解释的方差。对于 scikit-learn 中的 FactorAnalysis,我没有看到类似的情况。如何计算因子分析中每个组件解释的方差?

【问题讨论】:

【参考方案1】:

你可以这样做:

在进行因子分析后,首先获取分量矩阵和噪声方差,让 fa 成为您的拟合模型

m = fa.components_
n = fa.noise_variance_

对该矩阵求平方

m1 = m**2

计算 m1 的每一列的总和

m2 = np.sum(m1,axis=1)

现在由第一个因素解释的 %variance 将是

pvar1 = (100*m2[0])/np.sum(m2)

同样,第二个因素

pvar2 = (100*m2[1])/np.sum(m2)

但是,噪声分量也解释了方差,如果您在解释的方差中考虑了这一点,则需要计算

pvar1_with_noise = (100*m2[0])/(np.sum(m2)+np.sum(n))
pvar2_with_noise = (100*m2[1])/(np.sum(m2)+np.sum(n))

等等。希望这会有所帮助。

【讨论】:

这实际上对我不起作用。我得到的“pvar1”等数字加起来都是 100%,最后一个因素总是有余数。他们不应该按解释的方差量降序排序吗?

以上是关于sklearn 中的因子分析:解释方差的主要内容,如果未能解决你的问题,请参考以下文章

spss单因素方差分析中啥是因子,啥是因变量

如何解释或者是说明SPSS软件的因子分析和非参数检验结果~越详细越好

python 方差分析

方差分析法

方差分析的MATLAB实现(单因子)

Python检验多元共线性-VIF方差扩大因子