如何在Python中计算累积正态分布?

4

目前我正在使用Excel计算累积正态分布,方法如下:

x = 0
mean = 0.03
standard deviation = 0.055

我随后使用公式。
=1-NORMDIST(0,0.03,0.055,TRUE)

这将产生一个输出为0.7,这正是我所寻找的。 我如何在Python上实现相同的结果? 谢谢。

4
这个问题的答案是否能满足您的需求?如何计算累积正态分布? - Miguel
2个回答

3
如果您能够使用scipy,您可以这样做:
from scipy import stats
stats.norm.cdf(0)
0.5  

但是看起来你想要的实际上是上尾概率,而在scipy.stats中被称为sf的生存函数。

stats.norm.sf(0, 0.03, 0.055)
0.7072795327155363

应该能够给你想要的结果。 在scipy包中有许多连续和离散分布。文档也可以在线阅读:

https://docs.scipy.org/doc/scipy-0.16.1/reference/stats.html

支持其他分布函数以及对分布的其他常见计算,例如随机抽样、均值、质量/密度函数等。

如果您想直接进行计算,可以通过以下方式:

>>> 1-stats.norm.cdf(0, 0.03, 0.055)
0.7072795327155363

对于接近概率质量块的参数,这两个值通常是相同的,但对于非常低概率事件,通常会在概率分布的“尾部”使用不同的数值算法,因此有时使用.sf()版本可能会更有益。


1
你可以使用scipy.stats.norm
from scipy.stats import norm
print(norm.sf(x=0, loc=0.03, scale=0.055))

Out[10]: 0.7072795327155363

norm.sf,小错误 :) - ladypary

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