小编最近阅读文献的时候,发现了一篇由Markus发表在NatureBiotechnology上的论文[1],名为《Whatisprincinpalcomponentanlaysis?》,对于想要了解什么是主成分分析(PCA)的朋友们也许会有帮助。
那什么是PCA?
PCA是一种数学算法,可用于降低数据的维度,但同时尽可能保留原有数据的统计信息[2]。
而面对这样的数据,不管是统计分析还是作图都非常有挑战性。
假如样本分为疾病组和正常组,用t检验一个一个的进行分组比较,会大大增高假阳性的风险(也称为TypeI错误])。同时,面对这么多的变量,作图也无从下手。
所以,如果可以将变量从几百或几千降到几个,同时又不丢失数据信息的话,对之后的数据探索以及作图都大有帮助,而PCA是数据降维方法中最经典以及被广泛使用的一种。
读懂六张图,助你基本入门PCA
论文作者[1]以乳腺癌方面的研究为例子。
首先,看第一张图:
论文作者[1]举了一个最简单的例子,假设只检测了两个基因的表达水平:GATA3和XBP1。通过上述的两个变量,就可以画出散点图,图中的点即是不同的样本。
上述的样本又被进一步的分为雌激素受体阳性(红色)和阴性(黑色)。从上可知,雌激素受体阳性的样本主要分布在图片的右上角,即GATA3和XBP1的表达水平都比较高的地方。
这样的散点图,应该非常容易理解。
好了,第一步顺利完成。
再看第二张图:
那它是如何找到第一个主成分(PC1)的呢?
通过将点到PC1的垂直距离最小化,投射到PC1上的点的分布将会越广越散开,即达到方差最大化。从上图来说,这条直线接近对角线。
寻找PC2的方式非常类似,但要加上一点,PC2不能和PC1有关,也就是要求它们之间的关系是正交的(orthogonal)。
如果说上述的解释不好理解,那可以这么想:PC1和PC2其实并没有改变数据的本身,而是经过数学转换后,通过不同的角度看数据。
有点“横看成岭侧成峰”的意思,但庐山还是庐山。
将高维度的数据降维后,就可以选择PC1和PC2作为新的变量,用于后续数据的探索,作图和分析。
第三张图:
如上图,可以将所有样本(点)投射到PC1上,后续将PC1作为新的变量,数据就从原来的二维降成了一维。
第四张图:
前面的例子仅含有两个基因。
之后为了进一步说明,作者纳入105个样本,检测了8534个基因的表达水平,再进行了PCA分析。
我们发现,前面两个PCs(PC1和PC2)加起来大概可以解释数据方差的22%,前面63个PCs加起来可以解释数据方差的90%,而104个PCs几乎就可以解释100%的方差了[1]!
因此,PCA可以大大降低数据的维度(8634→104),同时并没有丢失数据的信息。
第五张图:
第五张图为“Biplot”,可以描述在PCs的体系中不同样本之间的关系(比如,哪些样本比较类似,哪些样本差异较大等信息)以及不同变量(这里指的是基因)对PCs的贡献度(也称为权重)。
因为每个基因的表达水平都对PCs的计算做出了一定的贡献,所以上图可以用它们的权重(weights)进行作图。
后面实战部分,会在R中重复作出biplot图。
第六张图:
上图中的棕色指的是ERBB2-,蓝色指的是ERBB2+,绿色指的是ERBB2状态不明。
而在上图中,ERBB2状态不同的样本存在大量重叠,并不能将数据很好的进行分类。
作者使用上图的目的主要在于提醒大家:PCA本质上是一种数据降维以及将数据方差(或数据的信息)最大化的方法,并不是一种用于识别潜在亚组或用于分类的方法,至少不是那么有效。
PCA实战
好了,进入大家最喜欢的实战部分了!
主要是重复上述的第4张和第5张图片。
首先,安装PCA作图的包:
install.packages("factoextra")library(factoextra)
查看数据“iris”:
summary(iris)
因为我们需要使用“iris”中的前四个连续变量进行PCA分析,所以将Species从数据中剔除后保存到新的数据集iris_reduced中:
iris_reduced<-iris[,-5]
PCA分析:
从上述结果可知,一共有4个主成分(PCs),PC1可以解释73%的信息,PC2可以解释22.9%的信息,所以PC1加上PC2可以解释95.9%的信息。如果使用PC1和PC2两个新变量的话,那就可以将数据中的变量从4个降到2个,还保留了数据的大部分信息。
也可以制作screeplot(上面的图4),更加直观的显示PCs能够解释的信息百分比:
fviz_eig(iris_pca,barfill="aquamarine3",#修改颜色barcolor="aquamarine3")#修改颜色
制作biplot(即上述的图5):
fviz_pca_biplot(iris_pca,label="var",#显示4个变量名ggtheme=theme_minimal())+labs(x="PC1(73%)",y="PC2(22.9%)")
还可以将“iris”中本身的类别标签(Species)在上图中显示出来:
fviz_pca_biplot(iris_pca,label="var",habillage=iris$Species,#添加组别的标签addEllipses=TRUE,#用椭圆形圈出相同组别的样本ellipse.level=0.95,palette="aaas",#修改颜色ggtheme=theme_minimal())+labs(x="PC1(73%)",y="PC2(22.9%)")+theme(legend.position=c(0.9,0.9))
好啦,今天的内容就到这里。
参考文献
[1].WhatisprincipalcomponentanalysisRingnérM,NatBiotechnol.2008Mar;26(3):303-4.
[2].Jolliffe,I.T.PrincipalComponentAnalysis(Springer,NewYork,2002).
【单体药理-Gut-if19.819】顶级研究团队联合揭示人参多糖可增强免疫疗法的抗肿瘤作用
2021-05-25
药理动物实验的这些问题你考虑到了吗-审稿老师问到我们应如何回复
2021-05-26
收藏!推荐几个素材库网站—图文摘要/基金流程图等或许有用
2021-05-24
【单体药理-IF13+】又添新作用!协和等团队揭示小檗碱调节肠脑轴治疗帕金森病
2021-05-21
全球前2%顶尖科学家榜单发布,200名中国药学学者入选(附名单)
2021-05-19
2021-05-16
【复方网药+代谢-专题头条】黄连解毒汤的抗抑郁活性通过网络药理和代谢组学分析
2021-05-15
中医临床疗效明确的经典复方为啥还要研究其作用及机制-以葛根芩连汤为例简单聊聊