总结
DESeq2的标准化步骤分为:1.计算标准化因子;2.计算dispersion;3.拟合dispersion曲线 ;4.shrink到曲线附近
计算标准化因子
首先是对我们的count矩阵进行标准化处理,每一列sample都对应一个标准化因子,每一列的每一个元素都除以该标准化因子,即完成了标准化
我们的count data:
首先我们计算标准化因子:
type <- factor(c(rep("control",2),c("treat",2)))
dds <- DESeqDataSetFromMatrix(data, DataFrame(type), design= ~ type)
dds <- DESeq(dds)
dds.sizefactor <- estimateSizeFactors(dds)
sizeFactors(dds.sizefactor )
我们可以看到,每一个sample对应的标准化因子,那么每一个sample对应的那一列count值分别除以该标准化因子后,即得到标准化后的矩阵
估计离散值(dispersion)
由于我们的数据每一个处理都有若干个生物学重复,那么我们需要考虑组内(相同处理内)的一个离散程度,这里定义为离散度dispersion
离散度的定义式:
其中 α 即为 dispersion,var为组内方差,μ为组内平均表达量
由上式可知,方差增加,离散增加;平均表达量增加,离散减少
那么如何求解 dispersion呢?
拟合dispersion
根据上面所述,我们分别求出每个基因在各个处理之中平均表达量与对应的dispersion之间的散点图,并通过极大似然法拟合出曲线。上图为某处理中某处理各基因的离散度与平均表达量的散点图
收缩
这一步收缩(shrink)是因为DESeq2认为具有相似表达水平(相似平均表达量)的基因应该具有相似的离散度。
因此离散在红色拟合曲线上下的基因需要收缩到红色拟合曲线附近,以保证具有相似表达水平(相似平均表达量)的基因应该具有相似的离散度。这样矫正之后,DESeq2才继续进行建模,来计算差异表达基因
可以利用DESeq2软件的 lfcShrink() 函数实现收缩(shrink),收缩后的log2FC可能更好看一些,并不受极端值的影响