You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Python中scipy.stats.norm.cdf的精确积分形式?

获取Scipy正态分布CDF的精确积分形式

你代码里用到的stats.norm.cdf(x)是正态分布的累积分布函数,它的精确积分形式可以从正态分布的概率密度函数(PDF)推导出来:

1. 正态分布PDF与CDF的关系

正态分布的概率密度函数为:
$$
f(t) = \frac{1}{\sqrt{2\pi}s} \exp\left( -\frac{(t - x_0)2}{2s2} \right)
$$
其中x0是分布均值(对应代码中的loc参数),s是标准差(对应代码中的scale参数)。

CDF就是PDF从负无穷到$x$的积分:
$$
\text{cdf}(x) = \int_{-\infty}^{x} f(t) dt
$$

2. 转换为标准正态分布形式

通过变量替换 $z = \frac{t - x_0}{s}$,可以将上述积分转换为标准正态分布(均值0,标准差1)的CDF形式$\Phi(z)$:
$$
\text{cdf}(x) = \Phi\left( \frac{x - x_0}{s} \right)
$$

而标准正态分布的CDF可以用误差函数(erf)表示:
$$
\Phi(z) = \frac{1}{2} \left[ 1 + \text{erf}\left( \frac{z}{\sqrt{2}} \right) \right]
$$
这正是Scipy内部计算norm.cdf的核心依据——它并没有直接计算原始积分,而是调用scipy.special.erf的高效数值实现来得到结果。

3. 完整模型的积分形式

如果需要对你的model(x)函数做积分,其精确形式为:
$$
\int \left( A \cdot \text{cdf}(x) + c \right) dx = A \cdot \left[ \frac{x - x_0}{s} \Phi\left( \frac{x - x_0}{s} \right) + \frac{1}{\sqrt{2\pi}} \exp\left( -\frac{(x - x_0)2}{2s2} \right) \right] + c \cdot x + C
$$
其中$C$是积分常数,这个结果是通过对$\Phi(z)$的积分($z = \frac{x - x_0}{s}$)推导而来的。


内容的提问来源于stack exchange,提问作者user23495528

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 02:07:15