【问题标题】:Generating random numbers with a normal distribution生成具有正态分布的随机数
【发布时间】:2019-09-19 13:30:14
【问题描述】:

我有一个数据集,在图表中看起来像这样:

对我来说,这看起来像是一个正态/高斯分布。平均值为 0.0017,标准差为 0.0571。我正在尝试使用 numpy 的 np.random.normal 函数沿相同分布生成随机数,如下所示:

a = numpy.random.normal(0.0017, 0.0571)

这会产生如下所示的结果:

如您所见,分布的倾斜度要平缓得多,峰值要小得多,异常值的尾迹也快得多。有没有办法调整我的标准分布,使我随机生成的数字与原始数字更接近?

【问题讨论】:

  • 不——这种差异意味着您的数字确实不是来自正态分布!计算你的数字的excess kurtosis,我怀疑你会发现它不为零(因为它是正常的)。
  • 对我来说,第二个看起来像高斯函数(实际的钟形曲线)。您的数字分布不同
  • 欢迎!如您所见,您的第一个数据是否处于正态/高斯分布并不明显。你能告诉我们你认为它是的论据吗?
  • 对于您的初始数据集,也许您可​​以通过Skellam distribution 获得更好的形状一致性。使用scipy corresponding function 生成它。您可以在问题中提供您的输入数据。
  • @AndrewJaffe 你是对的。我对正态分布的记忆有很长的休眠期,但我弄错了。该数据集的峰度为 8.7。我显然需要出去学习很多东西。任何人都可以通过让我了解我的数据集的样子来帮助我吗?我最擅长研究“具有高峰度的标准分布”还是有更好的描述符?

标签: python numpy random


【解决方案1】:

这看起来很像Laplace distribution。您可以使用numpy.random.laplace 生成它。我将默认平均值保留为零,并将比例参数估计为与零的平均绝对偏差。一个快速而肮脏的比例近似值是standard-deviation / sqrt(2),因为您已经估计了s,但我还没有检查(我现在也没有时间)这是否有偏差。

【讨论】: