数据:
image.png
import pandas as pd
from factor_analyzer import FactorAnalyzer
import matplotlib.pyplot as plt
df =pd.read_excel("表7.1.xlsx")#默认会把第一行作为列名字,第一列数据不可用
dataframe =df.drop(labels='地区',axis=1) #删除第一列(地区),axis 默认为0,指删除行,列 axis=1;
fa = FactorAnalyzer(8, rotation=None)
fa.fit(dataframe)
ev, v = fa.get_eigenvalues()
print(ev,v)
image.png
plt.scatter(range(1,dataframe.shape[1]+1),ev)
plt.plot(range(1,dataframe.shape[1]+1),ev)
plt.title('Scree Plot')
plt.xlabel('Factors')
plt.ylabel('Eigenvalue')
plt.grid()
plt.show() #从图中可以看出选择2个公共因子比较合理
image.png
fa2=fa = FactorAnalyzer(2, rotation="varimax")
fa2.fit(dataframe)
print("提取出的公因子经过旋转后的方差贡献情况:\n",fa2.loadings_)
print("各因子的累积方差贡献率:\n", fa2.get_communalities())
print("各因子的方差贡献率:\n", fa2.get_factor_variance())
print("因子得分系数矩阵:\n",fa2.transform(dataframe))
image.png
网友评论