Gamma 分布

Gamma函数可将许多数学概念从整数集延拓到实数集合。



Γ(x)=∫∞0tx−1e−tdt


我们来看对Beta分布的改造:



f(x)====n(n−1k−1)xk−1(1−x)n−kn(n−1)!(k−1)!(n−k)!xk−1(1−x)n−kn!(k−1)!(n−k)!xk−1(1−x)n−kΓ(n+1)Γ(k)Γ(n−k+1)xk−1(1−x)n−k


我们在此利用Gamma分布的化整数集为实数集的强大能力:



Beta(x|α=k,β=n−k+1)=Γ(α+β)Γ(α)Γ(β)xk−1(1−x)n−k


阶乘的插值:



k!=∫∞0xke−xdx

共轭分布

下式为著名的Beta-Binomial分布:



Beta(a,b)×B(n,k)→Beta(a+k,b+n−k)


或者更具现实意义的:



Beta(p|k,n−k+1)先验分布×B(m,m1)数据知识/似然→Beta(p|k+m1,n−k+1+m2)后验分布

先验 p(X)与似然的存在 p(X|θ)的存在,使得先验p(X)与后验p(θ|X)具有相同形式的分布,就称先验与似然互为共轭。

此处共轭的含义是,数据符合二项分布的时候,参数的先验分布和后验分布都能保持Beta分布的形式,而这种形式不变的好处是,我们能够在先验分布中赋予参数很明确的物理意义。这个物理意义可以延续到后验分布中进行解释,同时从先验变换到后验过程中从数据中补充的知识也容易有物理解释。

也即数学家们发现共轭分布的形式后,心中暗想,对呀,它保证了物理意义的延续性,而又能吸收数据中补充的知识(似然)。也即共轭分布的真正意义(本质)在于,它能够保证在先验分布赋予的物理意义传递到后验分布时的物理意义一致性

百变星君Beta分布

最后我们可视化不同 α,β



gama分布累计分布计算 python gamma分布 参数_拟合



def fn(x, alpha):
    return x**(alpha-1)*np.exp(-x)
def gamma(alpha):
    return integrate.quad(fn, 0, np.inf, args=alpha)[0]
def beta(p, a, b):
    return gamma(a+b)/gamma(a)/gamma(b)*p**(a-1)*(1-p)**(b-1)
def main():
    x = np.arange(0, 1, .01)
    for a, b in [(1/3, 1), (1, 3), (10, 30), (2, 6), (20, 20), (4, 4), (2/3, 2/3), (2, 1), (1, 1)]:
        plt.plot(x, beta(x, a, b), label=r'$\alpha=%.1f, \beta=%.1f$'%(a, b), lw=2)
    plt.legend(loc='best', frameon=False)
    plt.show()
if __name__ == '__main__':
    main()

我们可视化Beta分布的概率密度,会发现它是一个百变星君(通过调节参数 α,β可以观察Beta分布的各种形态),它可以是一个凹的、凸的、单调上升的、单调下降的;可以是曲线也可以是直线,而均匀分布其实是特殊的Beta分布Beta(p|1,1)。由于Beta分布能够拟合如此之多的形状,因此它在统计数据拟合和贝叶斯分析中被广泛应用。

Beta 与 Dirichlet 分布中的 α

n个随机数的第k大(首先对n个数排序构成顺序统计量)的数:

f(p)=n!(k−1)!(n−k)!pk−1(1−p)n−k=Γ(n+1)Γ(k)Γ(n−k+1)pk−1(1−p)n−k


记 α=k,β=n−k+1,


Beta(p|k,n−k+1)=Beta(p|α,β)=Γ(α+β)Γ(α)Γ(β)pk−1(1−p)n−k


再来看三维时的狄利克雷分布,场景为

n个数中的第 k1大第 k1+k2大的数的联合分布:



f(x1,x2,x3)=n!(k1−1)!(k2−1)!(n−k1−k2)!xk1−11xk2−12xn−k1−k23


记 α⃗ =(α1,α2,α3),α1=k1,α2=k2,α3=n−k1−k2+1,



Dir(p⃗ |α⃗ )=Γ(∑3k=1αk)∏3k=1Γ(αk)∏k=13pαkk


也即 α⃗