2. 认识Beta/Dirichlet分布
2.1 魔鬼的游戏—认识Beta 分布
统计学就是猜测上帝的游戏,当然我们不总是有机会猜测上帝,运气不好的时候就得揣度魔鬼的心思。有一天你被魔鬼撒旦抓走了,撒旦说:“你们人类很聪明,而我是很仁慈的,和你玩一个游戏,赢了就可以走,否则把灵魂出卖给我。游戏的规则很简单,我有一个魔盒,上面有一个按钮,你每按一下按钮,就均匀的输出一个[0,1]之间的随机数,我现在按10下,我手上有10个数,你猜第7大的数是什么,偏离不超过0.01就算对。”你应该怎么猜呢?
从数学的角度抽象一下,上面这个游戏其实是在说随机变量 X1,X2,⋯,Xn∼iidUniform(0,1) X1,X2,⋯,Xn∼iidUniform(0,1),把这 n n 个随机变量排序后得到顺序统计量 X(1),X(2),⋯,X(n) X(1),X(2),⋯,X(n), 然后问 X(k) X(k) 的分布是什么。
对于不喜欢数学的同学而言,估计每个概率分布都是一个恶魔,那在概率统计学中,均匀分布应该算得上是潘多拉魔盒,几乎所有重要的概率分布都可以从均匀分布 Uniform(0,1) Uniform(0,1)中生成出来;尤其是在统计模拟中,所有统计分布的随机样本都是通过均匀分布产生的。
潘多拉魔盒Uniform(0,1)
对于上面的游戏而言 n=10,k=7 n=10,k=7, 如果我们能求出 X(7) X(7) 的分布的概率密度,那么用概率密度的极值点去做猜测就是最好的策略。对于一般的情形, X(k) X(k) 的分布是什么呢?那我们尝试计算一下 X(k) X(k) 落在一个区间 [x,x+Δx] [x,x+Δx] 的概率,也就是求如下概率值
P(x≤X(k)≤x+Δx)=? P(x≤X(k)≤x+Δx)=?
把 [0,1] 区间分成三段 [0,x),[x,x+Δx],(x+Δx,1] [0,x),[x,x+Δx],(x+Δx,1],我们先考虑简单的情形,假设 n n 个数中只有一个落在了区间 [x,x+Δx] [x,x+Δx]内,则因为这个区间内的数 X(k) X(k)是第 k k大的,则 [0,x) [0,x)中应该有 k−1 k−1 个数, (x,1] (x,1] 这个区间中应该有 n−k n−k 个数。不失一般性,我们先考虑如下一个符合上述要求的事件 E E
E={
X1∈[x,x+Δx],Xi∈[0,x)(i=2,⋯,k),Xj∈(x+Δx,1](j=k+1,⋯,n)} E={X1∈[x,x+Δx],Xi∈[0,x)(i=2,⋯,k),Xj∈(x+Δx,1](j=k+1,⋯,n)}

事件 E E
则有
P(E)=∏i=1nP(Xi)=xk−1(1−x−Δx)n−kΔx=xk−1(1−x)n−kΔx+o(Δx) P(E)=∏i=1nP(Xi)=xk−1(1−x−Δx)n−kΔx=xk−1(1−x)n−kΔx+o(Δx)
o(Δx) o(Δx)表示 Δx Δx的高阶无穷小。显然,由于不同的排列组合,即 n n个数中有一个落在 [x,x+Δx] [x,x+Δx]区间的有 n n种取法,余下 n−1 n−1个数中有 k−1 k−1个落在 [0,x) [0,x)的有 (n−1k−1) (n−1k−1)种组合,所以和事件 E E等价的事件一共有 n(n−1k−1) n(n−1k−1)个。
继续考虑稍微复杂一点情形,假设 n n 个数中有两个数落在了区间 [x,x+Δx] [x,x+Δx],
E′={
X1,X2∈[x,x+Δx],Xi∈[0,x)(i=3,⋯,k),Xj∈(x+Δx,1](j=k+1,⋯,n)} E′={X1,X2∈[x,x+Δx],Xi∈[0,x)(i=3,⋯,k),Xj∈(x+Δx,1](j=k+1,⋯,n)}

