Answers:
首先,从Gamma分布中提取独立的随机样本y 1,... ,y K,每个样本均具有密度
然后设置
现在,将遵循Dirichlet分布
在对狄氏分布维基百科页面告诉你究竟是如何从狄利克雷分布采样。
此外,R
库中MCMCpack
还有一个函数,用于从Dirichlet分布中采样随机变量。
一种简单的方法(虽然不精确)在于使用绘制Dirichlet分布等效于Polya骨灰盒实验的事实。(从一组彩色的球中抽出,每次抽出一个球时,您将其放回with中,再放入另一个同色的球)
然后 :
重复N次
多项式分布
->加1
结束重复
归一化 得到你的分布
如果我没有记错,那么该方法是渐近精确的。但是,由于N是有限的,因此您永远都不会绘制具有很小先验概率的分布(而应该以很小的频率绘制它们)。我想在大多数情况下,N = K.10可能会令人满意。
np.random.dirichlet
实现的方式,因为它确实会在采样概率向量中生成精确的零,尽管这样的向量不属于任何Dirichlet支持。这就是让我在这里的原因。