仓库源文站点原文


title: 富集分析原理 tags:


对于基因集功能富集分析原理之前一直不怎么清楚,虽然已经可以做出 GO/KEGG 富集分析,但原理还没有去学习过,这显然是不行的。参考了许多老师的文章,写一下自己对于富集分析原理的理解。

<!--more-->

首先以统计学中经典的抽球的例子来说明(借鉴 CJ 老师的文章):

假设现在有 A、B、C 三个人从一个袋子里不放回地抽球,袋子里有 20 个白球和 80 个黑球共计 100 个小球,A 随机抽出 2 个白球 8 个黑球

背景 抽球
黑球 80 8
白球 20 2

抽到白球的概率是 20%。

那么 A 抽出白球的概率和背景中抽出白球的概率是一致的,也可以说 A 抽出白球的概率是随机的。

B 随机抽出 3 个白球 7 个黑球

背景 抽球
黑球 80 7
白球 20 3

抽到白球的概率是 30%。

C 随机抽出 10 个白球 0 个黑球

背景 抽球
黑球 80 0
白球 20 10

抽到白球的概率是 100%。

现在来看看上面三种情况,A 的情况是随机可以发生的;B 的情况有一定的概率发生;而 C 的情况基本上可以表明其一定会发生,也就是说 C 可以仅仅只抽出白球。

这个例子放在生物信息学中也同样使用,只不过将袋子中的 100 个球换成了不同的基因功能。

假设我们现在通过转录组数据得到了 10 个差异表达基因,这个物种有 100 个基因,那么如果有 20 个基因在数据库中的注释表明其与激素响应相关,80 个不相关,我们如何确定差异基因是否与激素响应相关?

这里也涉及到一个检验的问题,回到抽球问题中,A 抽到白球的概率是 20%、B 抽到白球的概率是 30%、C 抽到白球的概率是 100%,它们都超过或者等于背景中白球的概率,那么我们就需要对其检验,保证其不是因为随机波动而产生的结果,也就是计算超几何分布的概率:

$$P(X = k) = \frac{{\binom{K}{k} \cdot \binom{N-K}{n-k}}}{{\binom{N}{n}}}$$

对于 B:

$$P(X = 3) = \frac{{\binom{20}{3} \cdot \binom{100-20}{10-3}}}{{\binom{100}{10}}} = 0.3187799$$

对于 C:

$$P(X = 10) = \frac{{\binom{20}{10} \cdot \binom{100-20}{10-10}}}{{\binom{100}{10}}} = 1.067318e-08$$

超几何分布的概率越小,说明白球在抽出来的球中占比越大,我们越能保证其富集结果的准确,这里的超几何分布概率就是 GO/KEGG 富集分析结果中的 p 值。

如果鉴定的这 10 个差异表达基因中 2 个与激素响应相关,那么我们无法确定差异基因是否与激素响应相关,因为随机性太强,也就是说发生的概率是随机的;如果有 3 个与激素响应相关呢?它的超几何分布概率大于 0,我们也无法确定,因为这种可能性发生的概率依旧比较大;如果 10 个基因全部与激素响应相关呢?它的超几何分布已经非常小了,说明其发生误差的可能性极小,那么我们似乎就可以认为这些基因是与激素响应相关的。

这里还要区分“富集”与“富集显著”的概念:

上述按理,B 和 C 抽白球比例都各自超过背景比例,那么这种情况类比上,就是“富集”,因为偏离了背景。但是通过检验,B 抽白球出现的情况更可能是一种随机波动,而 C 抽取白球出现的情况则明显非正常,类比下,就是“富集显著”。

结合到生物信息学中,我们从转录组数据的差异表达分析中得到一系列差异表达基因,然后根据富集分析将这些基因按照功能进行归类,通过 p 值检验哪些归类的结果是随机的,去掉这些随机的结果就可以得到可靠的归类结果,再按照归类的基因功能去寻找我们感兴趣的基因。