当前位置:   article > 正文

R-第六章|主成分分析_r主成分分析

r主成分分析

本章内容是基于学校老师的课件,加上自己的一些理解整理而成的,分为理论和实践(R代码)两部分。

目录

第一部分:理论基础

1. 基本思想(降维)

2. 含义

3. 主成分计算

(1)基本计算步骤

(2)主要性质

(3)载荷和载荷矩

(4)主成分个数的确定

(5)变量标准化

(6)其他注意点

第二部分:代码

1. 数据样例

2. 选择主成分数量

3. 载荷图

4. 综合得分

5. 双坐标散点图 

第一部分:理论基础

1. 基本思想(降维)

全部变量可能存在信息重叠,为了去除信息重叠的部分,希望能用个数更少,但保留了原始变量大部分信息的几个不相关的综合变量(主成分)来代替原有变量。

*注:主成分分析中的信息就是指变量的变异性,用标准差或者方差表示。(类似熵权法,变异程度大的熵值就大,相应的权重也会更大)

2. 含义

        用二维数据举例,假设有n个数据点分布如图,如果用 y_1, y_2 的坐标,则n个点在y轴上的差异达到最大,即此方向上包含了n个点最多的信息(在y轴方向上方差最大)。直观来看,在 y1 轴上的差异可以标识为红线,在x轴上的差异标为蓝线,红线明显长于蓝线。

        此时,我们称 y1 为第一个主成分,垂直于 y1 的 y2为第二个主成分。当 y2 方向上的差异比较小的时候,我们可以忽略 y2,这样就把原来的二维数据(x1,x2)降维到一维(y1)。

图1

3. 主成分计算

(1)基本计算步骤

        设总体 X = (x_1,x_2,...,x_p)^T 的协方差矩阵为 \sum\lambda_1,\lambda_2,...,\lambda_p 为\sum 的p个特征值(\lambda_1\geq \lambda_2\geq...,\lambda_p>0),e_1,e_2,...,e_p 为对应的单位正交特征向量,则 X 的第 i 个主成分为:

y_i = e_i^TX=e_{i1}x_1+e_{i2}x_2+...+e_{ip}x_p, i=1,2,...,p

且有:

Var(y_i)=e_i^T\sum e_i=\lambda_i  (1)

Cov(y_i,y_j)=e_i^T\sum e_j=0; i,j=1,2,...,p,i\neq j  (2)

        这里的意思就是,要把 X 的协方差矩阵化成除了主对角线外都为0的矩阵,这个新的矩阵是Y的协方差矩阵。这里需要说明的是,协方差矩阵的构成为两个部分,主对角线上的是变量的方差,其余部分是协方差。在图像中,协方差的正负代表了样本点的方向,方差大小代表了样本的扩散方向。比如图2的左图的协方差矩阵为 \begin{bmatrix} 1& 0.9 \\ 0.9 & 1 \end{bmatrix},可以看到样本点总体是“左下-右上”的分布,符合协方差为0.9>0;而样本在 x1和x2轴上的投影也一样长,符合主对角线的数一样。

图2

         对比一下第一张图,实际上就是通过线性变化把我们的样本点旋转了一下,从左图变成了右图,让样本方向不再倾斜。

(2)主要性质

        设总体X的p个主成分所成向量为:

y=(y_1,y_2,...,y_p)^T=(e_1,e_2,...,e_p)X=P^TX

则有性质:

\sum_{i=1}^pVar(y_i)=\Lambda =diag(\lambda_1,...,\lambda_p)=\sum_{i=1}^p\lambda_i=\sum_{i=1}^pVar(x_i)

        因为主成分分析中只是把图像旋转了,所以旧坐标(x)和新坐标(y)下的方差总和一定相等。

(3)载荷和载荷矩

         y=P^TX=>X=Py, 即 x_i =e_{i1}y_1+e_{i2}y_2+...+e_{ip}y_p, i=1,2,...,p

        ①一般而言,称正交矩阵P为原始变量X关于主成分y的载荷矩阵,e_{ki} 表示第i个变量在主成分y_k 上的载荷(实际上就是系数的意思),载荷越大,说明x_i,y_k 越相关。

        ②SPSS中的载荷矩阵有所不同,不是 ei 而是 PΛ1/2=(λ11/2e1,λ21/2e2,...,λp1/2ep) 

