主成分分析Matlab程序设计

PCA步骤:

(1)对原始数据进行标准化处理

(2)计算样本相关系数矩阵

(3)计算相关系数矩阵R的特征值和相应的特征向量

(4)选择重要的主成分,写出主成分表达式

案例问题:企业综合实力排序

企业综合实力评价表:

企业序号 净利润率/% 固定资产利润率/% 总产值利润率/% 销售收入利润率/% 产品成本利润率/% 物耗利润率/% 人均利润1000/人 流动资金
1 40.4 24.7 7.2 6.1 8.3 8.7 2.442 20
2 25 12.7 11.2 11 12.9 20.2 3.542 9.1
3 13.2 3.3 3.9 4.3 4.4 5.5 0.578 3.6
4 22.3 6.7 5.6 3.7 6 7.4 0.176 7.3
5 34.3 11.8 7.1 7.1 8 8.9 1.726 27.5
6 35.6 12.5 16.4 16.7 22.8 29.3 3.017 26.6
7 22 7.8 9.9 10.2 12.6 17.6 0.847 10.6
8 48.4 13.4 10.9 9.9 10.9 13.9 1.772 17.8
9 40.6 19.1 19.8 19 29.7 39.6 2.449 35.8
10 24.8 8 9.8 8.9 11.9 16.2 0.789 13.7
11 12.5 9.7 4.2 4.2 4.6 6.5 0.874 3.9
12 1.8 0.6 0.7 0.7 0.8 1.1 0.056 1
13 32.3 13.9 9.4 8.3 9.8 13.3 2.126 17.1
14 38.5 9.1 11.3 9.5 12.2 16.4 1.327 11.6
15 26.2 10.1 5.6 15.6 7.7 30.1 0.126 25.9


%主成分分析 PAC  的Matlab实现
%------------------------
% % 数据的输入及处理
clc
clear all
A=xlsread('D:\evaluation.xlsx',1,'B2:I16');
%数据的标准化处理
a=size(A,1);%获得矩阵A的行大小
b=size(A,2);%获得矩阵A的列大小
for i=1:b
    SA(:,i)=(A(:,i)-mean(A(:,i)))/std(A(:,i));%std函数是用来求向量的标准差
end
% %计算相关系数矩阵的特征值和特征向量
CM=corrcoef(SA);%计算相关系数矩阵
[V,D]=eig(CM);%计算特征值和特征向量
for j=1:b
    DS(j,1)=D(b+1-j,b+1-j);%对特征值按降序排列
end
for i=1:b
    DS(i,2)=DS(i,1)/sum(DS(:,1));%贡献率
    DS(i,3)=sum(DS(1:i,1))/sum(DS(:,1));%累计贡献率
end
% % 选择主成分及对应的特征向量
T=0.9;%主成分信息保留率
for k=1:b
    if DS(k,3)>=T
        Com_num=k;
        break;
    end
end
%提取主成分对应的特征向量
for j=1:Com_num
    PV(:,j)=V(:,b+1-j);
end
% % 计算各评价对象的主成分得分
new_score=SA*PV;
for i=1:a
    total_score(i,1)=sum(new_score(i,:));
    total_score(i,2)=i;
end
result_report=[new_score,total_score];%将各主成分得分与总分放在同一个矩阵中
result_report=sortrows(result_report,-4);%按总分降序排序
% % 输出模型及结果报告
disp('特征值及其贡献率,累加贡献率:')
DS
disp('信息保留率T对应的主成分数与特征向量:')
Com_num
PV
disp('主成分得分及排序(按第四列的总分进行排序,前三列为个主成分得分,第五列为企业编号)')
result_report



结果:


特征值及其贡献率,累加贡献率:


DS =


    5.7361    0.7170    0.7170
    1.0972    0.1372    0.8542
    0.5896    0.0737    0.9279
    0.2858    0.0357    0.9636
    0.1456    0.0182    0.9818
    0.1369    0.0171    0.9989
    0.0060    0.0007    0.9997
    0.0027    0.0003    1.0000


信息保留率T对应的主成分数与特征向量:


Com_num =


     3




PV =


    0.3334    0.3788    0.3115
    0.3063    0.5562    0.1871
    0.3900   -0.1148   -0.3182
    0.3780   -0.3508    0.0888
    0.3853   -0.2254   -0.2715
    0.3616   -0.4337    0.0696
    0.3026    0.4147   -0.6189
    0.3596   -0.0031    0.5452


主成分得分及排序(按第四列的总分进行排序,前三列为个主成分得分,第五列为企业编号)


result_report =


    5.1936   -0.9793    0.0207    4.2350    9.0000
    0.7662    2.6618    0.5437    3.9717    1.0000
    1.0203    0.9392    0.4081    2.3677    8.0000
    3.3891   -0.6612   -0.7569    1.9710    6.0000
    0.0553    0.9176    0.8255    1.7984    5.0000
    0.3735    0.8378   -0.1081    1.1033   13.0000
    0.4709   -1.5064    1.7882    0.7527   15.0000
    0.3471   -0.0592   -0.1197    0.1682   14.0000
    0.9709    0.4364   -1.6996   -0.2923    2.0000
   -0.3372   -0.6891    0.0188   -1.0075   10.0000
   -0.3262   -0.9407   -0.2569   -1.5238    7.0000
   -2.2020   -0.1181    0.2656   -2.0545    4.0000
   -2.4132    0.2140   -0.3145   -2.5137   11.0000
   -2.8818   -0.4350   -0.3267   -3.6435    3.0000
   -4.4264   -0.6180   -0.2884   -5.3327   12.0000


>> 

你可能感兴趣的:(Matlab)