假设检验[2]--Fisher精确检验(超几何分布、富集分析、Fisher's Exact Test)

经常看到一些饼图,描述某些事物的组成,比如说有钱人的学历分布,然后我们可以看到高学历所占比例并不高,根据这个比例下结论通常是错的,这些比例说明不了问题,如果把各种学历在总体人口中的分布做为背景进行考虑的话,你就会发现学历还是有点用的。

当我们用组学测定了一大堆分子之后,我们希望站在更高的角度去看这些分子和那些生物学过程相关。那么通常各种注释,对这些基因/蛋白进行分类,那么从分类的比例上,是不能草率下结论,正如上面有钱人学历分布的例子一样。我们需要把总体的分布考虑进去。

在做富集分析的时候,会涉及到这么一个概念。

检验两个二进制变量是否是独立的。该检验可以分析 2x2 列联表,并产生精确的 p 值,以检验以下假设:

  • H0:行变量和列变量是独立的
  • H1:行变量和列变量是相关的

Fisher 精确检验中的 p 值对于所有样本数量都是准确的,而当单元格计数较小时,用于检查相同假设的卡方检验的结果可能不准确。

例如,可以使用 Fisher 精确检验来分析下面的竞选结果列联表,以确定投票是否独立于投票人的性别。

- 候选人 A 候选人 B
9 26
21 35

转化为概率问题就是,从9+21+26+35=91个里面有30个候选人a,61个候选人b,从中抽取35人,9人为候选人a,26人为候选人b的概率,p=(309)(6126)/(9135)。对于该表,Fisher 精确检验产生的 p 值为0.263。由于该 p 值大于常用的 a 水平0.05,因此数据与原假设一致。因而,没有证据表明在竞选中投票人的性别会影响其选择。

您还可以使用 Fisher 精确检验来确定两个总体比率是否相等。对于此应用,原假设假定两个总体比率是相等的 (H0:p1 = p2);备择假设可以是左尾 (p1 < p2)、右尾 (p1 > p2),或双尾 (p1≠p2)。Fisher 精确检验作为两个比率的检验十分有用,因为它对于所有样本数量都是准确的,而当事件数小于 5 时,以及试验数减去事件数的结果小于 5 时,基于正态近似的 2 个比率的检验可能不准确。

Fisher 精确检验基于超几何分布。因此,p 值在表的边际合计中是有条件的。

四格列联表的独立性或齐性χ2检验法,当理论频数小于5或总观测频数小于30时,一般统计书都用Fisher的概率检验法

在研究生教学用书《医学统计学 》中有描述:当四格表中的总观测频数小于40,或者理论频数小于1时,或者用卡方专用公式得到的p值和阈值(0.05)接近时,用Fisher的概率检验法,可能是想提高关联的精确性吧

ps:这个就相当于求出事情发生的概率,如果发生概率大于0.05,就说明有可能发生,无影响。

五、代码实现;

fisher.test()

六、具体应用

富集分析需要用到的工具:

  • GOstat
  • 跟 david 和 onto——tool比较来说了
  • onto-tool
  • GOEAST
  • wego
  • go slim
  • GSEA貌似是最有名的软件,但是搞了半天,发现是基于芯片的分析软件,各种输入文件的要求
  • DAVID直接通过gene id或者symbol做GO富集分析

注:本来是想做go,kegg的富集分析的,后来发现,做富集分析需要两个条件:

  1. 针对差异表达的基因(比如说基因芯片或者转录组的数据)
  2. 需要该物种的基因组的所有基因组注释结果作为背景。

参考资料:

个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn

Sam avatar
About Sam
专注生物信息 专注转化医学