批次效应
批次效应是测量结果中的一部分,它们因为实验条件的不同而具有不同的表现形式,并且与我们研究的变量没有关系。不同平台的数据,同一平台的不同时期的数据,同一个样品不同试剂的数据,以及同一个样品不同时间的数据等等都会产生一种 batch effect。校正批次效应的目的是减少batch之间的差异,从而更好的获取不同生物学状态之间的差异。
载入包、GEO数据
数据为GEO芯片与RNAseq数据。
BiocManager::install("sva")
BiocManager::install("bladderbatch")
library(sva)
library(bladderbatch)
load("GeoData.rda")
#原始数据
FPKM[1:5,1:5]
GSE102746_UC_1 GSE102746_UC_2 GSE102746_UC_3 GSE102746_UC_4 GSE102746_UC_5
ENSG00000008300 0.795651 12.74320 12.8748 0.296484 1.70187
ENSG00000044574 83.731600 167.95100 29.3973 85.368700 49.98990
ENSG00000067082 78.742500 130.74000 64.4235 68.536000 80.07060
ENSG00000071575 9.407460 8.30127 30.0466 9.541390 7.68865
ENSG00000089159 29.575000 59.32220 17.5021 27.272200 22.99260
#批次信息
sample_infor[1:5,]
sample_name GSE_name Batch_GSE data_type disease
GSE102746_UC_1 GSE102746_UC_1 GSE102746 1 test_data UC
GSE102746_UC_2 GSE102746_UC_2 GSE102746 1 test_data UC
GSE102746_UC_3 GSE102746_UC_3 GSE102746 1 test_data UC
GSE102746_UC_4 GSE102746_UC_4 GSE102746 1 test_data UC
GSE102746_UC_5 GSE102746_UC_5 GSE102746 1 test_data UC
PCA可视化不同GEO数据
library("FactoMineR")
library("factoextra")
pca.plot = function(dat,col){
df.pca <- PCA(t(dat), graph = FALSE)
fviz_pca_ind(df.pca,
geom.ind = "point",
col.ind = col ,
addEllipses = TRUE,
legend.title = "Groups"
)
}
pca.plot(FPKM,factor(sample_infor$GSE_name))
批次校正
#设置model(可选)
mod = model.matrix(~as.factor(disease), data=sample_infor)
#校正其实就一步
combat_FPKM <- ComBat(dat = as.matrix(log2(FPKM+1)), batch = sample_infor$Batch_GSE,mod = mod,
par.prior = F)
pca.plot(combat_FPKM,factor(sample_infor$GSE_name))
经校正后不同批次处于同一水平上,校正前后具有明显差异