有小伙伴问什么是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的影响较大,我们在做之前需要去除批次效应。🫠
最后祝大家早日不卷!~