三级指标 主成分分析_一文看懂主成分分析(PCA)

本文深入浅出地介绍了主成分分析(PCA),从背景、步骤到实战应用,详细解析了PCA的原理和操作。通过实例展示了如何在R语言中进行主成分分析,包括数据预处理、特征值计算、主成分得分和散点图等,并探讨了PCA在生物信息学中的应用。此外,推荐了实用的R包如psych和factoextra,用于更高效地进行主成分分析。
摘要由CSDN通过智能技术生成

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个变量是什么,以及它们的相关性。library(knitr)

kable(head(USJudgeRatings))

这12个变量的介绍如下:[,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:数据标准化(中心化)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:求相关系数矩阵dat_cor=cor(dat_scale)

options(digits=4, scipen=4)

kable(dat_cor)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值