如何在Python中计算累积分布函数,而不使用scipy?

5

如何在python中计算正态分布的累积分布函数而不使用scipy?

我特别指的是此函数

from scipy.stats import norm
norm.cdf(1.96)

我有一个在Heroku上运行的Django应用程序,让scipy在Heroku上运行起来相当麻烦。由于我只需要从scipy中使用这一个函数,我希望能够使用替代方案。我已经在使用numpy和pandas,但是在它们中找不到这个函数。是否有其他可用的包或者我可以自己实现这个功能?


2
请参阅http://mathworld.wolfram.com/NormalDistributionFunction.html以获得近似值。 - Bill Bell
可能是如何在Python中计算累积正态分布的重复问题。 - ClimateUnboxed
2个回答

9

只需使用 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

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接