如何计算 Python 中正态分布的累积分布函数 (CDF) 的倒数?
我应该使用哪个库?可能是 scipy?
原文由 Yueyoum 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何计算 Python 中正态分布的累积分布函数 (CDF) 的倒数?
我应该使用哪个库?可能是 scipy?
原文由 Yueyoum 发布,翻译遵循 CC BY-SA 4.0 许可协议
从 Python 3.8
开始,标准库提供 NormalDist
对象作为 statistics
模块的一部分。
它可用于获取 逆累积分布函数( inv_cdf
- cdf
的逆函数),也称为给定 均值 的 分位数函数 或 百分比点函数( mu
)和 _标准差_( sigma
):
from statistics import NormalDist
NormalDist(mu=10, sigma=2).inv_cdf(0.95)
# 13.289707253902943
对于 _标准正态分布_( mu = 0
和 sigma = 1
)可以简化:
NormalDist().inv_cdf(0.95)
# 1.6448536269514715
原文由 Xavier Guihot 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答3.1k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
4 回答1.8k 阅读
3 回答1.7k 阅读
1 回答1.4k 阅读✓ 已解决
NORMSINV (在评论中提到)是标准正态分布的 CDF 的倒数。使用
scipy
,您可以使用 ---scipy.stats.norm
对象的ppf
方法进行计算。首字母缩写词ppf
代表 percent point function ,这是 分位数函数 的别称。检查它是否是 CDF 的倒数:
默认情况下,
norm.ppf
使用 mean=0 和 stddev=1,这是“标准”正态分布。您可以通过分别指定loc
和scale
参数来使用不同的均值和标准差。如果您查看
scipy.stats.norm
的源代码,您会发现ppf
方法最终调用scipy.special.ndtri
。因此,要计算标准正态分布的 CDF 的倒数,您可以直接使用该函数:ndtri
比norm.ppf
_快得多_: