【问题标题】:Python- Pulling from a normal distribution with asymmetric error barsPython-从具有不对称误差条的正态分布中提取
【发布时间】:2019-03-31 16:06:40
【问题描述】:

我正在尝试编写代码以从具有不对称误差线的正态分布中随机提取一个值。基本上我正在尝试使用等效的 np.random.normal 但能够定义不相等的上限和下限 sigma。我不想使用 scipy.stats.skewnorm 因为我不知道我的分布在一个参数方面有多倾斜,我只知道 + 和 - 误差线。我该怎么做?

感谢stackoverflow好心人的帮助!

【问题讨论】:

  • 欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 On topichow to ask... the perfect question 在此处申请。 StackOverflow 不是设计、编码、研究或教程资源。但是,如果您遵循您在网上找到的任何资源,进行诚实的编码尝试并遇到问题,那么您将有一个很好的示例可以发布。

标签: python numpy random scipy statistics


【解决方案1】:

一个简单的启发式方法是从一个像 N(mean, sigma1) 到均值和像 N(mean, sigma2) 超出均值的密度进行采样。首先采样一个统一的 [0, 1] 变量,如果它小于 1/2,则选择第一个,否则选择第二个。然后从所选的正态分布中采样。这会在一半的时间里给你一个错误的数字——当这种情况发生时,只需返回均值减(样本 - 均值)(或均值加(均值 - 样本),分别);这会给你一个平均值的另一边的样本。

【讨论】:

  • 应该返回 'mean + abs(v2)' 或 'mean - abs(v1)'。但直方图会很丑 - 均值不连续
  • 是的,从 N(0, s1) 中采样 v1 并从 N(0, s2) 返回均值 - abs(v1) 或 v2 并返回均值 + abs(v2) 可能是一种更简单的方法说吧。丑陋的?我不知道这是否有所作为; OP 必须更多地说明他们想要这个分布的目的。
  • 我把我的下一条评论作为答案,如果你看一下将不胜感激
【解决方案2】:

@ItsAMe,我无法将图表放在我的 cmets 中,所以将其写下来作为答案。虽然@RobertDodier 的回答在技术上是正确的,但您应该了解您获得的分布类型。

在下面我绘制了两个在 0 处连接的高斯,但具有不同的 sigma(误差线,sigmas = 2 和 0.7)。也许这就是你真正想要的,但对我来说,很难想象会产生或需要什么样的过程来模拟这种奇怪的分布。这样的东西真的存在于自然界还是某些模型中?

【讨论】:

  • 是的,它很难看。 OP 似乎不在,但如果他们回来,我会很想听听他们的 cmets。
  • 不对称误差线在科学中相当普遍,假设误差的高斯分布也是如此。概念化很奇怪(你的情节很明显)。谢谢大家!
  • @ItsAMe 当然是。但通常它们来自截断正态、偏斜正态或其他具有非零第三矩的分布。
  • 我不确定为什么你会在蓝色曲线上出现大幅下降。您会期望高斯在中间以不同的高度和宽度相遇,但底部节点的锐利似乎很奇怪
  • @ItsAMe 好吧,总积分等于1,每个半积分等于1/2,较小的峰必须有较大的尾巴,只是两个高斯粘在一起。我可以把 Python 代码发给你画。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-08
  • 2011-07-19
  • 2021-10-02
  • 2014-12-10
  • 2019-02-06
  • 1970-01-01
  • 2014-12-11
相关资源
最近更新 更多