1.概念介绍
主成分分析是一种降维技术,简单的说就是将数据中的多个变量,化为几个主要的变量反映原本数据中的绝大部分信息。
在工作中,我们常常遇到一些多维数据(即一组数据中存在多个变量、属性,或者说需要用多个变量、字段、属性去表示一组数据)。明显,数据中用到的维度越少,越便于我们的工作和研究。所以这时,我们就需要用到主成分分析,将原本多维的数据变化为低维数据。
比如,一组数据原本有n个样本,p个属性变量(如下图)
为了便于研究,我们可以通过降维技术(即这里所说的主成分分析),将p个属性所描述的信息用m个属性(m<p)来进行描述。
2.主成分分析步骤
1)对原始数据标准化处理(0均值化处理)
2)计算样本相关系数矩阵(或协方差矩阵)
3)计算协方差矩阵的特征值和特征向量
4)选择重要的主成分,并写出主成分表达式
选择多少个主成分,主要是依据方差累积贡献率来进行的。一般情况上,当只要选择累积贡献率(Gm)大于85%的部分。
5)计算主成分载荷
主成分载荷是反映主成分Yi 与原变量 Xj之间的相互关联程度
6)计算主成分得分
6)根据主成分得分的数据,做进一步的统计分析
3.R语言实现主成分分析
以下内容所使用的数据来自网络!
1)读取数据
R语言可以读取导入多种格式的数据,xlsx、csv、xml等,具体使用在此不累述。该篇文章所使用的数据是个人在一篇论文中找到的:1989—2002 年中国 GDP数据
2)对数据取对数(经济数据通常需要这一步)
LnGDP<-log(x$GDP)
LnSS<-log(x$SS)
......
lnx<-cbind(LnSS,LnXFP,LnTZ,LnRK,LnJY,LnWZ,LnJCK)
3)对lnx数据求出相关系数矩阵
corx<-cor(lnx)
4)求特征值与特征变量
在R中,可以通过eigen()直接求出数据的特征值和特征向量,如下:
5)选择主成分
通过计算方差累计贡献率,可知特征值6.5232585贡献了93.19%,占主要成分
其对应的特征向量为:
故而有第一主成分:
6)作碎石图
plot(ev$values,type='l',xlab='i',ylab='lambda')
4.R语言中的princomp
R语言不仅可以通过手工一步一步进行主成分分析,也可以直接通过R自带的princomp进行主成分分析;
代码:pca1<-princomp(Inx,cor=T),cor=T表示以相关矩阵计算主成分分析
summary(pca,loadings=T);loadings表示是否计算载荷
screeplot(pca,type='l')