在python中,计算FA模型各因素之间相关性的正确方法是什么?对于sklearn.decomposition.factorananalysis,我尝试了这种方法(根据我的数据框对象的因子分数计算),但没有旋转或使用varimax(当通过斜旋转提取因子时,我想计算它们之间的相关性,但首先决定检查正交旋转的计算方法),这显示了正确的结果(几乎是对角线矩阵)但对于factor_analyzer.FactorAnalyzer矩阵与对角线有很大不同:-原因是什么?不要认为factor_analyzer.FactorAnalyzer有错误,那么计算相关性的正确方法是什么(为什么我应用的方法显示了sklearn.decomposition.FactorAnalyzer的正确结果)
def get_correlations_between_factors(dataframe, fa_model):
import pandas as pd
fa_model.fit(dataframe)
result = fa_model.transform(dataframe)
return pd.DataFrame(result).corr()
对于正交旋转(或根本不旋转),
FactorAnalyzer
不提供因子相关矩阵,因为它只是一个单位矩阵。对于倾斜旋转,可以使用phi_
属性来获取因子相关矩阵FactorAnalyzer
包的工作方式与R的psych
包相同。比如说,结果如下:
考虑因素得分的相关性不一定会像你预期的那样起作用。比如说,
产出如下:
如果您想向自己证明这些因素确实是正交的(不相关的),您可以在
FactorAnalyzer
中执行以下操作:其输出如下:
这里需要补充一点:当您使用
transform()
方法时,您正在计算因子分数。有不同的方法可以做到这一点FactorAnalyzer
实现了瑟斯通方法,但也有其他方法可以保留潜在的相关性,如“ten Berge”方法如果这是您希望我们在
FactorAnalyzer
中实现的内容,请随时提出问题。下面是一个粗略的实现:相关问题 更多 >
编程相关推荐