Python 中正态分布尾部的样本

Sample from tail of normal distribution in Python

我正在编写一些模拟,我发现我需要对正态分布的尾部进行过采样,以便为特定变量获得足够的低值样本。还有比这更好的吗?

from scipy.stats import norm, uniform
tail_high = .01
n_samples = 1000
tail_rvs = norm.ppf(uniform.rvs(0, tail_high, n_samples))

假设你真的需要从正态分布中抽样,你可能可以 DIY http://en.m.wikipedia.org/wiki/Marsaglia_polar_method or http://en.m.wikipedia.org/wiki/Box–Muller_transform

当前在 scipy 中实现的 truncnorm 存在未解决的问题 https://github.com/scipy/scipy/issues/2477。原始票证提供了几个替代实现的链接。