R语言实现去除批次效应

本文探讨了在R语言中去除批次效应的方法,特别是在合并GEO数据库的不同GSE数据集时的应用。通过实例展示了去批次效应对合并数据的影响,指出尽管GEO和TCGA数据类型不同,但去除批次效应可以改善模型验证的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在整理GEO数据库中的数据时,我们常遇到来源于不同的GSE数据集,为增大样本量,常需要合并数据集,但是由于种种原因:不同技术人员、试剂、仪器、时间等导致,导致相同研究的结果存在数据偏差,此时需要进行校正。

基本方法:

样本量较少

#校正批次效应
library(limma)
y <- matrix(rnorm(20*9),20,9)
y[,1:3] <- y[,1:3] + 5
y[,c(3,6,9)]<y[,c(3,6,9)]+100
batch <- c("A","A","A","B","B","B","C","C","C")
#加入design
grouplist<-rep(c("tum","unkown","nor"),3)
g=factor(grouplist)
g
design1=model.matrix(~g)
#使用removeBatchEffect
y2 <- removeBatchEffect(y, batch)
y3<-removeBatchEffect(y, batch=batch,design=design1)
par(mfrow=c(1,3))
boxplot(as.data.frame(y),main="Original")
boxplot(as.data.frame(y2),main="Batch corrected")
boxplot(as.data.frame(y3),main="Batch-design corrected")
#使用ComBat
library(sva)
C1<-ComBat(dat = y,batch=batch,mod=NULL)
C2<-ComBat(dat = y,batch=batch,mod=design1)
par(mfrow=c(1,2))
boxplot(as.data.frame(C1),main="Batch corrected")
boxplot(as.data.frame(C2),main="Batch-design corrected")
#对比removeBatchEffect和ComBat
library(vioplot)
par(mfrow=c(1,2))
vioplot(as.data.frame(y2),main="removeBatchEffect corrected")
vioplot(as.data.frame(C2),main="ComBat corrected")
#相较而言,效果差不多,ComBat对处理不同批次下的分组效果更加明显

 

 

 样本量较多

#样本数量多
library(limma)
y <- matrix(rnorm(20*90),20,90)
y[,1:30] <- y[,1:30] + 5
y[,31:60] <- y[,31:60] + 50
y[,c(1:15,31:45,61:75)]<y[,c(1:15,31:45,61:75)]+100
batch <- c(rep("A",30),rep("B",30),rep("C",30))
#加入design
grouplist<-rep(c("tum","nor"),45)
g=factor(grouplist)
g
design1=model.matrix(~g)
#使用removeBatchEffect
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值