主成分分析法
主要目的
主成分分析(或称主分量分析,principal component analysis)由皮尔逊(Pearson,1901)首先引入,后来被霍特林(Hotelling,1933)发展了。
主成分分析的主要目的是希望用较少的变量去解释原来资料中的大部分变异,将
们手中许多相关性很高的变量转化成彼此相互独立或不相关的变量。通常是选出比原始变量个数少,能解释大部分资料中的变异的几个新变量,即所谓主成分,并用以解释资料的综合性指标。
因此,我们可以知道主成分分析的一般目的是:
(1)变量的降维;
(2)主成分的解释。
基本步骤
几点说明
1)主成分分析的结果受量纲的影响,由于各变量的单位可能不一样,如果各自改变量纲,结果会不一样,这是主成分分析的最大问题,回归分析是不存在这种情况的,所以实际中可以先把各变量的数据标准化,然后使用协方差矩阵或相关系数矩阵进行分析。
2)主成分的保留。用相关系数矩阵求主成分时,Kaiser主张将特征值小于1的主成分予以放弃(这也是SPSS软件的默认值)。
3)在实际研究中,由于主成分的目的是为了降维,减少变量的个数,故一般选取少量的主成分(不超过5或6个),只要它们能解释变异的70%~80%(称累积贡献率)就行了。
4)主成分向量与原始向量之间的关系式
MATLAB实现
clc,clear
load gj.txt %把原始数据保存在纯文本文件gj.txt中
gj=zscore(gj); %数据标准化
r=corrcoef(gj); %计算相关系数矩阵
%%下面利用相关系数矩阵进行主成分分析,x的列为r的特征向量,即主成分的系数
[x,y,z]=pcacov® %y为r的特征值,z为各个主成分的贡献率
f=repmat(sign(sum(x)),size(x,1),1); %构造与x同维数的元素为±1的矩阵
x=x.f; %修改特征向量的正负号,每个特征向量乘以所有分量和的符号函数值
num=4; %num为选取的主成分的个数
df=gjx(:,1:num); %计算各个主成分的得分
tf=df*z(1:num)/100; %计算综合得分
[stf,ind]=sort(tf,‘descend’); %把得分按照从高到低的次序排列
stf=stf’, ind=ind’
主成分分析法的应用
在主成分分析中,我们首先应保证所提取的前几个主成分的累计贡献率达到一个较高的水平,其次对这些被提取的主成分必须都能够给出符合实际背景和意义的解释。当原始变量之间具有较高的相关性时,前面少数几个主成分的累计贡献率通常就能达到一个较高水平,也就是说,此时的累计贡献率通常较易得到满足。但如果我们所提取的主成分中如有一个主成分解释不了,整个主成分分析也就失败了。
主成分分析法应用的案例如:
股票的一段时间的回升率,某地区普通高等教育发展水平综合评价
食品风味评价分析,保健食品功能学评价等等
附:邵威平,李红,张五九.主成分分析法及其在啤酒风味评价https://wenku.baidu.com/view/28407db169dc5022aaea00be.html
|
请发表评论