主成分分析

1 主成分分析 简介

主成分分析(Principal Component Analysis,PCA),是考察多个变量间相关性的一种多元统计方法,基本思想[1]就是在保留原始变量尽可能多的信息的前提下达到降维的目的,从而简化问题的复杂性并抓住问题的主要矛盾。最后筛选出的几个替代原始数据的变量被称为主成分,它们是原始变量的线性组合,关系图如下:

2 主成分分析 步骤

  • 构建原始数据矩阵;
  • 消除量纲——数据标准化;
  • 建立协方差矩阵(或相关系数矩阵);
  • 求出特征值、特征向量;
  • 根据方差、累计方差贡献率确定主成分个数;
  • 求出综合得分,给出现实意义的解释。

3 R语言实战

依据《R语言实战》提供的实例,下面用psych程序包中的USJudgeRatings数据集进行主成分分析,这个数据集描述的是律师对美国高等法院法官的评分情况,部分数据集及各变量含义如下所示:

>install.packages("psych")
>library(psych)
>USJudgeRatingsz

3.1 数据预处理

数据集中的CONT变量表示的是律师与法官的联系次数,由于该变量对评分情况没有影响,考虑在进行主成分分析时将其剔除,用cor函数检查变量间的相关性。

从相关系数矩阵中可以发现,有几个变量之间的相关性还是非常强的,表明这份数据适合做主成分分析。

3.2 构建主成分模型

R中构建主成分模型的常用函数有pricipal()princomp(),两者不同之处在于: pricipal() 只返回最佳nfactor的子集,而princomp() 将会得到和变量个数一样多的主成分。

  • 使用psych包中的pricipal()
>pc<-principal(USJudgeRatings,nfactors=1)
>pc
  • 使用基础函数pricomp()
>pc<-princomp(USJudgeRatings,cor=T)
>summary(pc)

运行结果如下所示:

3.3 确定主成分个数

原则[2]

  • 根据先验经验和理论知识判断主成分个数
  • 根据解释变量的累积方差贡献率来判断主成分个数
  • 通过检查变量间的相关系数矩阵来判断保留的主成分个数

碎石图能够直观地展现要选择的主成分数目,图中急剧的中断表明需要提取的主成分的适当数量,从图中可知最佳的主成分个数为1。

>fa.parallel(cor(USJudgeRatings),fa="pc",n.iter = 100,show.legend = F,main = "Scree plot with parallel analysis")

3.4 提取主成分

pricipal() 和碎石图的运行结果可知,第一主成分(PC1)与每一个变量都高度相关,也就是说,PC1是一个可用来进行一般性评价的维度。

运行结果中的h2指主成分对每个变量的方差解释度,u2指方差无法被主成分解释的比例。例如,法官正直度(INTG)84%的方差可以用PC1来解释,15.65%的方差不能由PC1来解释。SS loadings行包含了与主成分相关联的特征值。Proportion Var行表示的是每个主成分对整个数据集的解释程度。

3.5 主成分旋转

旋转后得到的主成分能更容易的解释原始变量,常用的旋转方法有:

  • 正交旋转:旋转后的主成分不相关
  • 斜交旋转:旋转后的主成分相关

本例中采用正交旋转中的方差极大旋转进行分析:

>rc<-principal(USJudgeRatings,nfactors = 1,rotate="varimax")
> rc

旋转后的结果如下:

3.6 计算主成分得分

  • 从原始数据中获取主成分得分
pc<-principal(USJudgeRatings,nfactors = 1,scores=T )
pc$scores
  • 当主成分分析基于相关系数矩阵时,无法从原始数据获得主成分得分,但是可以计算主成分得分的系数。
rc<-principal(cor(USJudgeRatings),nfactors = 1)

4 模型评价

从运行结果可知,PC1的累积方差贡献率为0.92,说明第一主成分可以解释原始变量92%的方差变化,模型拟合效果良好。

参考资料

[1]

基本思想: 《多元统计分析第5版_何晓群》

[2]

原则: 《R语言实战》

