过滤探针
过滤探针的原因
表达谱芯片上的探针往往能够覆盖到所有人类基因,也就是说,能够同时检测所有人类基因的表达。但先前的实验表明,一个细胞中不可能所有基因都同时表达,能够同时表达的基因反而是少数。同时表达的基因约占总基因的40%左右。
由于探针与目标之间一定存在着非特异性结合,所以所有的探针均会产生信号。如果不加以过滤,认为这些探针对应的基因都表达,即不符合事实,也会对后续的分析产生影响。因此,过滤掉表达量低的探针是十分必要的。
注意,limma包的说明里面提供了两点建议。一,如果要进行探针过滤(filter),最好在进行标准化之后再过滤。二,如果要在后续分析中使用limma包,请不要进行基于方差(variance)的过滤,否则会影响方差分布,从而导致limma包处理产生糟糕的结果(poor results)。
过滤探针的方法
bioconductor提供了两种过滤探针的方法,一种是使用专门进行探针过滤的genefilter包进行过滤,另一种是使用affy包中的mas5calls函数进行探针过滤。下面会详细解释如何进行探针过滤。
1 使用genefilter包进行探针过滤
根据genefilter包的技术文档介绍,genefilter包设计的出发点是进行independent filtering。我们知道,检测差异基因表达是表达谱芯片最重要的功能之一。而检测差异基因表达的方法是进行对每一个基因进行统计检验。
所谓的independent filtering,意思是在进行统计检验之前,筛掉那些不能或是很可能不能通过显著性检验的探针。independent filtering不依赖于统计检验,在保持一类错误率(即假阳性率)不变的条件下,能够增加检验效能。
一个好的filtering criterion拥有下面三个特点:
1、在零假设的条件下,独立于统计检验
2、在备择假设的条件下,与统计检验相关联
3、在联合检验中不显著改变依赖结构
genefilter包中有两个常用的函数能够进行探针过滤,一个是genefilter函数,另一个是nsFilter函数。
使用genefilter函数进行探针过滤
genefilter函数需要用户指定筛选检验方式。用法如下。
genefilter(expr, flist)
expr是表达矩阵,需要用expr(ExpressionSet)
或expr(AffyBatch)
对ExpressionSet或AffyBatch进行提取。flist是包含检验方法的list,可以同时包含多个检验方法,同时进行多个检验,取交集。
举个例子。例子来源于genefilter包的技术支持文档。sample.ExpressionSet来自Biobase包。
library("Biobase")
library("genefilter")
data(sample.ExpressionSet)
f1 <- kOverA(5, 200)
ffun <- filterfun(f1)
wh1 <- genefilter(exprs(sample.ExpressionSet), ffun)
sum(wh1)
[1] 159
f1函数的意思是指筛选出至少在5个样本中表达量超过200的基因。最终筛选到了159个基因。
再给一个例子。
f2 <- ttest(sample.Expressi