没有SciPy的PDF和CDF

时间:2012-04-24 17:03:24

标签: python statistics scipy

我需要在我正在编程的Python应用程序中使用概率和累积密度函数。 SciPy提供了这两种功能,但对于这两种功能似乎过于依赖。如果没有SciPy,PDF似乎很容易实现。 (From the docs:

  

规范的概率密度函数是:

     

norm.pdf(x)= exp(-x ** 2/2)/ sqrt(2 * pi)

有没有办法在没有的情况下使用SciPy获取CDF?

2 个答案:

答案 0 :(得分:3)

您正在寻找“错误功能”,请参阅the math module。它没有elementary functions的封闭表格。

请注意,math.erf(x)是在python 2.7中引入的。如果您使用的是早期版本,则必须使用an approximation

答案 1 :(得分:2)

请参阅this post

from math import *
def erfcc(x):
    """Complementary error function."""
    z = abs(x)
    t = 1. / (1. + 0.5*z)
    r = t * exp(-z*z-1.26551223+t*(1.00002368+t*(.37409196+
        t*(.09678418+t*(-.18628806+t*(.27886807+
        t*(-1.13520398+t*(1.48851587+t*(-.82215223+
        t*.17087277)))))))))
    if (x >= 0.):
        return r
    else:
        return 2. - r

def ncdf(x):
    return 1. - 0.5*erfcc(x/(2**0.5))