我需要在我正在编程的Python应用程序中使用概率和累积密度函数。 SciPy提供了这两种功能,但对于这两种功能似乎过于依赖。如果没有SciPy,PDF似乎很容易实现。 (From the docs:)
规范的概率密度函数是:
norm.pdf(x)= exp(-x ** 2/2)/ sqrt(2 * pi)
有没有办法在没有的情况下使用SciPy获取CDF?
答案 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))