因子分析factor_analyzer工具包介绍
(资料图片)
#此代码是我基于因子分析的专用工具包(factor_analyzer)搭建的
#此代码能解决需要输出多个(n_factors=1,2,3,...m)潜变量的因子分析问题
#如需将此代码放在自己个人社交平台,请给个引用"B站 耿大哥讲算法"
import numpy as npfrom sklearn import preprocessingfrom factor_analyzer import calculate_kmofrom factor_analyzer import FactorAnalyzerfrom factor_analyzer import calculate_bartlett_sphericity#读取数据&校准化# 指标1 指标2 指标3 指标4指标5 指标6 指标7 指标8data=([[,,,,,,,], #样本1 [,,,,,,,], #样本2 [,,,,,,,], #样本3 [,,,,,,,], #样本4 [,,,,,,,], #样本5 [,,,,,,,], #样本6 [,,,,,,,], #样本7 [,,,,,,,], #样本8 [,,,,,,,], #样本9 [,,,,,,,], #样本10 [,,,,,,,], #样本11 [,,,,,,,], #样本13 [,,,,,,,], #样本13 [,,,,,,,]])#样本14# 对样本Z-score标准化X=(data,axis=0)#KMO和barlett检验bartlett,KMO=calculate_bartlett_sphericity(data),calculate_kmo(data)[1]print('-'*54);print('KMO和bartlett检验')print('KMO='+str('%.3f'%calculate_kmo(data)[1]),end='\t')if KMO<=1 and KMO>=:print('非常好')elif KMO< and KMO>=:print('好')elif KMO< and KMO>=:print('一般')elif KMO< and KMO>=:print('差')elif KMO< and KMO>=:print('很差')else:print('不能接受')print('bartlett 统计量='+str('%.3f'%bartlett[0]))print('bartlett 自由度='+str(int([1]*([1]-1)/2)))print('bartlett P值='+str('%.3f'%bartlett[1]))#(常用)method='minres'迭代主因子,'principal'主成分#(不常用)method='ml'极大似然,'mle'极大似然估计,'uls'无条件最小二乘,#(常用)rotation=varimax标准化最大方差法#(不常用)rotation=promax,oblimin,oblimax,quartimin,quartimax,equamaxFA=FactorAnalyzer(n_factors=2,method='minres',rotation='varimax')(X)#计算载荷矩阵A=_#计算样本得分矩阵F=(X)#计算得分系数矩阵S=(X).I*F#计算共同度h=_communalities()#计算方差贡献g=_factor_variance()#计算旋转矩阵Q=_matrix_# 输出使载荷间的总方差函数达到最大的旋转矩阵Qprint('-'*50)print('旋转矩阵Q')for i in range([0]): for j in range([1]):print('%.3f'%Q[i,j],end='\t') print()# 输出载荷矩阵的旋转解print('-'*50);print('载荷矩阵的旋转解')print('指标|组件',end='\t')for i in range([1]):print('潜变量f'+str(i+1),end='\t')print('共同度')for i in range([0]): print('指标'+str(i+1),end='\t') for j in range([1]):print('%.3f'%A[i,j],end='\t') print('%.3f'%h[i],end='\t') print()print('总贡献',end='\t')for i in g[0]:print('%.3f'%i,end='\t')print('%.3f'%sum(g[0]))print('贡献率',end='\t')for i in g[1]:print('%.1f'%(i*100)+'%',end='\t')print('-----')print('贡献累积',end='\t')for i in g[2]:print('%.1f'%(i*100)+'%',end='\t')print('-----')print('-'*50)#输出旋转后的成分得分系数矩阵print('成分得分系数矩阵(旋转后)')print('指标|组件',end='\t')for i in range([1]):print('潜变量f'+str(i+1),end='\t')print()for i in range([0]): print('指标'+str(i+1),end='\t') for j in range([1]):print('%.3f'%S[i,j],end='\t') print()#计算各样本的综合得分并排序print('-'*50)print('各样本的得分及排序');print('样本|fi',end='\t')for i in range([1]):print('潜变量f'+str(i+1),end='\t')print('综合变量f',end='\t')for i in range([1]):print('按f'+str(i+1)+'排序',end='\t')print('按f排序')def xvhao(x): list2=[i for i in x] (reverse=True) return [(i)+1 for i in x]list3=[i/sum(g[1]) for i in g[1]]list4=[sum(list3[j]*F[i,j] for j in range([1])) for i in range([0])]for i in range([0]): print('样本'+str(i+1),end='\t') for j in range([1]):print('%.3f'%F[i,j],end='\t') print('%.3f'%list4[i],' ',end='\t') for j in range([1]):print(xvhao(F[:,j])[i],' ',end='\t') print(xvhao(list4)[i],' ',end='\t') print()print('-'*50)
关键词:
下一篇:最后一页
广告
X 关闭
X 关闭
-
-
京张高铁每日开行17对冬奥列车
京张高铁每日开行17对冬奥列车 预计冬奥服务保障期运送运动员、技术官员、持票观众等20万人次 2月6日,2022北京新闻中心举行“北
-
-
北京冬奥会开幕式上 小学生朱德恩深情演绎《我和我的祖国》
北京冬奥会开幕式上 小学生朱德恩深情演绎《我和我的祖国》 9岁小号手苦练悬臂吹响颂歌 2月4日晚,在北京冬奥会开幕式上,9岁的
-
-
2022北京冬奥会开幕式这19首乐曲串烧不简单
多名指挥家列曲目单 再由作曲家重新编曲 本报专访冬奥开幕式音乐总监赵麟 开幕式这19首乐曲串烧不简单 “二十四节气”倒计时、
-
-
“一墩难求” 冰墩墩引爆购买潮
设计师:没想到冰墩墩成爆款一墩难求冰墩墩引爆购买潮 北京冬奥组委:会源源不断供货北京冬奥会吉祥物冰墩墩近日引爆购买潮,导致一墩难求