两种正态分布混合分布的逆变换采样

机器算法验证 采样 随机生成 混合分布 累积分布函数 加权抽样
2022-03-29 21:25:03

我对在以下问题中使用逆方法所需的特殊方式感到困惑,

这是问题所在:

考虑两个正态分布的混合分布,其中所需的 PDF由下式给出:f(x)

f(x)=rfa(x)+(1r)fb(x),其中是正常的 PDF,分别具有的平均值(两者的标准差均为 1)。使用两个均匀随机变量,解释我们如何使用反演方法从中采样。请注意,R 中的命令在这里可能会有所帮助。fafbabu1u2f(x)qnorm

我的困惑来自“两个统一的随机变量 ”。我的想法是我们找出 cdf,(可以通过in R 获得),然后我们可以使用一些数值方法(例如 Newton-Raphson)来生成,所以这里只需要一个均匀分布,不需要.u1u2F(x)pnorm()xf(x)qnorm()

我的方法有什么问题?问题是否提出了更好的方法?

2个回答

从混合物生成时,“两个制服”不是绝对必要的,但它们使模拟易于理解。正态分布的混合, 具有与第一个正态相关联 的概率质量这意味着的分布可以分解为 对于任何可测集,其中

rfa(x)+(1r)fb(x)
r(1r)Xf
P(XA)=rP(XaA)+(1r)P(XbA)
AXaXb是具有均值的正态随机变量ab分别。这可以重新解释为
X={Xawith probability rXbwith probability 1r
这意味着要从混合物中生成,可以按照以下步骤操作

  1. 在组件之间挑选ab通过生成制服UU(0,1)而如果U<rμ=a否则采取μ=b;
  2. 产生X作为Xa或者Xb根据第一步的结果,通过生成一个统一的VU(0,1)并采取X=Φ1(V)+μ

这解释了使用两件制服。

这是STA511课程的问题吗?:)

pnorm() 不会给你正确的结果,因为它是一个 CDF。您正在寻找的是 CDF 的倒数,因此您必须使用 qnorm() 来获取它。