PCA实例matlab仿真,简易版

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

代码如下:

(详细分析和答案见教材)

% 教材中的例子
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是所有主成分对四个变量的贡献率。

运行结果:

具体分析见教材。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值