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