事件E’
则有
P(E′)=xk−2(1−x−Δx)n−k(Δx)2=o(Δx) P(E′)=xk−2(1−x−Δx)n−k(Δx)2=o(Δx)
从以上分析我们很容易看出,只要落在
[x,x+Δx] [x,x+Δx]内的数字超过一个,则对应的事件的概率就是
o(Δx) o(Δx)。于是
P(x≤X(k)≤x+Δx)=n(n−1k−1)P(E)+o(Δx)=n(n−1k−1)xk−1(1−x)n−kΔx+o(Δx) P(x≤X(k)≤x+Δx)=n(n−1k−1)P(E)+o(Δx)=n(n−1k−1)xk−1(1−x)n−kΔx+o(Δx)
所以,可以得到
X(k) X(k)的概率密度函数为
f(x)=limΔx→0P(x≤X(k)≤x+Δx)Δx=n(n−1k−1)xk−1(1−x)n−k=n!(k−1)!(n−k)!xk−1(1−x)n−kx∈[0,1] f(x)=limΔx→0P(x≤X(k)≤x+Δx)Δx=n(n−1k−1)xk−1(1−x)n−k=n!(k−1)!(n−k)!xk−1(1−x)n−kx∈[0,1]
利用Gamma 函数,我们可以把
f(x) f(x) 表达为
f(x)=Γ(n+1)Γ(k)Γ(n−k+1)xk−1(1−x)n−k f(x)=Γ(n+1)Γ(k)Γ(n−k+1)xk−1(1−x)n−k
还记得神奇的 Gamma 函数可以把很多数学概念从整数集合延拓到实数集合吧。我们在上式中取 α=k,β=n−k+1 α=k,β=n−k+1, 于是我们得到
f(x)=Γ(α+β)Γ(α)Γ(β)xα−1(1−x)β−1(1) (1)f(x)=Γ(α+β)Γ(α)Γ(β)xα−1(1−x)β−1
这个就是一般意义上的 Beta 分布!可以证明,在
α,β α,β取非负实数的时候,这个概率密度函数也都是良定义的。
好,我们回到魔鬼的游戏,这 n=10,k=7 n=10,k=7这个具体的实例中,我们按照如下密度分布的峰值去猜测才是最有把握的。
f(x)=10!(6)!(3)!x6(1−x)3x∈[0,1] f(x)=10!(6)!(3)!x6(1−x)3x∈[0,1]
然而即便如此,我们能做到一次猜中的概率也不高,很不幸,你第一次没有猜中,魔鬼微笑着说:“我再仁慈一点,再给你一个机会,你按5下这个机器,你就得到了5个[0,1]之间的随机数,然后我可以告诉你这5个数中的每一个和我的第7大的数相比,谁大谁小,然后你继续猜我手头的第7大的数是多少。”这时候我们应该怎么猜测呢?
2.2 Beta-Binomial 共轭
魔鬼的第二个题目,数学上形式化一下,就是
- X1,X2,⋯,Xn∼iidUniform(0,1) X1,X2,⋯,Xn∼iidUniform(0,1),对应的顺序统计量是 X(1),X(2),⋯,X(n) X(1),X(2),⋯,X(n), 我们要猜测 p=X(k) p=X(k);
- Y1,Y2,⋯,Ym∼iidUniform(0,1) Y1,Y2,⋯,Ym∼iidUniform(0,1), Yi Yi中有 m1 m1个比 p p小, m2 m2个比 p p大;
- 问 P(p|Y1,Y2,⋯,Ym) P(p|Y1,Y2,⋯,Ym) 的分布是什么。
由于 p=X(k) p=X(k)在 X1,X2,⋯,Xn X1,X2,⋯,Xn中是第 k k大的,利用 Yi Yi的信息,我们容易推理得到 p=X(k) p=X(k) 在 X1,X2,⋯,Xn,Y1,Y2,⋯,Ym∼iidUniform(0,1) X1,X2,⋯,Xn,Y1,Y2,⋯,Ym∼iidUniform(0,1) 这 (m+n) (m+n)个独立随机变量中是第 k+m1 k+m1大的,于是按照上一个小节的推理,此时 p=X(k) p=X(k) 的概率密度函数是 Beta(p|k+m1,n−k+1+m2) Beta(p|k+m1,n−k+1+m2)。按照贝叶斯推理的逻辑,我们把以上过程整理如下:
- p=X(k) p=X(k)是我们要猜测的参数,我们推导出 p p 的分布为 f(p)=Beta(p|k,n−k+1) f(p)=Beta(p|k,n−k+1),称为 p p 的先验分布;
- 数据 Yi Yi中有 m1 m1个比 p p小, m2 m2个比 p p大, Yi Yi相当于是做了 m m次贝努利实验,所以 m1 m1 服从二项分布 B(m,p) B(m,p);
- 在给定了来自数据提供的 (m1,m2) (m1,m2)的知识后, p p 的后验分布变为 f(p|m1,m2)=Beta(p|k+m1,n−k+1+m2) f(p|m1,m2)=Beta(p|k+m1,n−k+1+m2)
贝努利实验
我们知道贝叶斯参数估计的基本过程是
先验分布 + 数据的知识 = 后验分布
以上贝叶斯分析过程的简单直观的表述就是
Beta(p|k,n−k+1)+Count(m1,m2)=Beta(p|k+m1,n−k+1+m2) Beta(p|k,n−k+1)+Count(m1,m2)=Beta(p|k+m1,n−k+1+m2)
其中
(m1,m2) (m1,m2) 对应的是二项分布
B(m1+m2,p) B(m1+m2,p)的计数。更一般的,对于非负实数
α,β α,β,我们有如下关系
Beta(p|α,β)+Count(m1,m2)=Beta(p|α+m1,β+m2)(2) (2)Beta(p|α,β)+Count(m1,m2)=Beta(p|α+m1,β+m2)
这个式子实际上描述的就是
Beta-Binomial 共轭,此处共轭的意思就是,数据符合二项分布的时候,参数的先验分布和后验分布都能保持Beta 分布的形式,这种形式不变的好处是,我们能够在先验分布中赋予参数很明确的物理意义,这个物理意义可以延续到后验分布中进行解释,同时从先验变换到后验过程中从数据中补充的知识也容易有物理解释。
而我们从以上过程可以看到,Beta 分布中的参数 α,β α,β都可以理解为物理计数,这两个参数经常被称为伪计数(pseudo-count)。基于以上逻辑,我们也可以把 Beta(p|α,β) Beta(p|α,β)写成下式来理解
Beta(p|1,1)+Count(α−1,β−1)=Beta(p|α,β)(∗∗∗) Beta(p|1,1)+Count(α−1,β−1)=Beta(p|α,β)(∗∗∗)
其中
Beta(p|1,1) Beta(p|1,1) 恰好就是均匀分布Uniform(0,1)。
对于(***) 式,我们其实也可以纯粹从贝叶斯的角度来进行推导和理解。 假设有一个不均匀的硬币抛出正面的概率为 p p,抛 m m次后出现正面和反面的次数分别是 m1,m2 m1,m2,那么按传统的频率学派观点, p p的估计值应该为 p^=m1m p^=m1m。而从贝叶斯学派的观点来看,开始对硬币不均匀性一无所知,所以应该假设 p∼Uniform(0,1) p∼Uniform(0,1), 于是有了二项分布的计数 (m1,m2) (m1,m2)之后,按照贝叶斯公式如下计算 p p 的后验分布
P(p|m1,m2)=P(p)⋅P(m1,m2|p)P(m1,m2)=1⋅P(m1,m2|p)∫10P(m1,m2|t)dt=(mm1)pm1(1−p)m2∫10(mm1)tm1(1−t)m2dt=pm1(1−p)m2∫10tm1(1−t)m2dt P(p|m1,m2)=P(p)⋅P(m1,m2|p)P(m1,m2)=1⋅P(m1,m2|p)∫01P(m1,m2|t)dt=(mm1)pm1(1−p)m2∫01(mm1)tm1(1−t)m2dt=pm1(1−p)m2∫01tm1(1−t)m2dt
计算得到的后验分布正好是
Beta(p|m1+1,m2+1) Beta(p|m1+1,m2+1)。

