如何从联合、离散、概率分布函数中进行数值采样

Posted

技术标签:

【中文标题】如何从联合、离散、概率分布函数中进行数值采样【英文标题】:how to numerically sample from a joint, discrete, probability distribution function 【发布时间】:2011-09-02 23:37:06 【问题描述】:

我有一个二维“热图”或 PDF,需要通过随机抽样重新创建。 IE。我有一个显示起始位置的二维概率密度图。我需要以与原始 PDF 相同的概率随机选择起始位置。

为此,我想我需要先找到联合CDF(累积密度函数),然后选择随机均匀数对CDF进行采样。这就是我卡住的地方。

如何以数字方式找到我的 PDF 的联合 CDF?我尝试在两个维度上进行累积求和,但这并没有产生正确的结果。我的统计知识让我失望了。

编辑热图/PDF 是 [x,y,z] 的形式,其中 Z 是每个 x,y 点的强度或概率。

【问题讨论】:

你的热图是什么格式的?您是否有一些函数 p(x, y) 可以为您提供 x,y 处的概率密度? 【参考方案1】:

您可以先查看 2D 密度图,然后针对其中的每个 (x,y) 对,通过从 PDF 中查找来找到 z。这将为您提供一个概率为 z 的起点 (x,y)。所以每个起点都有自己的PDF概率。你现在可以做的,是对起点排序,随机选择一个数字并将其映射到某个起点。

例如,假设您有 n 个起点:P1 .. Pn。概率为 p1 .. pn(归一化或加权概率,因此总和为 100%)。假设您选择一个随机值 p,如果 p

【讨论】:

【参考方案2】:

Gibbs Sampling 应该可以满足您的需求

http://en.wikipedia.org/wiki/Gibbs_sampling

【讨论】:

吉布斯抽样不需要条件分布吗?【参考方案3】:

嗯,正如在this answer 中观察到的那样,对于我来说,我的分布是双变量的并不一定重要。由于我可以对整个事物进行归一化,使其成为真正的 pdf(总表面积分为 1),因此我可以将 MxN 矩阵重新排列为 1xM*N 向量。一旦我有了它,我就可以做一个累积积分(MATLAB 中的 cumtrapz),然后从中采样(使用一个统一的随机数来找到相应的索引值)。

【讨论】:

【参考方案4】:

这也是我想做的!!

我有一个用于自变量 X 和 Y 的 joint density function。现在我想从这个分布中采样新的 x,y。

我相信我必须做的是找到联合累积分布,然后以某种方式从中采样。这正是您似乎所做的。

您说使用“统一随机数来查找相应的索引值”时能否更具体一点?

仅供参考:X 是卖单的大小,Y 是股票市场的买单大小。

【讨论】:

This MATLAB-function 解决了它!

以上是关于如何从联合、离散、概率分布函数中进行数值采样的主要内容,如果未能解决你的问题,请参考以下文章

联合概率分布怎么做?

如何区别离散变量和连续变量?

图模型的推断

Hulu机器学习问题与解答系列 | 十四:如何对高斯分布进行采样

概率论知识总结

采样