Dirichlet 函数是多项式的共轭先验。所以后验也是狄利克雷给出的一些观察结果。
例如,如果我从 17 次试验中观察到计数(第 1 类为 10,第 2 类为 3,第 3 类为 4)。
假设一个非信息性先验,浓度参数等于,后 Dirichlet 应该有浓度参数(据我所知)。
的多项式中抽取大量样本,则得到的样本概率的最大似然估计量与观测值 mle 的 mle 不同。(见下面的代码)。
我不明白为什么:后 Dirichlet alpha 是否由以下公式给出: 在我的模拟中,这似乎是正确的答案。
import numpy as np
import scipy.stats
#observations:
x = np.array([ 10., 3., 4.])
# posterior concentration parameters for Dirichlet
# with uninformative prior, i.e. concentration parameters [1,1,1]
a = x + 1
a = x
# simulate
nb_samples = 200000
d = scipy.stats.dirichlet.rvs(a, nb_samples)
c_ = np.ndarray(nb_samples)
# without a loop possible??
for i in range(nb_samples):
c_[i] = np.random.choice(3, 1, p=d[i])
nbs = float(nb_samples)
counts = np.bincount(c_.astype(int))
print "concentration parameter of the Dirichlet:", a
print "simulation sample probabilities (mle)", counts /nbs
print "observation mle probabilities:", x/float(x.sum())
>concentration parameter of the Dirichlet: [ 11. 4. 5.]
>simulation sample probabilities (mle) [ 0.550255 0.198655 0.25109 ]
>observation mle probabilities: [ 0.58823529 0.17647059 0.23529412]
>concentration parameter of the Dirichlet: [ 10. 3. 4.]
>simulation sample probabililities (mle) [ 0.58836 0.17733 0.23431]
>observation mle probabilities: [ 0.58823529 0.17647059 0.23529412]