如何在python中计算正态分布的累积分布函数而不使用scipy?
我特别指的是此函数:
from scipy.stats import norm
norm.cdf(1.96)
我有一个在Heroku上运行的Django应用程序,让scipy在Heroku上运行起来相当麻烦。由于我只需要从scipy中使用这一个函数,我希望能够使用替代方案。我已经在使用numpy和pandas,但是在它们中找不到这个函数。是否有其他可用的包或者我可以自己实现这个功能?
如何在python中计算正态分布的累积分布函数而不使用scipy?
我特别指的是此函数:
from scipy.stats import norm
norm.cdf(1.96)
我有一个在Heroku上运行的Django应用程序,让scipy在Heroku上运行起来相当麻烦。由于我只需要从scipy中使用这一个函数,我希望能够使用替代方案。我已经在使用numpy和pandas,但是在它们中找不到这个函数。是否有其他可用的包或者我可以自己实现这个功能?
只需使用 math.erf
:
import math
def normal_cdf(x):
"cdf for standard normal"
q = math.erf(x / math.sqrt(2.0))
return (1.0 + q) / 2.0
与 scipy
进行比较的编辑:
scipy.stats.norm.cdf(1.96)
# 0.9750021048517795
normal_cdf(1.96)
# 0.9750021048517796
from statistics import NormalDist
NormalDist(mu=0, sigma=1).cdf(1.96)
# 0.9750021048517796