这个计算器能做什么
正态分布图计算器可以为正态(高斯)分布生成一张 (x, 数值) 对照表。你可以从三种函数中任选一种来制表:概率密度 \(f(x)\)、下侧累积概率 \(P(x)\)(即累积分布函数 CDF),或上侧累积概率 \(Q(x)\)(即生存函数)。x 的取值序列由初始值、步长(增量)和点数三项决定。当均值 \(\mu = 0\)、标准差 \(\sigma = 1\) 时,得到的就是标准正态分布。
使用方法
先选择一种函数。填入均值 \(\mu\) 和标准差 \(\sigma\)(\(\sigma\) 必须大于 0)。再设置 x 的初始值、相邻 x 之间的增量,以及重复次数(点数)。计算器会输出一张表格,其中第 i 行对应 \(x = \text{初始值} + i \cdot \text{步长}\),以及该 x 处所选函数的取值。默认设置(\(\mu=0\)、\(\sigma=1\)、起点 = -5、步长 = 0.1、共 101 个点)会让 x 从 -5 扫到 +5:选择 f 时描绘出我们熟悉的钟形曲线,选择 P 时则呈现出 S 形曲线。
公式详解
概率密度为 $$f(\text{x},\mu,\sigma) = \frac{1}{\sigma\sqrt{2\pi}}\, e^{-\frac{1}{2}\left(\frac{\text{x} - \mu}{\sigma}\right)^{2}}$$ 累积概率借助误差函数计算:令 \(z = \frac{\text{x}-\mu}{\sigma\sqrt{2}}\),则下侧累积概率 $$P = \frac{1}{2}\left(1 + \operatorname{erf} z\right)$$ 上侧累积概率 \(Q = 1 - P\)。由于 Java/Groovy 没有内置的 erf 函数,本工具采用 Abramowitz & Stegun 7.1.26 多项式近似公式,精度约为 \(1.5\times10^{-7}\)。
实例演算
以标准正态分布(\(\mu=0\)、\(\sigma=1\))在 x = 1 处为例:$$f(1) = 0.3989423 \cdot e^{-0.5} = 0.241971$$ 计算 P 时,\(z = \frac{1}{\sqrt{2}} = 0.70711\),\(\operatorname{erf}(z) \approx 0.68269\),于是 $$P = \frac{1}{2}\left(1 + 0.68269\right) = 0.84134$$(即众所周知的 \(\Phi(1) \approx 0.8413\))。再求 \(Q = 1 - 0.84134 = 0.15866\),可见 \(P + Q = 1\)。✓
常见问题
为什么 \(\sigma\) 必须为正数?标准差为零或负数毫无意义,并且会在公式中导致除以零,因此本工具不接受这类输入。
步长可以是负数吗?可以。负步长会让 x 逐渐递减;步长为零则会得到一列完全相同的 x 值。
P 和 Q 的精度如何?二者采用多项式 erf 近似,最大误差约为 \(1.5\times10^{-7}\),对于绘图和绝大多数统计工作来说绰绰有余。