使用 R 的 phyper 获取列表重叠的概率

机器算法验证 r
2022-04-03 13:02:04

我知道我和其他人有时会对超几何分布 (HD) 感到困惑,因为它与重叠列表有关。这是因为 HD 通常用“瓮中的球”比喻来描述,而不是使用“重叠列表”。

根据超几何分布,对于下面列表中的重叠计算 p 值的正确方法是什么,理想情况下使用R 中的函数,其中BCphyper

  • A包含基因组中的所有基因
  • B是基因组中基因的一个子集
  • C是基因组中的另一个基因子集?
1个回答

试图将其转化为一个统计问题,您似乎有成员为 a 的群体,并且您在没有替换大小的情况下抽取了两个随机样本,并且您想要的分布,即出现在两个样本中的数字。abcX

作为说明,假设取样方式有100种,其中10种无共同点,60种共同点,30种共同点2种。它是一个瓮中黑白球的语言,瓮中有白球和黑球,我们取出个球,看看有多少个白球出来。在 R 中,我们可以有效地获得这些值 a=5b=2c=3b=2ab=3c=3

> totalpop <- 5 
> sample1  <- 2
> sample2  <- 3 
> dhyper(0:2, sample1, totalpop-sample1, sample2) 
[1] 0.1 0.6 0.3
> phyper(-1:2, sample1, totalpop-sample1, sample2) 
[1] 0.0 0.1 0.7 1.0

这证实了之前的计算。

如果你想测试一个数字overlap,那么从这个模型中得到这个数字或更小的概率是

phyper(overlap, sampleb, totala - sampleb, samplec) 

并且获得该数字或更大的是

1 - phyper(overlap - 1, sampleb, totala - sampleb, samplec)