在R中,我使用
目前,我像这样调用
然而,这返回-7.3450134863151106e-12,这意义不大。请注意,我已在其他数据上进行了测试,并且几乎没有问题(精度相同,最多为第4位小数,这对我来说足够了)。
因此,它归结为以下可能性:
1. 我正在使用错误的功能(或错误的参数) 2. Scipy中存在错误
如果是“1”,是否有其他可用于Python的
编辑:正如评论所指出的,这是Scipy中的错误,在git主分支中已经修复。
phyper
函数进行生物信息学分析的超几何检验。然而,我使用了大量Python代码,并且在这里使用rpy2非常缓慢。因此,我开始寻找替代方案。似乎scipy.stats.hypergeom
有类似的功能。目前,我像这样调用
phyper
:pvalue <- 1-phyper(45, 92, 7518, 1329)
其中,45是具有感兴趣属性的选择项目数量,92是具有该属性的总项目数量,7518是不具有该属性的未选择项目数量,1329是选择项目的总数。
在R中,这将产生6.92113e-13
的结果。
然而,尝试使用scipy.stats.hypergeom
进行相同计算将产生完全不同的结果(请注意,数字被交换了,因为该函数以不同的方式接受数字):
import scipy.stats as stats
pvalue = 1-stats.hypergeom.cdf(45, 7518, 92. 1329)
print pvalue
然而,这返回-7.3450134863151106e-12,这意义不大。请注意,我已在其他数据上进行了测试,并且几乎没有问题(精度相同,最多为第4位小数,这对我来说足够了)。
因此,它归结为以下可能性:
1. 我正在使用错误的功能(或错误的参数) 2. Scipy中存在错误
如果是“1”,是否有其他可用于Python的
phyper
替代品?编辑:正如评论所指出的,这是Scipy中的错误,在git主分支中已经修复。