有小伙伴问什么是PCA
🧐,我们这期简单介绍一下PCA
的概念,以及影响因素。👇
PCA
,Principal component analysis
(主成分分析
),是考察多个变量间相关性的一种多元统计方法,研究如何通过少数几个主成分来揭示多个变量间的内部结构,即从原始变量中导出少数几个主成分,使它们尽可能多地保留原始变量的信息,将原来n
个指标作线性或非线性组合,作为新的综合指标。🥰
rm(list = ls())
library(tidyverse)
library(SingleCellExperiment)
library(scater)
这里我们用一下之前介绍的counts
文件和annotation
文件,然后通过SingleCellExperiment
创建SingleCellExperiment
格式的文件,并且经过初步过滤
,ID转换
等。
load("umi_umiqc.Rdata")
umi.qc
我们可以利用PCA
来探索不同因素
对PCA
的影响。这里我们看一下sum
。
umi.qc <- runPCA(umi.qc, exprs_values = "logcounts_raw")
dim(reducedDim(umi.qc, "PCA"))
plotPCA(umi.qc, colour_by = "batch", size_by = "sum", shape_by = "individual")
这里我们可以看到总UMI
数可以解释86%
的PC1
。
logcounts(umi.qc) <- assay(umi.qc, "logcounts_raw")
getExplanatoryPCs(umi.qc,variables = "sum")
plotExplanatoryPCs(umi.qc,variables = "sum")
这里我们用scater
包的plotExplanatoryVariables
函数计算一下可能的影响因素(variables
)的密度图,实际上这里先做了一个线性回归拟合
,然后做density plot
。
plotExplanatoryVariables(umi.qc,exprs_values = "logcounts_raw", variables = c("detected","sum","batch", "individual","altexps_ERCC_percent","subsets_Mito_percent"))
从这个图可以看出,detected genes
和number of counts
对许多基因有很大的解释力,因此这些变量是在normalisation
或下游分析
的时候需要考虑到。
Note! 这里Batch
的解释力超过了individual
的,说明batch effet
对PCA
的影响较大,我们在做之前需要去除批次效应。🫠
最后祝大家早日不卷!~