本文分享自微信公众号 - 庄闪闪的R语言手册(Zss_R4ds),作者:赵西西

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 主成分分析①

    principal() 含多种可选的方差旋转方法的主成分分析 fa() 可用主轴、最小残差、加权最小平方或最大似然法估计的因子分析 fa.paralle...

    用户1359560
  • 主成分分析

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    狼啸风云
  • 主成分分析 factoextra

    用户1359560
  • 主成分分析(PCA)

    主成分分析(Principal components analysis,简称PCA)是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用...

    AngelNH
  • 主成分分析PCA

    在机器学习中,特征的维度通常成百上千,给模型的设计和优化造成了困扰。因而如何找出对结果影响最大的影响因素自然而然的成为克服上述问题的一个可能途径。主成分分析(P...

    yangzelong
  • PCA主成分分析

    前面两节课跟大家分别介绍了聚类和关联规则,它们都属于无监督学习的典型应用,今天来介绍无监督学习的另外一种常见应用——降维!那么为什么要进行降维呢?因为高维的数据...

    用户7569543
  • 主成分分析(PCA)

    内容来源:https://zhuanlan.zhihu.com/p/36318506?utm_source=wechat_session&utm_medium=...

    小萌哥
  • 主成分分析PCA

    如图所示,这是一个二维点云,我们想找出方差最大的方向,如右图所示,这个最大方向的计算,就是PCA做的事情。在高维情况下,PCA不光可以计算出最大方差方向,还可以...

    NT4.4
  • 理解主成分分析

    在现实世界的数据分析任务中,我们面对的数据通常较为复杂,例如多维数据。我们绘制数据并希望从中找到各种模式,或者使用数据来训练机器学习模型。一种看待维度(dime...

    Alan Lee
  • PCA主成分分析(下)

    哦……可惜数学实际上没那么多想象的浪漫,它的极致应如潜入深海之渊,耐得住寂寞,踏实严谨。

    流川疯
  • PCA主成分分析(上)

    不知道你记得不记得凌晨杂货店门前卸货的年轻人,或者傍晚地铁口赶着公交上车的归家人。不,你不记得。因为他们对你来说并不重要。

    流川疯
  • 【技术分享】主成分分析

      主成分分析是最常用的一种降维方法。我们首先考虑一个问题:对于正交矩阵空间中的样本点,如何用一个超平面对所有样本进行恰当的表达。容易想到,如果这样的超平面存在...

    腾讯智能钛AI开发者
  • 理解主成分分析 (PCA)

    主成分分析法 (PCA) 是一种常用的数据分析手段。对于一组不同维度 之间可能存在线性相关关系的数据,PCA 能够把这组数据通过正交变换变 成各个维度之间线性无...

    SIGAI学习与实践平台
  • 降维:主成分分析(PCA)

    定义:可以将特征向量投影到低维空间,实现对特征向量的降维 步骤: 1.数据预处理。这里预处理包含俩个部分:均值归一化和属性范围调整。均值归一化是相应属性减去平均...

    用户1171305
  • 主成分分析(PCA)简介

    主成分分析实例:一个平均值为(1, 3)、标准差在(0.878, 0.478)方向上为3、在其正交方向为1的高斯分布。这里以黑色显示的两个向量是这个分布的协方差...

    iOSDevLog
  • python 进行主成分分析

    for root,dir,files in os.walk('my_images'):

    用户7886150
  • 主成分分析「 三维图 」

    主成分分析(Principal Component Analysis,PCA),是一种降维方法,也是在文章发表中常见的用于显示样本与样本之间差异性的计算工具。在...

    用户6317549
  • PCA主成分分析(完结)

    人有时候走着走着,放不下的东西太多,就会迷失自己。其实回归初心,换一个角度去看待问题,一切就变得豁然开朗了。

    流川疯
  • 聚类分析和主成分分析

    示例数据一:现有16种饮料的热量、咖啡因含量、钠含量和价格的数据,根据这4个变量对16饮料进行聚类

    生信技能树

扫码关注云+社区

领取腾讯云代金券