题目来源:李航《统计学方法》(第二版)中主成分分析的例题

代码如下:
(详细分析和答案见教材)
% 教材中的例子
C = shuju; %导入题目数据协方差矩阵 ,注意,已做规范化处理
[Row, column]=size(C);
C=double(C);
[v,feature_value] = eig(C);
value=diag(feature_value)
D=sort(value,'descend'); %排序协方差矩阵的特征值即排序规范化处理后的矩阵B的方差(主成分的方差)
%2.17, 0.87 , 0.57, 0.39
Dg=D./sum(D) %特征值的贡献度,方差贡献率
Dleiji=cumsum(Dg) %累计贡献度
num = 1;
while sum(D(1:num))/sum(D) < 0.75 %若累计贡献率小于75%则增加主元个数.
num = num +1;
end %num=2,只需要取前两个成分即可,PC1,PC2
D=D(1:num); %选取的成分对应的特征值
[X1,d1]=eig(C);
[X,d]=sorted(C,'descend');
P = X(:, 1:num) %对应的特征向量 PC1,PC2
%%定义个R,用来放主成分对原变量语文、数学、四个的贡献率
R=[];
for i =1:1:num
r = D(i,1) ^0.5*P(:,i)./1; %num个主成分与原变量语文数学、、的相关系数
R=[R r]
end
%%计算所有主成分对变量的贡献率,PC1对X1的r^2+pc2对x1的r^2
RR=[];
for i =1:1:4
r = R(i,1) ^2+ R(i,2) ^2; %num个主成分与原变量语文数学、、的相关系数
RR=[RR r]
end
PC1=R(:,1);
PC2=R(:,2);
%%绘制因子负荷量分布图
figure;
scatter(PC1,PC2,'*');
title('因子负荷量分布图');
xlabel('Y1');ylabel('Y2');
grid;
text(PC1(1,1),PC2(1,1),'语文');
text(PC1(2,1),PC2(2,1),'英语');
text(PC1(3,1),PC2(3,1),'数学');
text(PC1(4,1),PC2(4,1),'物理');
结果:


矩阵R是主成分分别各对四个变量的贡献率;
矩阵RR是所有主成分对四个变量的贡献率。
运行结果:


具体分析见教材。