您可以用生存函数,而不是(1-CDF):
>>> from scipy import stats
>>> 1 - stats.chi2.cdf(332.185545938, 18.8967858326)
0.0
>>> stats.chi2.sf(332.185545938, 18.8967858326)
4.1718344487607692e-59
而且我们可以用分析CDF检查结果如下:
>>> import mpmath
>>> mpmath.mp.dps = 100
>>> def chi2_cdf(k,x): return mpmath.gammainc(x/2.0,0,k/2.0)/mpmath.gamma(x/2.0)
>>> chi2_cdf(332.185545938, 18.8967858326)
mpf('0.9999999999999999999999999999999999999999999999999999999999582816555123918223004416138082464542159504946')
>>> float(1-_)
4.171834448760817e-59
来源
2014-02-11 15:28:45
DSM
谢谢,我会做一点基准测试,看哪一个更快。可能是scipy的一个,但你永远不知道!干杯 –
@DavyKavanagh:几乎可以肯定是'scipy'。我只是需要一些方法来检查它是否给予了我认为给予的东西。 :^) – DSM