因子分析factor_analyzer工具包介绍

来源:2023-08-02 23:18:45    时间:哔哩哔哩


(资料图片)

#此代码是我基于因子分析的专用工具包(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)

关键词:

资讯

  • 黑龙江金融机构多措并举纾困中小微企业 提升小微企业融资便利度、可得性

    小微企业是实体经济的重要组成部分,但由于个体工商户和小微企业具有规模小、轻资产、抗风险能力弱等特点,普遍存在融资难、融资贵的问题。

    黑龙江日报 2022-06-20
  • 赏传统年俗逛非遗庙会 铜官窑古镇重温传统民俗年

    中新网长沙2月6日电 (潘杏琼)在多地倡导就地过年的环境下,位于长沙市城北的铜官窑古镇景区,从1月24日至2月15日举行中国年·湖湘味·铜官

    中新网 2022-02-07
  • 哈尔滨铁路迎节后返程高峰 推出复工专列服务

    中新网哈尔滨2月6日电 (周晓舟 记者 史轶夫)中国铁路哈尔滨局有限公司6日发布消息,哈尔滨铁路迎来春节后返程客流高峰,6日至7日预

    中新网 2022-02-07
  • 冬奥动车组设5G超高清演播室 “瑞雪迎春”号智能化人性化结合

    中新网北京2月6日电 (记者 刘文曦)在时速350公里的高铁列车上首设5G超高清演播室,为北京冬奥会量身定制的新型奥运版智能复兴号动车组瑞

    中新网 2022-02-07
  • 中欧班列“签证官”:日行10公里 用锤子“听诊”

    (新春走基层)中欧班列“签证官”:日行10公里 用锤子“听诊”  中新网郑州2月6日电 题:中欧班列“签证官”:日行10公里,用锤子“

    中新网 2022-02-07
  • 广告

    X 关闭

    X 关闭

  • 众测
  • more+

    京张高铁每日开行17对冬奥列车

      京张高铁每日开行17对冬奥列车  预计冬奥服务保障期运送运动员、技术官员、持票观众等20万人次  2月6日,2022北京新闻中心举行“北

    北京冬奥会开幕式上 小学生朱德恩深情演绎《我和我的祖国》

      北京冬奥会开幕式上 小学生朱德恩深情演绎《我和我的祖国》  9岁小号手苦练悬臂吹响颂歌  2月4日晚,在北京冬奥会开幕式上,9岁的

    2022北京冬奥会开幕式这19首乐曲串烧不简单

      多名指挥家列曲目单 再由作曲家重新编曲 本报专访冬奥开幕式音乐总监赵麟  开幕式这19首乐曲串烧不简单  “二十四节气”倒计时、

    “一墩难求” 冰墩墩引爆购买潮

    设计师:没想到冰墩墩成爆款一墩难求冰墩墩引爆购买潮 北京冬奥组委:会源源不断供货北京冬奥会吉祥物冰墩墩近日引爆购买潮,导致一墩难求