使用Python进行多变量分布

4

问题

我已经计算出一个依赖于两个变量的概率密度函数。我想使用这个多元分布来生成一些随机数,这些随机数以与PDF成比例的概率出现。

似乎SciPy目前只支持单变量分布。是否有任何简单的方法或易于使用的软件包允许2D分布?

作为解决方法,我可以在感兴趣的域上创建随机数,并根据我的PDF保留或删除它们,但仍然可能存在其他选项。随机数生成不必快速。

谢谢您的帮助!

以下是可能的解决方案

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


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

2
所以你有一个PDF文档 F(x,y),你想根据这个PDF生成符合分布的xy的对吗?
我认为,除非您可以使用反演技术的多元版本(wiki),否则拒绝采样是可行的方法。

0
对于变量X和Y,你不能通过仅生成具有独立分布X的x和给定x的Y分布的y来将其分离成两个单变量分布进行采样吗?

我不知道OP的具体用例,但是f(y|x)可能不为人所知,也不容易计算。如果f(x,y)有一个熟悉的闭合形式,那么你的答案应该是可行的。 - Steve Tjoa
@Steve:他已经在离散网格中拥有了f(x,y)(请参见问题的第3个评论)。那么f(y|x)不应该只对应于该矩阵中的行x吗? - Junuxx
从“密度”的使用以及帖子中讨论rv_continuous的链接,我假设X和Y是连续随机变量。根据上面第三条评论,我理解为具有连续PDF的离散点。是的,我想你可以使用这些离散点来近似真实的PDF,在这种情况下,只需计算总和即可获得边缘/条件概率。 - Steve Tjoa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接