首页 > 代码库 > 主成分分析(PCA)原理及R语言实现
主成分分析(PCA)原理及R语言实现
原理:
主成分分析 - stanford
主成分分析法 - 智库
主成分分析(Principal Component Analysis)原理
主成分分析及R语言案例 - 文库
主成分分析法的原理应用及计算步骤 - 文库
主成分分析之R篇
关于主成分分析的五个问题
多变量统计方法,通过析取主成分显出最大的个别差异,也用来削减回归分析和聚类分析中变量的数目,可以使用样本协方差矩阵或相关系数矩阵作为出发点进行分析。
通过对原始变量进行线性组合,得到优化的指标:把原先多个指标的计算降维为少量几个经过优化指标的计算(占去绝大部分份额)
基本思想:设法将原先众多具有一定相关性的指标,重新组合为一组新的互相独立的综合指标,并代替原先的指标。
小例子:以小学生基本生理属性为案例分享下R语言的具体实现,分别选取身高(x1)、体重(x2)、胸围(x3)和坐高(x4)。具体如下:
> student<- data.frame( + x1=c(148,139,160,149,159,142,153,150,151), + x2=c(41 ,34 , 49 ,36 ,45 ,31 ,43 ,43, 42), + x3=c(72 ,71 , 77 ,67 ,80 ,66 ,76 ,77,77), + x4=c(78 ,76 , 86 ,79 ,86 ,76 ,83 ,79 ,80) + ) > student.pr <- princomp(student,cor=TRUE) > summary(student.pr,loadings=TRUE) Importance of components: Comp.1 Comp.2 Comp.3 Comp.4 Standard deviation 1.884603 0.57380073 0.30944099 0.152548760 Proportion of Variance 0.887932 0.08231182 0.02393843 0.005817781 Cumulative Proportion 0.887932 0.97024379 0.99418222 1.000000000 Loadings: Comp.1 Comp.2 Comp.3 Comp.4 x1 -0.510 0.436 -0.139 0.728 x2 -0.513 -0.172 -0.741 -0.398 x3 -0.473 -0.761 0.396 0.201 x4 -0.504 0.448 0.524 -0.520 > screeplot(student.pr,type="lines")
standard deviation:标准差
Proportion of Variance:方差的占比
Cumulative Proportion:累计贡献率
由上图可见四项指标做分析后,给出了4个成分,他们的重要性分别为:0.887932、0.08231182、0.02393843、0.005817781,累积贡献为:0.887932、0.97024379、0.99418222 1.000000000各个成分的碎石图也如上,可见成份1和成份2的累积贡献已经达到95%,因此采用这两个成份便可充分解释学生的基本信息。
可以算出 Z1 和 Z2的公式
> temp<-predict(student.pr) > plot(temp[,1:2])
参考链接:R语言与数据分析之五:主成分分析(还有很多系列,慢慢看)
主成分分析在生物信息学中的运用:
主成分分析的主要步骤
主成份分析(PCA)在生物芯片样本筛选中的应用及在R语言中的实现
R语言多元分析
利用GCAT做主成分分析(PCA)
基因表达数据分析主成分分析 PCA
主成分分析(PCA)在组学数据质控中的运用
生物信息PCA主成分分析(原创)
RNA-seq高级分析之——主成分分析
RNA-seq中,主成分分析有什么意义?说白了,还是聚类!
主成分分析(Principal Component Analysis,PCA)的目标是用一组较少的不相关的变量代替大量相关变量,同时尽可能保留原始变量的信息,推导所得的变量就成为主成分,是原始变量的线性组合。也就是将N个变量(N维),通过线性组合,降维到K个综合变量(K维,K <N)来归纳性解释某一个现象。
先举个简单例子帮助理解吧:
某篮球俱乐部有40名男同学,同学之间各个指标存在或大或小的差异,包括身高、体重、视力、百米速度、肺活量、每天练球时长、睡眠时间等指标。在季度选拔中,40名同学进球得分数(成绩)存在差异,那么这些指标是否均与成绩相关?或者相关性有多大?
此时可能就要用到PCA,分析方法简述如下:
1选择初始变量
比如以上7个指标作为变量(a1 - a7),40名同学作为样本。
2对原始数据矩阵进行标准化,做相关系数矩阵
(1)原始数据矩阵:每行为40名男同学的各项指标值,每列为各项指标在40名同学中的体现;
(2)因为各个指标度量单位不同,取值范围不同,不宜直接由协方差矩阵出发,因此选择相关系数矩阵。
3计算特征值及相应特征向量
4判断主成分的个数
最常见的方式是根据特征值判断,一般选择特征值大于1的变量数作为PC个数,假如,此项分析中特征值大于1的有两个,则最终可以有2个主成分(具体主成分个数可以根据实际研究调整)。
5得到主成分表达式
通过分析得到第一主成分(PC1)和第二主成分(PC2),假设表达式如:(a1*表示a1标准化后的数值)
6结合数据的实际意义开展分析
PC1比PC2更能解释样本间差异的原因(如下图中横纵轴的百分比)。PC1的线性组合中a1、a2、a3、a6贡献度较大(前面的系数较大),PC2的线性组合中a5贡献度较大。以PC1为横轴,各个样本根据成绩大小有明显区分,说明以上7个指标中,身高、体重、视力、每天练球时长这4个指标与同学的成绩相关性更强。为了迎合线性组合的概念,应该找个更合适的词语来综合描述身高、体重、视力、每天练球时间这4个指标,以涵盖这4个指标的意义(好吧,可能小编举例不当,或者小编才疏学浅暂时想不出来~)。理解了以上的概念,再将主成分分析用于RNA-seq也很容易理解。
例如:
某个单细胞RNA-seq项目研究胚胎发育不同时期细胞的基因表达模式,研究这些细胞样本的分期是受哪些基因的调控?
样本可以是受精卵、2细胞胚、4细胞胚、8细胞胚、桑椹胚、囊胚等细胞。
PCA分析中,可以以样本为变量,对基因进行聚类。亦可以以基因为变量,对样本进行聚类,通过PC1便可以发现究竟是哪些基因对细胞分型具有重要意义。
额外资料:生物信息概述
主成分分析(PCA)原理及R语言实现