(4)主成分个数的确定

        第 i 个主成分y1的方差贡献率为

wi=λi/j=1pλj;i,j=1,2,...,p

        一般取累计方差贡献率≥80%的最小k作为主成分个数,也有文献取85%为阈值,这个就看个人研究需要了。

(5)变量标准化

        如果变量的取值范围相差比较大,可能出现“大数吃小数”的情况(大数虽然波动不大,但是方差大于小数,导致大数的权重更大),所以需要进行标准化。

xi=xiE(x)si

        此时 X* 的协方差矩阵恰好是 X 的相关系数矩阵P

注:R的主成分分析命令已经包含了变量标准化,所以不需要额外对变量进行操作。

(6)其他注意点

        ①和熵权法不同的是,不需要考虑正负指标的问题。因为主成分分析的计算过程并不需要考虑样本分布的方向(即特征向量的方向),只用考虑差异大小,且最终综合得分的计算是选取的k个主成分的载荷(即权重,权重也有包含同一变量不同对象的差异)的平方之和。而熵权法的计算过程是根据样本差异来计算权重,最终权重*标准化后的变量加总得到综合得分,变量数值越大得分越高,所以需要对指标进行同向处理。

        ②主成分的正负不影响分析结果,因为特征变量可正可负。如图3,a1(1,1)和a2(-1,-1)都是样本的特征向量,只是方向不同。

图3

第二部分:代码

1. 数据样例

        用图4的行业数据作为样例。

图4 

2. 选择主成分数量

  1. #求样本相关系数矩阵并显示, 保留三位小数
  2. R=round(cor(d6.2), 3) ; R
  3. PCA6.2=princomp(d6.2, cor=T)#用R做主成分分析
  4. summary(PCA6.2)#列出分析结果,主成分有3

图5

         分析结果如图5所示,累计贡献率满足≥80%的时候,有三个主成分,不过由于两个主成分的75%也很接近80%,所以下面选择2个主成分。

3. 载荷图

  1. round(predict(PCA6.2),3) #作预测,计算主成分得分并解释
  2. screeplot(PCA6.2, type="lines") #画线型碎石
  3. load=loadings(PCA6.2) #提取主成分载荷矩阵为load
  4. rnames=c("固定资产","职工人数","工业总产值","劳动生产率",
  5. "百元产值","利税率","燃料消费","能源利用")
  6. plot(load[,1:2], xlim=c(-0.6,0.6), ylim=c(-0.6,0.6))
  7. text(load[,1], load[,2],labels=rnames, adj=c(-0.2, 0.1), cex = 0.7)
  8. #adj是调整标签和数据点之间的关系, 0 for left/bottom, 1 for right/up
  9. abline(h=0,v=0) #划分象限

        得到的前两个主成分为:

        可以看出,x1和z1,z2的载荷都为正,此时x1在散点图的第二象限,见下图、

         载荷散点图见下图,这里表示的是原来的维度在降维后的二维平面中的样子,也就是用y1,y2表示x1-x8。

4. 综合得分

        继续求综合得分,综合得分为主成分的载荷平方和。

         我们可以绘制双坐标散点图,把综合得分以及载荷放到同一张图中。

biplot(PCA6.2,scale = 0.5)

5. 双坐标散点图 

        (1)在综合得分表中,机器的Comp1和Comp2的得分分别是4.71和2.36,所以机器在第一象限;机器在x1-3的方向上,说明x1-3(固定资产、总产值、职工数量)在机器行业表现强烈,可以理解为机器行业的这三个变量的数据较其他行业更多.

        (2)煤炭、机器和食品在图中距离原点较远,对比综合分数表,这三个行业的综合得分也是前三;文教离原点最近,得分也最低。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/94179
推荐阅读
相关标签
  

闽ICP备14008679号