【问题标题】:Generating random numbers based on an inverse Gaussian distribution基于逆高斯分布生成随机数
【发布时间】:2017-10-22 16:53:01
【问题描述】:

我可以根据高斯/正态概率分布轻松生成随机数。

slice = random.gauss(50.0, 15.0)

但概率分布与我想要的相反:

但我想要的是逆概率。

高斯概率的倒数如下所示:

实际上,我不仅想捕捉左侧的高概率,还想捕捉右侧的高概率。

因此,无论结果沿正态分布的概率是多少......我希望我的结果的实际概率是相反的。因此,如果它在正态分布上的概率为 90%,我希望该结果出现 10% 的时间,等等。

【问题讨论】:

  • 文字太多了。删除除“我知道如何获得……高斯分布”之外的所有内容,并提供您将使用的代码。然后写下你的问题 - “如何为逆高斯执行此操作” - 并解释什么是逆高斯(1/f?f 这样 Gaussian(f(x))=1?如果有相关的scipy 函数写它,而且您不知道这些参数的含义。
  • 您似乎没有像通常理解的那样使用“逆高斯”的含义,因为即使使用逆高斯,当远离均值时,概率也会变为 0。请记住,从 -infinity 到无穷大的定积分必须是 1,而不是无穷大。查看inverse Gaussian distribution 上的 wiki 页面。
  • 我相信mu 是的意思:brownmath.com/swt/symbol.htm
  • Jonathon,有没有办法设置标准差?
  • @Aro 我不确定是否为逆高斯定义了二阶矩。您可以缩放函数,但这不完全是 STD。

标签: python gaussian


【解决方案1】:

在编辑问题时,可以在 scipy 的文档中找到答案 - 检查 invgauss。具体来说,

from scipy.stats import invgauss
r = invgauss.rvs(mu, size=1000)

将从以mu(您的平均值)为中心的逆高斯分布中生成 1000 个数字。绘制pdf:

rv = invgauss(mu)
ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')

对于一些轴对象。为了允许您拥有更多控制权:

invgauss.pdf(x, mu, loc, scale)

scale 尤其与 STD 有数学关系,尽管我不记得了。规范形式通常只取决于均值。

【讨论】:

  • @Aro 规范形式没有那个。我认为将比例设置为 STD,并将位置设置为 mean 是您想要的。 mu 是一个标准化的形状参数。定义在页面本身中。
猜你喜欢
  • 2020-08-24
  • 2011-06-12
  • 1970-01-01
  • 2021-04-26
  • 1970-01-01
  • 1970-01-01
  • 2014-04-15
  • 1970-01-01
  • 2014-07-16
相关资源
最近更新 更多