前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文看懂主成分分析(文末推荐视频教程)

一文看懂主成分分析(文末推荐视频教程)

作者头像
生信技能树
发布2020-03-04 11:40:29
1.3K0
发布2020-03-04 11:40:29
举报
文章被收录于专栏:生信技能树
  • 1 背景
  • 2 拆解主成分分析步骤
    • 2.1 测试数据
    • 2.2 为什么要做主成分分析
    • 2.3 step1:数据标准化(中心化)
    • 2.4 step2:求相关系数矩阵
    • 2.5 step3:计算特征值和特征向量
    • 2.6 step4:崖低碎石图和累积贡献图
    • 2.7 step5:主成分载荷
    • 2.8 step6:主成分得分计算和图示
  • 3 实战一
  • 4 实战二
  • 5 进阶的主成分分析-psych包
  • 6 推荐一个R包factoextra
  • 7.主成分分析的生物信息学应用
  • 8. 主成分分析的其它可视化方法
  • 9.其它学习资料

1 背景

主成分分析法是数据挖掘中常用的一种降维算法,是Pearson在1901年提出的,再后来由hotelling在1933年加以发展提出的一种多变量的统计方法,其最主要的用途在于“降维”,通过析取主成分显出的最大的个别差异,也可以用来削减回归分析和聚类分析中变量的数目,与因子分析类似。

所谓降维,就是把具有相关性的变量数目减少,用较少的变量来取代原先变量。如果原始变量互相正交,即没有相关性,则主成分分析没有效果。

在生物信息学的实际应用情况中,通常是得到了成百上千个基因的信息,这些基因相互之间会有影响,通过主成分分析后,得到有限的几个主成分就可以代表它们的基因了。也就是所谓的降维。

R语言有非常多的途径做主成分分析,比如自带的princomp()和psych包的principal()函数,还有gmodels包的fast.prcomp函数。

2 拆解主成分分析步骤

实际应用时我们通常会选择主成分分析函数,大部分情况下都是直接把input数据一步分析到位,只需要看懂输出结果即可。但是为了加深理解,这里一步步拆解主成分分析步骤,讲解原理。

2.1 测试数据

数据集USJudgeRatings包含了律师对美国高等法院法官的评分。数据框包含43个样本,12个变量!

下面简单看一看这12个变量是什么,以及它们的相关性。

代码语言:javascript
复制
library(knitr)
kable(head(USJudgeRatings))

这12个变量的介绍如下:

代码语言:javascript
复制
[,1]    CONT    Number of contacts of lawyer with judge.
[,2]    INTG    Judicial integrity.司法诚实性
[,3]    DMNR    Demeanor.风度;举止;行为
[,4]    DILG    Diligence.勤奋,勤勉;注意的程度
[,5]    CFMG    Case flow managing.
[,6]    DECI    Prompt decisions.
[,7]    PREP    Preparation for trial.
[,8]    FAMI    Familiarity with law.
[,9]    ORAL    Sound oral rulings.
[,10]   WRIT    Sound written rulings.
[,11]   PHYS    Physical ability.
[,12]   RTEN    Worthy of retention.

这些是专业领域的用词,大家可以先不用纠结具体细节。只需知道律师对美国高等法院法官的评分指标之间是互相关联的即可.

2.2 为什么要做主成分分析

不管三七二十一就直接套用统计方法都是耍流氓,做主成分分析并不是拍脑袋决定的。 在这个例子里面,我们拿到了这43个法官的12个信息,就可以通过这12个指标来对法官进行分类,但也许实际情况下收集其他法官的12个信息比较麻烦,所以我们希望只收集三五个信息即可,然后也想达到比较好的分类效果。或者至少也得剔除几个指标吧,这个时候主成分分析就能派上用场啦。这12个变量能得到12个主成分,如果前两个主成分可以揭示85%以上的变异度,也就是说我们可以用两个主成分来代替那12个指标。

在生物信息学领域,比如我们测了1000个病人的2万个基因的表达矩阵,同时也有他们的健康状态信息。那么我们想仔细研究这些数据,想得到基因表达与健康状态的某种关系。这样我就可以对其余几十亿的人检测基因表达来预测其健康状态。如果我们进行了主成分分析,就可以选择解释度比较高的主成分对应的基因,可能就几十上百个而已,大幅度的降低广泛的基因检测成本。只需要检测那些有代表性的关键基因即可!

2.3 step1:数据标准化(中心化)

代码语言:javascript
复制
dat_scale=scale(USJudgeRatings,scale=F)
options(digits=4, scipen=4)
kable(head(dat_scale))

scale()是对数据中心化的函数,当参数scale=F时,表示将数据按列减去平均值,scale=T表示按列进行标准化,公式为(x-mean(x))/sd(x),本例采用中心化。

2.4 step2:求相关系数矩阵

代码语言:javascript
复制
dat_cor=cor(dat_scale)
options(digits=4, scipen=4)
kable(dat_cor)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 背景
  • 2 拆解主成分分析步骤
    • 2.1 测试数据
      • 2.2 为什么要做主成分分析
        • 2.3 step1:数据标准化(中心化)
          • 2.4 step2:求相关系数矩阵
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档