从正态分布的有限混合中抽取样本?

计算科学 蒙特卡洛 可能性
2021-12-15 05:53:28

经过一些贝叶斯更新步骤后,我得到了正态分布混合形式的后验分布,

Pr(θ|data)=i=1kwiN(μi,σ2).
也就是说,参数θ来自一个分布,其 PDF 作为正态 PDF 的加权混合给出,而不是正态 RV 的总和。我想抽取样本θPr(θ|data)用于这个后验的重要性采样近似。在实践中,i上的总和可以有大量项,因此根据权重\{w_i\}选择一个项i然后绘制\theta\sim N(\mu_i, \sigma^ 2)有没有一种从这种形式的后部抽取样本的有效方法?i{wi}θN(μi,σ2)

3个回答

原则上可以预先选择要从每个子分布中抽取的样本数量,然后只访问每个子分布一次并抽取多个点。

那是

  1. 找到随机集使得并尊重权重。<n1,n2,,nk>n=i=1kni

    我相信您可以通过绘制泊松分布的多项分布(参见注释),然后将总和归一化为winn

    这里的工作是O(k)O(n)

  2. 然后做

    for (i=1; i<=k; ++i)
       for (j=1; j<=n[i]; ++j)
          theta ~ N(mu[i],sigma[i])
    

    这里的工作是O(n)

虽然这意味着您不会以随机顺序获得。如果需要随机顺序,您必须然后洗牌(也是大)。O(n)

看起来第一步在运行时占主导地位并且与朴素算法的顺序相同,但是如果您确定所有您可以使用正态分布近似泊松分布并加快第一步。win1

注意:这个问题的原始版本询问了“正态分布的加权和”,以下答案可能有用。然而,在对这个答案、@Geoff 的答案以及问题本身进行了大量讨论之后,很明显,这个问题实际上是关于对这个答案不适用的“正态分布的混合”进行抽样。


正态分布的总和是一个正态分布,所以你可以计算这个单一分布的参数,然后简单地从中抽取样本。如果我们称这个分布为那么,N(μsum,σsum2)

μsum=i=1kwiμi

σsum2=i=1kwi2σi2

更新:此答案不正确,源于术语混淆(有关详细信息,请参阅下面的评论链);我只是把它作为一个路标,这样人们就不会重新发布这个答案(除了巴伦)。请不要投票赞成或反对。

我只是使用随机变量的属性将其减少为单个正态分布的随机变量。两个独立的、正态分布的随机变量之和本身就是一个随机变量所以如果,然后X1N(μ1,σ12)X2N(μ2,σ22)

X1+X2N(μ1+μ2,σ12+σ22).

此外,如果,那么w1R

w1X1N(w1μ1,w12σ12).

结合这两个结果,然后

Pr(θ|data)N(i=1kwiμi,i=1kwi2σi2).

所以在这种情况下,您只需要从单个分布中提取样本,这应该更容易处理。