我有两个独立变量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假设是独立的。
答案 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。完成。
同样的方法推广到两个随机联合分布的随机变量。