Closed ixxmu closed 2 years ago
小编最近阅读文献的时候,发现了一篇由Markus发表在Nature Biotechnology上的论文[1],名为《What is princinpal component analysis?》,对于想要了解什么是主成分分析(PCA)的朋友们也许会有帮助。
那什么是PCA?
PCA是一种数学算法,可用于降低数据的维度,但同时尽可能保留原有数据的统计信息[2]。
比如,随着基因测序以及质谱等方法的出现,一个样本可以检测出成百上千个变量,这种数据即是典型的小n(样本)多p(变量)的高维度数据。
而面对这样的数据,不管是统计分析还是作图都非常有挑战性。
假如样本分为疾病组和正常组,用t检验一个一个的进行分组比较,会大大增高假阳性的风险(也称为Type I 错误[一张图搞定第一类错误与第二类错误])。同时,面对这么多的变量,作图也无从下手。
所以,如果可以将变量从几百或几千降到几个,同时又不丢失数据信息的话,对之后的数据探索以及作图都大有帮助,而PCA是数据降维方法中最经典以及被广泛使用的一种。
读懂六张图,助你基本入门PCA
论文作者[1]以乳腺癌方面的研究为例子。
首先,看第一张图:
来源:[1] Figure 1.b
来源:[1] Figure 1.c
如上图,可以将所有样本(点)投射到PC1上,后续将PC1作为新的变量,数据就从原来的二维降成了一维。
第四张图:
来源:[1] Figure 1.d
来源:[1] Figure 1.e
来源:[1] Figure 1.f
上图中的棕色指的是ERBB2-,蓝色指的是ERBB2+,绿色指的是ERBB2状态不明。
而在上图中,ERBB2状态不同的样本存在大量重叠,并不能将数据很好的进行分类。
作者使用上图的目的主要在于提醒大家:PCA本质上是一种数据降维以及将数据方差(或数据的信息)最大化的方法,并不是一种用于识别潜在亚组或用于分类的方法,至少不是那么有效。
PCA实战
好了,进入大家最喜欢的实战部分了!
主要是重复上述的第4张和第5张图片。
首先,安装PCA作图的包:
install.packages("factoextra")
library(factoextra)
summary(iris)
iris_reduced <- iris[, -5]
iris_pca <- prcomp(iris_reduced, scale. = TRUE)
summary(iris_pca)
fviz_eig(iris_pca,
barfill = "aquamarine3", # 修改颜色
barcolor = "aquamarine3") # 修改颜色
fviz_pca_biplot(iris_pca,
label = "var", # 显示4个变量名
ggtheme = theme_minimal()) +
labs(x = "PC1 (73%)", y = "PC2 (22.9%)")
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))
https://mp.weixin.qq.com/s/COYxW9QBAHpAupYRxPON1w