如何选择单细胞测序分析中的主成分数量:策略学习
如何选择单细胞测序分析中的主成分数量:策略学习
在单细胞测序分析流程中,选择合适的主成分数量对于后续分析至关重要。过多或过少的主成分都可能对分析结果产生不利影响。
过多主成分的影响
过多的主成分可能会导致模型过拟合。PCA(主成分分析)通过将原始数据投影到新的轴(主成分)上,目的是提取数据中的主要变异。如果保留过多的主成分,模型可能会捕捉到数据中的噪声而非有意义的生物学信号,导致分析结果不具有泛化能力。
过少主成分的影响
过少的主成分可能会丢失重要的生物学信息。PCA通过减少数据的维度来简化数据集,但如果去除的主成分包含了对细胞群体分类有重要意义的信息,可能导致后续分析中细胞类型或亚群体的识别不准确。
如何选择合适的主成分数量
在实际分析中,通常会参考ElbowPlot来判断合适的主成分数量。ElbowPlot中,肘部位置通常对应方差贡献急剧下降的位置。通过观察曲线的弯曲点(即“肘部”位置),可以判断后续主成分所解释的方差增益较小,添加更多主成分可能不会显著提升数据解释能力。一般而言,这个位置可能在8-15个主成分之间。
多位专家对此问题也进行了讨论。例如,生信宝典的陈同教授引用了Biostars上Kevin Blighe教授的观点:“每个主成分会解释数据集中总体变异的一个比例。因此,选择主成分的数量应该基于其解释的变异比例,而不是简单的数量。陈同教授个人倾向于选择7-12个主成分,而技能树的建明老师则通常选择15个。Seurat官方流程中甚至直接选择了30个主成分。
笔者的建议
在选择主成分数量时,除了考虑合理范围,还需要决定是选择低值、中值还是高值。笔者倾向于选择稍大一点的主成分值,例如在8-15的范围内选择15个。
具体分析工具的使用
如果需要更精确的数值,可以使用以下几种分析工具:
- ElbowPlot
rm(list = ls())
library(Seurat)
library(findPC)
library(ggplot2)
load("scRNA.Rdata") # 老演员了
DimPlot(scRNA)
ElbowPlot(scRNA, ndims = 50)
从视觉上来看,主成分数量大约在7-13左右。
- findPC
# Seurat V5
stdev_sorted <- sort(scRNA@reductions$pca@stdev, decreasing = TRUE)
stdev_sorted
findPC(sdev = stdev_sorted, # 主成分降序排列
number = 50, # number数量不需要
method = "all", # 所有的方法都看一下,默认方法是perpendicular line
figure = T)
不同方法得到的主成分数量在7-12左右,4是一个异常值。
- PCAtools
# PCAtools
library(PCAtools)
elbow <- findElbowPoint(stdev_sorted)
elbow
# [1] 8
经典PCAtools工具得到的值是8。
参考资料
- Seurat: https://satijalab.org/seurat/articles/seurat5_integration
- Biostars (How to Choose PCs from a HeatMap): https://www.biostars.org/p/410640/
- findPC: https://github.com/haotian-zhuang/findPC
- PCAtools: https://bioconductor.org/packages/devel/bioc/vignettes/PCAtools/inst/doc/PCAtools.html#determine-optimum-number-of-pcs-to-retain
- 生信宝典: https://mp.weixin.qq.com/s/DJMk-UR0oJ1-v1G3t0AhcA
- 单细胞天地—单细胞常见图表合集
注:本文内容来自CSDN,原文作者zfyyzhys,原文链接:https://m.blog.csdn.net/zfyyzhys/article/details/145568325。若对内容有疑惑或发现明确错误,请联系后台(欢迎交流)。更多相关内容可关注公众号:生信方舟。