模拟联合累积分布函数的样本?

时间:2012-04-18 11:46:09

标签: matlab random distribution probability sampling

我有两个独立变量X和Y的joint density function。我现在想从这个分布中抽取新的x,y。

我认为我必须做的是找到联合累积分布,然后以某种方式样本。我有点知道如何在一维中做到这一点,但我发现很难理解如何在2D中做到这一点。

我还使用了matlab函数cumtrapz来查找上述pdf的cumulative distribution function

为了清楚起见,我想做的是从这个经验分布中抽取随机值x,y。

有人可以指出我在正确的方向吗?!

编辑:我有数据值,我使用 [pdf bins] = hist3([N Y])

然后我将pdf标准化并执行

cumulativeDistribution = cumtrapz(pdfNormalize)

是的(对于下面的评论)X,Y假设是独立的。

2 个答案:

答案 0 :(得分:2)

如果您知道如何在1D中对分布进行采样,则可以将其扩展为2D。为 X 创建边际分布。从中获取样本,例如 X 1 。然后在您的2D分布中修复一个变量X = X 1 和样本 Y ,即样本 Y 1D分布f XY X 1 Y )。

答案 1 :(得分:0)

如果在两个随机变量X和Y中联合分布,则可以通过对Y的所有可能值求和来单独计算X的CDF,即P(X <= x)= Sum [P [X = x_i]和Y = y_j],{x_i&lt; = x和y_j的所有值}]。一旦掌握了P(X <= x),就会有一些众所周知的X值采样方法,我们称之为a。既然你有a,计算P(Y <= y,给定X = a)= Sum [P [X = a和Y = y_j],{y_j&lt; = y}] / Sum [P [X = a和Y = y_j],{y_j的所有值}]。样本Y使用给出X的相同方法,得到Y = b。完成。

同样的方法推广到两个随机联合分布的随机变量。