【问题标题】:Multivariate distributions with Python使用 Python 进行多元分布
【发布时间】:2012-06-20 11:53:36
【问题描述】:

问题

我计算了一个取决于两个变量的概率密度函数。我想使用这种多元分布来生成一些随机数,这些随机数的出现概率与 PDF 成正比。

看起来,SciPy 目前只支持univariate distributions。有没有简单的方法或易于使用的包允许二维分布?

作为一种解决方法,我可能会尝试在感兴趣的域上创建随机数并将它们丢弃或保留与我的 PDF 相关的机会,但仍然可能有其他选择。随机数生成不一定要很快。

感谢您的帮助!

这是一个可能的解决方案

根据答案(非常感谢!),我破解了一些代码,您可以在 this gist 中找到这些代码。如果您使用 sin^2*Gauss PDF 运行此示例,将在 PDF 上绘制 2000 个满足给定条件(在圆圈内)的随机随机变量。也许这对其他人也有帮助。

【问题讨论】:

  • 可能我没有正确理解。为什么不能将两个随机变量传递到您的分布中:F(random(),random())
  • @fraxel,这将为我提供域中随机位置的概率密度,而不是具有由概率密度函数给出的发生概率的随机数。此外,我的 PDF 仅在离散网格上可用(我可能使用 interp2d())。

标签: python statistics scipy


【解决方案1】:

对于变量 X 和 Y,您不能通过仅生成一个具有 X 的独立分布的 x 和一个具有 Y 分布的给定 x 的 y 来将其分成两个单变量分布的抽样吗?

【讨论】:

  • 我不知道 OP 的具体用例,但 f(y|x) 可能不知道也不能直接计算。如果 f(x,y) 有一个熟悉的封闭形式,那么是的,你的答案应该是可行的。
  • @Steve:他已经在离散网格中有f(x,y)(参见问题的第三条评论)。那么f(y|x) 不应该只对应于该矩阵中的行x 吗?
  • 从“密度”的使用,以及讨论rv_continuous的帖子中的链接,我假设 X 和 Y 是连续随机变量。从上面的第三条评论中,我将其解释为具有连续 PDF 的离散点 。是的,我想您可以使用这些离散点来近似真正的 PDF,在这种情况下,是的,只需计算总和即可获得边际/条件。
【解决方案2】:

所以你有一个 PDF F(x,y) 并且你想生成根据这个 PDF 分发的 xy 对?

我会说,除非您可以使用反演技术的多元版本 (wiki),否则拒绝抽样是可行的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 2021-01-16
    • 2019-07-20
    • 1970-01-01
    • 2013-07-14
    • 2016-04-28
    相关资源
    最近更新 更多