R'的等价物是什么;s";菲珀;Python中的函数?

R'的等价物是什么;s";菲珀;Python中的函数?,python,statistics,Python,Statistics,在R中,我使用phyper函数对生物信息学分析进行超几何测试。然而,我使用了大量Python代码,在这里使用rpy2的速度非常慢。所以,我开始寻找替代品。似乎scipy.stats.hypergeom也有类似之处 目前,我这样调用phyper: pvalue <- 1-phyper(45, 92, 7518, 1329) 然而,这返回-7.345013484863151106E-12,这没有什么意义。请注意,我已经在其他数据上测试过了,但没有什么问题(相同的精度直到小数点后4位,这对我来

在R中,我使用
phyper
函数对生物信息学分析进行超几何测试。然而,我使用了大量Python代码,在这里使用rpy2的速度非常慢。所以,我开始寻找替代品。似乎
scipy.stats.hypergeom
也有类似之处

目前,我这样调用phyper:

pvalue <- 1-phyper(45, 92, 7518, 1329)
然而,这返回-7.345013484863151106E-12,这没有什么意义。请注意,我已经在其他数据上测试过了,但没有什么问题(相同的精度直到小数点后4位,这对我来说已经足够了)

因此,可以归结为以下几种可能性:

  • 我对作业使用了错误的函数(或错误的参数)
  • scipy里有一只虫子
  • 在“1”的情况下,除了phyper之外,还有其他可以在Python中使用的替代方法吗

    编辑:正如评论所指出的,这是scipy中的一个bug,在git master中已修复。

    从中,您可以尝试:

    hypergeom.sf(x,M,n,n,loc=0)
    : 生存功能(1-cdf-有时 (更准确)

    另外,我认为你可能把价值观混淆了

    从容器中创建图形对象模型。M 是对象的总数,n是总数 类型I对象的数量。RV计数 绘制N个图形中的I类对象数 没有人口的替代

    因此,通过我的阅读:
    x=q
    M=n+M
    n=M
    n=k

    因此,我会尝试:

    stats.hypergeom.sf(45,(92+7518),92,1329)
    

    仍然给出了一个负的p值,但是由于我做的其他测试是可比的,我想知道是否有任何我不知道的副作用。我认为这是scipy中的一个错误:@Einar看起来这个问题最近已经解决了:试着更新你的scipy安装注意到提交,我正在从git master构建,看看这个问题是否得到了解决。编辑:事实上,它在master中是固定的。我也将这个问题设置为正确的问题,因为实际上我在调用sf时也犯了一个错误,所以用这个我完全解决了这个问题。谢谢
    stats.hypergeom.sf(45,(92+7518),92,1329)