您可以用生存函數,而不是(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