本章作者主要是介绍了几种适合在高通量数据分析中发现其中问题的几种图形,我们以基因表达数据进行图形的绘制:
火山图
library(genefilter)
library(GSE5859Subset)
data(GSE5859Subset)
g <- factor(sampleInfo$group)
results <- rowttests(geneExpression,g)
plot(results$dm,-log10(results$p.value),
xlab="Effect size",ylab="- log (base 10) p-values")
volcano.png
上图中,x轴是效应量,在本例中即表达量的差值,y轴是以10为底的p值的负对数,p值越小,y值越大,所以在图形上方的那些基因,其表达量的差异将是十分显著的。所以,火山图可以在总体上了解差异显著的特征。
p值的直方图
在多重假设检验时,当大部分的零假设为真时,所得p值应大致为均匀分布,因此通过绘制p值的直方图,我们可以发现一些问题,比如是否存在相关样本:
#先生成一套零假设全部为真的数据
m <- nrow(geneExpression)
n <- ncol(geneExpression)
randomData <- matrix(rnorm(n*m),m,n)
nullpvals <- rowttests(randomData,g)$p.value
pvals <- results$p.value
library(rafalib)
mypar(1,2)
hist(nullpvals,ylim=c(0,1400))
hist(pvals,ylim=c(0,1400))
ph.png
另外还可以使用p值的直方图去观察样本之间是否互相独立:
permg <- sample(g)
permresults <- rowttest(geneExpression,permg)
hist(permresults$p.value)
permresults.png
这是因为,若样本间互相独立,那么p值也应该满足均匀分布,正如上图所示,一旦打乱分组(可能将具有关联的样本分到同一组),多重检验的p值就不再是均匀的了。
数据的箱型图以及直方图
- boxplot
如果说在很多基因中,有一个基因的表达量分布完全与其他基因不同,那么使用箱型图其实就可以观察到这一现象:
library(Biobase)
library(GSE5859)
data(GSE5859)
ge <- exprs(e) ##ge for gene expression
ge[,49] <- ge[,49]/log2(exp(1)) ##immitate error
library(rafalib)
mypar(1,1)
boxplot(ge,range=0,names=1:ncol(e),col=ifelse(1:ncol(ge)==49,1,2))
xxbox.png
但是当样本数过多时,可以选择画kaboxplot:
qs <- t(apply(ge,2,quantile,prob=c(0.05,0.25,0.5,0.75,0.95)))
matplot(qs,type="l",lty=1)
kaboxplot.png
这个图的逻辑就是求出几个分位数上的基因的表达量,然后绘制折线图,这样看起来就会直观很多。
- 直方图
还可以绘制光滑直方图来从总体上观察数据:
shist(ge,unit=0.5)
shistplot.png
MA图
即Bland-Altman图,用于比较两个计量资料之间的一致性,其作图方法是使用两个指标的均值作为横坐标,两个指标的差值作为纵坐标(或其他的),然后比较散点在1.96倍标准差线内分布的情况:
x <- ge[,1]
y <- ge[,2]
plot((x+y)/2,x-y)
MA.png
网友评论