因子分析中因子旋转用matlab怎么实现?
在线等,谢谢%--------------------------------------------------------------------------
% 从相关系数矩阵出发进行因子分析
%--------------------------------------------------------------------------
%***************************定义相关系数矩阵PHO*****************************
PHO = [1 0.79 0.36 0.76 0.25 0.51
0.79 1 0.31 0.55 0.17 0.35
0.36 0.31 1 0.35 0.64 0.58
0.76 0.55 0.35 1 0.16 0.38
0.25 0.17 0.64 0.16 1 0.63
0.51 0.35 0.58 0.38 0.63 1 ];
%******************调用factoran函数根据相关系数矩阵作因子分析*****************
% 从相关系数矩阵出发,进行因子分析,公共因子数为2,设置特殊方差的下限为0,
% 不进行因子旋转
= factoran(PHO,2,'xtype','covariance','delta',0,'rotate','none')
% 定义元胞数组,以元胞数组形式显示结果
% 表头
head = {'变量', '因子f1', '因子f2'};
% 变量名
varname = {'身高','坐高','胸围','手臂长','肋围','腰围','<贡献率>','<累积贡献率>'}';
Contribut = 100*sum(lambda.^2)/6; % 计算贡献率,因子载荷阵的列元素之和除以维数
CumCont = cumsum(Contribut); % 计算累积贡献率
% 将因子载荷阵,贡献率和累积贡献率放在一起,转为元胞数组
result1 = num2cell();
% 加上表头和变量名,然后显示结果
result1 =
%从相关系数矩阵出发,进行因子分析,公共因子数为2,设置特殊方差的下限为0,
%进行因子旋转(最大方差旋转法)
=factoran(PHO,2,'xtype','covariance','delta',0)
Contribut = 100*sum(lambda.^2)/6 %计算贡献率,因子载荷阵的列元素之和除以维数
CumCont = cumsum(Contribut) %计算累积贡献率
% 从相关系数矩阵出发,进行因子分析,公共因子数为3,设置特殊方差的下限为0,
% 进行因子旋转(最大方差旋转法)
= factoran(PHO,3,'xtype','covariance','delta',0)
Contribut = 100*sum(lambda.^2)/6 % 计算贡献率,因子载荷阵的列元素之和除以维数
CumCont = cumsum(Contribut) % 计算累积贡献率
%--------------------------------------------------------------------------
% 读取examp12_02.xls中数据,进行因子分析
%--------------------------------------------------------------------------
%*********************************读取数据*********************************
= 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
% 进行因子旋转(最大方差旋转法)
= factoran(X,4)
Contribut = 100*sum(lambda.^2)/8 %计算贡献率,因子载荷阵的列元素之和除以维数
CumCont = cumsum(Contribut) %计算累积贡献率
% 从原始数据(实质还是相关系数矩阵)出发,进行因子分析,公共因子数为2
% 进行因子旋转(最大方差旋转法)
= factoran(X, 2)
Contribut = 100*sum(lambda.^2)/8 %计算贡献率,因子载荷阵的列元素之和除以维数
CumCont = cumsum(Contribut) %计算累积贡献率
%**************将因子得分F分别按耐力因子得分和速度因子得分进行排序*************
obsF = ; % 将国家和地区名与因子得分放在一个元胞数组中显示
F1 = sortrows(obsF, 2); % 按耐力因子得分排序
F2 = sortrows(obsF, 3); % 按速度因子得分排序
head = {'国家/地区','耐力因子','速度因子'};
result1 = ; % 显示按耐力因子得分排序的结果
result2 = ; % 显示按速度因子得分排序的结果
%*************************绘制因子得分负值的散点图***************************
plot(-F(:,1),-F(:,2),'k.') %作因子得分负值的散点图
xlabel('耐力因子得分(负值)'); %为X轴加标签
ylabel('速度因子得分(负值)'); %为Y轴加标签
box off %去掉坐标系右上的边框
gname(obsname); %交互式添加各散点的标注
页:
[1]