Description

需要先去了解正态分布的相关知识。

假设随机变量 内服从均值为 方差为 的正态分布, 其中 。 那么称在 的条件下, 服从截断正态分布。

其密度函数(probability density function)为:

f(x;\mu,\sigma,a,b)=\left\\{ \begin{array}{rcl} \frac{1}{\sigma}\frac{\varphi(\frac{x-\mu}{\sigma})}{\Phi(\frac{b-\mu}{\sigma})-\Phi({\frac{a-\mu}{\sigma}})} & a < x < b \\\\ 0 & \mbox{else} \end{array} \right.

其中,

为标准正态分布的累积分布函数(cumulative distribution function)。

为高斯误差函数,是一个非初等函数:

Computational methods

那么一般在计算中如何实现这个分布呢?

使用常见的采样方法 Inverse transform sampling 即可获得截断正态分布的样本。

计算公式为:

其中 为其反函数, 为均匀分布在 上的取值。 这只是模拟随机变量的逆变换方法,虽然这种方法实现比较简单,但在正态分布的尾部采样时,此方法有可能会失败。

推导: 截断正态分布的累积分布函数:

\begin{align*} CDF(x)&=\int_{a}^{x}f(x)dx \\ &= \frac{\Phi(\frac{x-\mu}{\sigma})-\Phi(\alpha)}{\Phi(\beta)-\Phi(\alpha)} \\ \end{align*}

其反函数:

\begin{align*} \Phi(x-\mu)&=CDF(x)[\Phi(\beta)-\Phi(\alpha)]+\Phi(\alpha) \\ CDF^{-1}(y)=x&=\mu+\sigma\Phi^{-1}[\Phi(\alpha)+y[\Phi(\beta)-\Phi(\alpha)]] \end{align*}

Ref