- batch effect(批次效应)
在高通量研究中,常常被忽略的一个问题就是批次效应,简单的说,批次效应就是由实验条件、试剂批次和实验人员等等因素的不同,而造成试验出现误差并混淆(confounding)试验结果。
- Simpson’s Paradox(辛普森悖论)
辛普森悖论是概率和统计学中的一种现象,即几组不同的数据中均存在一种趋势,但当这些数据组合在一起后,这种趋势消失或反转。而其中的原因通常是跟因素混淆有关,举例说明:
library(dagdata)
data(admissions)
head(admissions)
##admissions数据是6个不同的专业的录取记录
# Major Number Percent Gender total
#1 A 825 62 1 511.50
#2 B 560 63 1 352.80
#3 C 325 37 1 120.25
#4 D 417 33 1 137.61
#5 E 191 28 1 53.48
#6 F 373 6 1 22.38
##通过chi-square检测性别与录取率之间的关系
index <- admissions$Gender==1
men <- admissions[index,]
women <- admissions[!index,]
menYes <- sum(men$Number*men$Percent/100)
menNo <- sum(men$Number*(1-men$Percent/100))
womenYes <- sum(women$Number*women$Percent/100)
womenNo <- sum(women$Number*(1-women$Percent/100))
tab <- matrix(c(menYes,womenYes,menNo,womenNo),2,2)
print(chisq.test(tab)$p.val)
## [1] 9.139492e-22
p值小于0.05,即原假设应被拒绝(性别和录取比例是互相独立的)。但是如果我们依据专业对数据进行分组,这种相关性就会消失,原因在于“男性“与”难度较低的那些专业“这两个因素发生了混淆:
y=cbind(admissions[1:6,5],admissions[7:12,5])
y=sweep(y,2,colSums(y),"/")*100
x=rowMeans(cbind(admissions[1:6,3],admissions[7:12,3]))
library(rafalib)
mypar()
matplot(x,y,xlab="percent that gets in the major",ylab="percent that applies to major",col=c("blue","red"),cex=1.5)
legend("topleft",c("Male","Female"),col=c("blue","red"),pch=c("1","2"),box.lty=0)
从图中可以看出,男性其实是更倾向于被简单一些的专业录取的。但是,当我们使用专业这一因素对数据进行分层分析的话,批次效应就会消失:
y=cbind(admissions[1:6,3],admissions[7:12,3])
matplot(1:6,y,xaxt="n",xlab="major",ylab="percent",col=c("blue","red"),cex=1.5)
axis(1,1:6,LETTERS[1:6])
legend("topright",c("Male","Female"),col=c("blue","red"),pch=c("1","2"),
box.lty=0)
阅读原文请戳