美文网首页
【批次效应】combat

【批次效应】combat

作者: jjjscuedu | 来源:发表于2021-11-27 12:47 被阅读0次

现在其实已经有很多处理批次效应的方法,有基本基于中心值和方差调整的,也有的利用神经网络,或者机器学习(例如cell-blast的生成对抗网络)的方法的。

下面这个研究比较了6种去除批次效应的方法,其中包括ComBat方法(parametric prior method,ComBat_p和non-parametric method,ComBat_n)、代理变量法(Surrogate variable analysis,SVA)、基于比值的方法(Geometric ratio-based method,Ratio_G)、平均中心方法(Mean-centering,PAMR)和距离加权判别(Distance-weighted discrimination,DWD)方法等。其中像combat和limma是自己以前在RNA-seq处理时候就接触和用过的。

也从5个参数(KBET、LISI、ASW、ARI和DEG),利用不同的类型的数据集对这些batch effect处理的方法进行了对比。

最后对于不同的数据集,给出了比较好的适应方法的建议。

我们最近有空也会对大多数工具进行一一的测试,看下性能和效应。

今天再学习一下combat。

早期的combat是为了处理microarray的batch effect的。

模型的假设是基于位置和尺度(Location and scale,L/S)的调整。L/S调整可以定义为一系列广泛的调整,其中为数据在批次内的位置(均值)和/或规模(方差)。

假设了一个模型,然后调整批次以满足假设模型的规范。因此,L/S批次调整假设批次效应可以通过标准化批次之间的均值和方差来建模。

这些调整可以从简单的基因范围的均值和方差标准化,到复杂的基因间线性或非线性调整。

其中:

Yijg表示来自批次i的样品j的基因g的表达值。

其中αg是基因g的平均表达值,X是样本条件的设计矩阵,βg是对应于X的回归系数向量。误差项εijg服从期望值为0和方差为σg的正态分布N(0,σg),γig和δig表示批次i中基因g加法和乘法的批次效应。

算法总共分为三步:

后面的comBat-seq主要为了更好的处理RNA-seq数据,因为作者认为对于RNA-seq数据也假设为高斯分布,可能不适用于RNA-seq的表达值。所以为了更好的处理RNA-seq,作者把模型拓展为negative binomial distribution(负二项式分布),然后基于负二项回归去处理模型。

===安装测试====

install.packages("sva")

library(sva)

library(bladderbatch)

使用内置的数据进行测试:

data(bladderdata)

dat <- bladderEset[1:50,]

pheno = pData(dat)

edata = exprs(dat)

batch = pheno$batch

//看下cluster的基本情况

dist_mat <- dist(t(edata))

clustering <- hclust(dist_mat, method ="complete")

plot(clustering, labels = pheno$batch)

plot(clustering, labels = pheno$cancer)

mod = model.matrix(~as.factor(cancer),data=pheno)

combat_edata <- ComBat(dat = edata,batch = pheno$batch, mod = mod)

:校正批次效应,model可以有也可以没有,如果有,也就是告诉combat,有些分组本来就有差别,不要给我矫枉过正!

dist_mat_combat <- dist(t(combat_edata))

clustering_combat <-hclust(dist_mat_combat, method = "complete")

plot(clustering_combat, labels = pheno$batch)

plot(clustering_combat, labels = pheno$cancer)

本文使用 文章同步助手 同步

相关文章

网友评论

      本文标题:【批次效应】combat

      本文链接:https://www.haomeiwen.com/subject/cenfxrtx.html