数模算法:主成分分析

引入

主成分分析是一种降维算法,它能将多个指标转换为少数几 个主成分,这些主成分是原始变量的线性组合,且彼此之间 互不相关,其能反映出原始数据的大部分信息。一般来说, 当研究的问题涉及到多变量且变量之间存在很强的相关性时, 我们可考虑使用主成分分析的方法来对数据进行简化。
在实际问题研究中,多变量问题是经常会遇到的。变量太多,无疑 会增加分析问题的难度与复杂性,而且在许多实际问题中,多个变量之 间是具有一定的相关关系的。 因此,人们会很自然地想到,能否在相关分析的基础上,用较少 的新变量代替原来较多的旧变量,而且使这些较少的新变量尽可能多地 保留原来变量所反映的信息? 事实上,这种想法是可以实现的,主成分分析方法就是综合处理这 种问题的一种强有力的工具。 主成分分析是把原来多个变量划为少数几个综合指标的一种统计 分析方法。

思想

在这里插入图片描述
在这里插入图片描述

计算步骤

在这里插入图片描述
1.计算样本相关系数矩阵
在这里插入图片描述
2.计算R的特征值和特征向量
在这里插入图片描述
3.计算主成分贡献率和累计贡献率
在这里插入图片描述
4.写出主成分
在这里插入图片描述
根据系数分析各个主成分代表的意义,对于某个主成分而言,指标前面的系数越大,代表该指标对于该主成分的影响越大

实例

对下列数据主成分分析
在这里插入图片描述

matlab代码

load data1.mat
[n,p]=size(x);%n是样本个数p是指标数

%计算样本相关系数矩阵
R=corrcoef(x);
disp('样本相关系数矩阵为:')
disp(R)

%计算R的特征值和特征向量
[V,D]=eig(R);%V是特征向量矩阵D是特征值构成的对角矩阵

%计算主成分的贡献率和累计贡献率
lambda=diag(D);%diag得到矩阵主对角线的值,形成列向量
lambda=(lambda(end:-1:1))';%可以将特征值向量大小反向排序,默认是从小到大,转置为行向量
%贡献率
contributionRate=lambda/sum(lambda);
%累计贡献率
CumContributionRate=cumsum(lambda)/sum(lambda);
disp('特征值为:')
disp(lambda)
disp('贡献率:')
disp(contributionRate)
disp('累计贡献率:')
disp(CumContributionRate)
disp('与特征值对应的特征向量矩阵:')
V=rot90(V)';
disp(V)


结果

在这里插入图片描述
相关系数矩阵
在这里插入图片描述
结果数据整合
在这里插入图片描述
对结果解释
从上表可以看出,前两个和前三个主成分的累计贡献率分别达到80.6%和 87.8%,第一主成分F1在所有变量(除在x2上的载荷稍偏小外)上都有近似相等的 正载荷,反映了综合消费性支出的水平,因此第一主成分可称为综合消费性支出成分。第二主成分F2在变量x2上有很高的正载荷,在变量x4上有中等的正载荷,而在其余变量上有负载荷或很小的正载荷。可以认为这个主成分度量了受地区气候影响的消费性支出(主要是衣着,其次是医疗保健)在所有消费性支出中占的比重(也可理解为一种消费倾向),第二主成分可称为消费倾向成分。第三主成分很难给出明显的解释,因此我们只取前面两个主成分。

还可以计算主成分的值

数据先标准化

%对数据x标准化为X
X=zscore(x);   % matlab内置的标准化函数(x-mean(x)/std(x)
% 计算主成分的值
m =input('请输入需要保存的主成分的个数:  ');
F = zeros(n,m);  %初始化保存主成分的矩阵(每一列是一个主成分)
for i = 1:m
    ai = V(:,i)';   % 将第i个特征向量取出,并转置为行向量
    Ai = repmat(ai,n,1);   % 将这个行向量重复n次,构成一个n*p的矩阵
    F(:, i) = sum(Ai .* X, 2);  % 注意,对标准化的数据求了权重后要计算每一行的和
end

结果
在这里插入图片描述

拓展

主成分分析还可以用于聚类,回归分析,其中回归分析可以解决多重共线性的影响。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值