您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 因子分析的matlab实现
%--------------------------------------------------------------------------%从相关系数矩阵出发进行因子分析%--------------------------------------------------------------------------%***************************定义相关系数矩阵PHO*****************************PHO=[10.790.360.760.250.510.7910.310.550.170.350.360.3110.350.640.580.760.550.3510.160.380.250.170.640.1610.630.510.350.580.380.631];%******************调用factoran函数根据相关系数矩阵作因子分析*****************%从相关系数矩阵出发,进行因子分析,公共因子数为2,设置特殊方差的下限为0,%不进行因子旋转[lambda,psi,T]=factoran(PHO,2,'xtype','covariance','delta',0,'rotate','none')%定义元胞数组,以元胞数组形式显示结果%表头head={'变量','因子f1','因子f2'};%变量名varname={'身高','坐高','胸围','手臂长','肋围','腰围','贡献率','累积贡献率'}';Contribut=100*sum(lambda.^2)/6;%计算贡献率,因子载荷阵的列元素之和除以维数CumCont=cumsum(Contribut);%计算累积贡献率%将因子载荷阵,贡献率和累积贡献率放在一起,转为元胞数组result1=num2cell([lambda;Contribut;CumCont]);%加上表头和变量名,然后显示结果result1=[head;varname,result1]%从相关系数矩阵出发,进行因子分析,公共因子数为2,设置特殊方差的下限为0,%进行因子旋转(最大方差旋转法)[lambda,psi,T]=factoran(PHO,2,'xtype','covariance','delta',0)Contribut=100*sum(lambda.^2)/6%计算贡献率,因子载荷阵的列元素之和除以维数CumCont=cumsum(Contribut)%计算累积贡献率%从相关系数矩阵出发,进行因子分析,公共因子数为3,设置特殊方差的下限为0,%进行因子旋转(最大方差旋转法)[lambda,psi,T]=factoran(PHO,3,'xtype','covariance','delta',0)Contribut=100*sum(lambda.^2)/6%计算贡献率,因子载荷阵的列元素之和除以维数CumCont=cumsum(Contribut)%计算累积贡献率%--------------------------------------------------------------------------%读取examp12_02.xls中数据,进行因子分析%--------------------------------------------------------------------------%*********************************读取数据*********************************[X,textdata]=xlsread('examp12_02.xls');%从Excel文件中读取数据X=X(:,3:end);%提取X的第3至最后一列,即要分析的数据varname=textdata(4,3:end);%提取textdata的第4行,第3至最后一列,即变量名obsname=textdata(5:end,2);%提取textdata的第2列,第5至最后一行,即国家或地区名%******************调用factoran函数根据原始观测数据作因子分析*****************%从原始数据(实质还是相关系数矩阵)出发,进行因子分析,公共因子数为4%进行因子旋转(最大方差旋转法)[lambda,psi,T,stats]=factoran(X,4)Contribut=100*sum(lambda.^2)/8%计算贡献率,因子载荷阵的列元素之和除以维数CumCont=cumsum(Contribut)%计算累积贡献率%从原始数据(实质还是相关系数矩阵)出发,进行因子分析,公共因子数为2%进行因子旋转(最大方差旋转法)[lambda,psi,T,stats,F]=factoran(X,2)Contribut=100*sum(lambda.^2)/8%计算贡献率,因子载荷阵的列元素之和除以维数CumCont=cumsum(Contribut)%计算累积贡献率[varname'num2cell(lambda)]%**************将因子得分F分别按耐力因子得分和速度因子得分进行排序*************obsF=[obsname,num2cell(F)];%将国家和地区名与因子得分放在一个元胞数组中显示F1=sortrows(obsF,2);%按耐力因子得分排序F2=sortrows(obsF,3);%按速度因子得分排序head={'国家/地区','耐力因子','速度因子'};result1=[head;F1];%显示按耐力因子得分排序的结果result2=[head;F2];%显示按速度因子得分排序的结果%*************************绘制因子得分负值的散点图***************************plot(-F(:,1),-F(:,2),'k.');%作因子得分负值的散点图xlabel('耐力因子得分(负值)');%为X轴加标签ylabel('速度因子得分(负值)');%为Y轴加标签boxoff;%去掉坐标系右上的边框gname(obsname);%交互式添加各散点的标注
本文标题:因子分析的matlab实现
链接地址:https://www.777doc.com/doc-1865420 .html