百变星君Beta分布
Beta 分布的概率密度我们把它画成图,会发现它是个百变星君,它可以是凹的、凸的、单调上升的、单调下降的;可以是曲线也可以是直线,而均匀分布也是特殊的Beta分布。由于Beta 分布能够拟合如此之多的形状,因此它在统计数据拟合中被广泛使用。
在上一个小节中,我们从二项分布推导Gamma 分布的时候,使用了如下的等式
P(C≤k)=n!k!(n−k−1)!∫1ptk(1−t)n−k−1dt,C∼B(n,p)(3) (3)P(C≤k)=n!k!(n−k−1)!∫p1tk(1−t)n−k−1dt,C∼B(n,p)
现在大家可以看到,左边是二项分布的概率累积,右边实际上是
Beta(t|k+1,n−k) Beta(t|k+1,n−k) 分布的概率积分。这个式子在上一小节中并没有给出证明,下面我们利用和魔鬼的游戏类似的概率物理过程进行证明。
我们可以如下构造二项分布,取随机变量 X1,X2,⋯,Xn∼iidUniform(0,1) X1,X2,⋯,Xn∼iidUniform(0,1),一个成功的贝努利实验就是 Xi<p Xi<p,否则表示失败,于是成功的概率为 p p。 C C用于计数成功的次数,于是 C∼B(n,p) C∼B(n,p)。

