前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >校正批次效应

校正批次效应

作者头像
生信技能树
发布2018-07-27 14:28:48
1.5K0
发布2018-07-27 14:28:48
举报
文章被收录于专栏:生信技能树生信技能树

一般情况下我们最好是在实验设计上就考虑到这一点。

但很多时候,数据分析者往往身不由己。

Stanford 大学 在MOOC上面的公开课:PH525x series - Biomedical Data Science 还专门抽一个章节来讲解这个问题,足以见它的重要性。 http://genomicsclass.github.io/book/

Chapter 10 - Batch Effects

  • Introduction to batch effects [Rmd]
  • Confounding [Rmd]
  • Confounding exercises
  • EDA with PCA [Rmd]
  • EDA with PCA exercises
  • Adjusting with linear models [Rmd]
  • Adjusting with linear models exercises
  • Factor analysis [Rmd]
  • Factor analysis exercises
  • Adjusting with factor analysis [Rmd]
  • Adjusting with factor analysis exercises

最简单的是quantile

代码语言:javascript
复制
library("preprocessCore")
dataMat <- cbind(trainExprMat, testExprMat)
dataMatNorm <- normalize.quantiles(dataMat)
whichbatch <- as.factor(c(rep("train", ncol(trainExprMat)), rep("test", ncol(testExprMat))))
train=dataMatNorm[, whichbatch=="train"]
test=dataMatNorm[, whichbatch=="test"]

很明显,画一下校正前后的 boxplot 就可以看到效果,然后PCA一下,看看是不是两个矩阵很清晰的被分开,如果是,说明校正失败咯。

高级一点是SVA包的ComBat函数

代码语言:javascript
复制
library("sva")
# subset to common genes andbatch correct using ComBat
dataMat <- cbind(trainExprMat, testExprMat)
mod <- data.frame("(Intercept)"=rep(1, ncol(dataMat)))
rownames(mod) <- colnames(dataMat)
whichbatch <- as.factor(c(rep("train", ncol(trainExprMat)), rep("test", ncol(testExprMat))))
combatout <- ComBat(dataMat, whichbatch, mod=mod)
train=combatout[, whichbatch=="train"]
test=combatout[, whichbatch=="test"]

还有limma包也附带了这个功能,就不多介绍了,感兴趣的朋友可以自行在生信技能树论坛搜索看看。

10年nature有一篇综述,专门讲这个问题。 不同平台的数据,同一平台的不同时期的数据,同一个样品不同试剂的数据,以及同一个样品不同时间的数据等等都会产生一种batch effect 。这种影响如果广泛存在应该被足够重视,否则会导致整个实验和最终的结论失败。 比对实验组和对照组,不同的处理是患病和不患病(测序时,先测得疾病,然后测得正常),然后你通过分析,得到很多差异表达的基因。现在问题来了,这个差异表达的结果是和你要研究的因素有关,还是时间有关,这个问题里时间就会成为干扰实验结果的因素,这个效应就是其中一种比较能理解的 batch effect。

PCA查看矫正前后效果

图来源:https://www.researchgate.net/figure/PCA-analysis-of-normalized-gene-expression-data-before-and-after-batch-effect-analysis_fig2_260217085 点击下面的的阅读原文,文章里面的链接都是可以跳转的

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 最简单的是quantile
  • 高级一点是SVA包的ComBat函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档