3

我有两个独立变量 X 和 Y 的联合密度函数。现在我想从这个分布中采样新的 x,y。

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

我还使用 matlab 函数cumtrapz找到了上述 pdf的累积分布函数。

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

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

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

然后我规范化pdf并做

累积分布 = cumtrapz(pdfNormalize)

是的(对下面的评论)X,Y 应该是独立的。

4

2 回答 2

4

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

于 2012-04-18T12:20:31.433 回答
1

给定两个随机变量 X 和 Y 的联合分布,您可以通过对 Y 的所有可能值求和来单独计算 X 的 CDF,即 P(X<=x)=Sum[P[X=x_i 和 Y= y_j],{x_i<=x 和 y_j}] 的所有值。一旦你掌握了 P(X<=x),就有众所周知的采样 X 值的方法,我们称之为 a。现在你有了 a,计算 P(Y<=y given X=a)=Sum[P[X=a and Y=y_j],{y_j<=y}]/Sum[P[X=a and Y= y_j],{y_j 的所有值}]。使用与给您 X 相同的方法对 Y 进行采样,得出 Y=b。完毕。

相同的方法可以推广到两个以上的随机联合分布的随机变量。

于 2015-01-16T15:07:51.263 回答