贝努利实验最多成功 k k次
显然我们有如下式子成立
P(C≤k)=P(X(k+1)>p) P(C≤k)=P(X(k+1)>p)
此处 X(k+1) X(k+1)是顺序统计量,为第 k+1 k+1大的数。等式左边表示贝努利实验成功次数最多 k k次,右边表示第 k+1 k+1 大的数必然对应于失败的贝努利实验,从而失败次数最少是 n−k n−k次,所以左右两边是等价的。由于 X(k+1)∼Beta(t|k+1,n−k) X(k+1)∼Beta(t|k+1,n−k), 于是
P(C≤k)=P(X(k+1)>p)=∫1pBeta(t|k+1,n−k)dt=n!k!(n−k−1)!∫1ptk(1−t)n−k−1dt P(C≤k)=P(X(k+1)>p)=∫p1Beta(t|k+1,n−k)dt=n!k!(n−k−1)!∫p1tk(1−t)n−k−1dt
最后我们再回到魔鬼的游戏,如果你按出的5个随机数字中,魔鬼告诉你有2个小于它手中第7大的数,那么你应该
按照如下概率分布的峰值做猜测是最好的
Beta(x|9,7)=15!(8)!(6)!x8(1−x)6x∈[0,1] Beta(x|9,7)=15!(8)!(6)!x8(1−x)6x∈[0,1]
很幸运的,你这次猜中了,魔鬼开始甩赖了:这个游戏对你来说太简单了,我要加大点难度,我们重新来一次,我按魔盒20下生成20个随机数,你同时给我猜第7大和第13大的数是什么,这时候应该如何猜测呢?
2.3 Dirichlet-Multinomial 共轭
对于魔鬼变本加厉的新的游戏规则,数学形式化如下:
- X1,X2,⋯,Xn∼iidUniform(0,1) X1,X2,⋯,Xn∼iidUniform(0,1),
- 排序后对应的顺序统计量 X(1),X(2),⋯,X(n) X(1),X(2),⋯,X(n),
- 问 (X(k1),X(k1+k2)) (X(k1),X(k1+k2))的联合分布是什么;
游戏3
完全类似于第一个游戏的推导过程,我们可以进行如下的概率计算(为了数学公式的简洁对称,我们取 x3 x3满足 x1+x2+x3=1 x1+x2+x3=1,但只有 x1,x2 x1,x2是变量)

(X(k1),X(k1+k2)) (X(k1),X(k1+k2))的联合分布推导
P(X(k1)∈(x1,x1+Δx),X(k1+k2)∈(x2,x2+Δx))=n(n−1)(n−2k1−1,k2−1)xk1−11xk2−12xn−k1−k23(Δx)2=n!(k1−1)!(k2−1)!(n−k1−k2)!xk1−11xk2−12xn−k1−k23(Δx)2 P(X(k1)∈(x1,x1+Δx),X(k1+k2)∈(x2,x2+Δx))=n(n−1)(n−2k1−1,k2−1)x1k1−1x2k2−1x3n−k1−k2(Δx)2=n!(k1−1)!(k2−1)!(n−k1−k2)!x1k1−1x2k2−1x3n−k1−k2(Δx)2
于是我们得到
(X(k1),X(k1+k2)) (X(k1),X(k1+k2))的联合分布是
f(x1,x2,x3)=n!(k1−1)!(k2−1)!(n−k1−k2)!xk1−11xk2−12xn−k1−k23=Γ(n+1)Γ(k1)Γ(k2)Γ(n−k1−k2+1)xk1−11xk2−12xn−k1−k23 f(x1,x2,x3)=n!(k1−1)!(k2−1)!(n−k1−k2)!x1k1−1x2k2−1x3n−k1−k2=Γ(n+1)Γ(k1)Γ(k2)Γ(n−k1−k2+1)x1k1−1x2k2−1x3n−k1−k2
熟悉 Dirichlet的同学一眼就可以看出,上面这个分布其实就是3维形式的 Dirichlet 分布
Dir(x1,x2,x3|k1,k2,n−k1−k2+1) Dir(x1,x2,x3|k1,k2,n−k1−k2+1)。令
α1=k1,α2=k2,α3=n−k1−k2+1 α1=k1,α2=k2,α3=n−k1−k2+1,于是分布密度可以写为
f(x1,x2,x3)=Γ(α1+α2+α3)Γ(α1)Γ(α2)Γ(α3)xα1−11xα2−12xα3−13(4) (4)f(x1,x2,x3)=Γ(α1+α2+α3)Γ(α1)Γ(α2)Γ(α3)x1α1−1x2α2−1x3α3−1
这个就是一般形式的3维 Dirichlet 分布,即便 α⃗ =(α1,α2,α3) α→=(α1,α2,α3) 延拓到非负实数集合,以上概率分布也是良定义的。
从形式上我们也能看出,Dirichlet 分布是Beta 分布在高维度上的推广,他和Beta 分布一样也是一个百变星君,密度函数可以展现出多种形态。
不同 α α 下的Dirichlet 分布
类似于魔鬼的游戏2,我们也可以调整一下游戏3,从魔盒中生成 m m个随机数 Y1,Y2,⋯,Ym∼iidUniform(0,1) Y1,Y2,⋯,Ym∼iidUniform(0,1) 并让魔鬼告诉我们 Yi Yi和 (X(k1),X(k1+k2)) (X(k1),X(k1+k2))相比谁大谁小。于是有如下游戏4
- X1