$Gamma$函数
$Gamma$函数(Gamma函数)是阶乘函数在实数和复数域的扩展。对于正整数$n$,阶乘函数表示为$n! = 1 times 2 times … times n$。然而,这个定义仅适用于正整数。Gamma函数的目的是将阶乘扩展到实数和复数域,从而计算实数和复数的“阶乘”。$Gamma$函数定义如下:
$displaystyle Gamma(x) = int_0^infty t^{x-1}e^{-t} dt $
其中,$x$是一个复数,定义域是${x|xin C- Z^–{0}}$,也就是除了负整数和$0$之外的所有复数。通过这个定义,$Gamma$函数可以用来计算实数和复数的“阶乘”。在实数域与复数域的可视化如下:
$Gamma$函数具有以下性质:
1、对于正整数$n$,有$Gamma(n) = (n – 1)!$。这表明$Gamma$函数在正整数上与阶乘函数相符。
2、$Gamma$函数满足递推关系:$Gamma(x + 1) = xGamma(x)$(注意和整数阶乘的联系)。
3、$Gamma$函数用于定义很多常见的概率分布,如$Gamma$分布、Beta分布和t分布等。
$Beta$分布
基于伯努利实验的推导
$Beta$分布(Beta分布)与伯努利试验相关。在伯努利试验中,假设硬币朝上的概率为$p$。当抛$a+b$次硬币,硬币朝上的次数为$a$时,计算该情况的概率为
$ displaystyle C_{a+b}^ap^a(1-p)^b$
上式表示二项分布在这一事件(即$a+b$次实验,$a$次正面)下的概率。则$Beta$分布表示:把概率$p$看做随机变量,固定$a,b$,发生相应事件的概率分布。为了获取$Beta$分布的概率密度,需要计算以上概率关于$p$的积分的归一化系数$k$,使得:
$displaystyle k int_0^1C_{a+b}^ap^a(1-p)^b dp=1$
推导出
$displaystyle k =left(int_0^1C_{a+b}^ap^a(1-p)^b dpright)^{-1}=a+b+1 $
以上积分我不会算,但是可以通过以下程序来验证。
from scipy.special import comb def Int(func, l, h, n=1000): #模拟定积分 a = np.linspace(l, h, n) return func(a).sum()*(h-l)/n a, b = 5, 2 #取任意自然数 k = a + b + 1 def func(x): return comb(a+b, a) * (x**a) *((1-x)**b) Int(func, 0, 1) * k # = 1
获得概率密度函数:
$ begin{align} f(p; a, b)&=(a+b+1)C_{a+b}^ap^a(1-p)^b\ &=frac{(a+b+1)!}{a!b!}p^a(1-p)^b\ end{align} $
把阶乘拓展为$Gamma$函数,上式就变成
$ begin{align}f(p; a, b)= frac{Gamma(a+b+2)}{Gamma(a+1)Gamma(b+1)}p^a(1-p)^bend{align}$
令$a=alpha-1,b=beta-1,p=x$,就可以得到常见的$Beta$分布的密度函数表示形式:
$ begin{align}displaystyle f(x;alpha,beta)=frac{Gamma(alpha+beta)}{Gamma(alpha)Gamma(beta)}x^{alpha-1}(1-x)^{beta-1}=frac{1}{Beta(alpha,beta)}x^{alpha-1}(1-x)^{beta-1}end{align}$
其中$Beta(alpha,beta)$为$Beta$函数,$alpha>0,beta>0,0
联合概率密度
正整数情况
关于(2)式,我们把其中的$a,b,p$都看作随机变量,再除以一个归一化系数,就可以构成这三个随机变量的联合概率密度,从而可以非常直观地理解$Beta$分布。分别固定抽样次数$n=0,1,2,5,10,15$,可视化如下:
其中,当以抽样概率$p$为条件时,在y轴上,就是离散的关于$a$的二项分布。当以$a$为条件时,在x轴上,就是连续的关于$p$的$Beta$分布。可以观察到,当$a
此外,当在y轴方向上进行求和,可以得到$p$的边缘分布,为均匀分布;而当在x轴方向上进行积分,得到$a$的边缘分布,也是均匀分布。但感觉边缘分布似乎没有什么意义,不知理解是否正确。可视化代码如下:
import matplotlib.pyplot as plt from scipy.special import gamma import numpy as np import matplotlib matplotlib.rcParams['font.family'] = 'Times New Roman' def Beta(a, b, p): g1, g2, g3 = gamma(a+b+2), gamma(a+1), gamma(b+1) return g1/(g2*g3) * p**(a) * (1-p)**(b) def BetaHot(n, samp_n = 1000): p = np.linspace(0, 1, samp_n) a = np.linspace(0, n, n+1) P, A = np.meshgrid(p, a) Z = Beta(A, n-A, P)/(n+1) per_width = samp_n//(n+1) Z1 = np.repeat(Z, per_width, 0) # 热力图 plt.imshow(Z1, origin='lower', cmap='Blues') plt.colorbar() # 关于p的密度图 for i, t in enumerate(Z): plt.plot(np.linspace(-0.5, samp_n-0.5, samp_n), i*per_width+per_width*t-0.5, '--', c='red') # 绘图设置 plt.xlabel("p") plt.ylabel('a') old_yticks = np.linspace(per_width/2-0.5, Z1.shape[0]-0.5-per_width/2, n+1) plt.yticks(old_yticks, [f'{i:.0f}' for i in np.linspace(0, n, n+1)]) old_xticks = np.linspace(-0.5, samp_n-0.5, 6) plt.xticks(old_xticks, [f'{i:.1f}' for i in np.linspace(0, 1, 6)]) plt.ylim([0, samp_n+4]) plt.title("n = a + b = %d"%n) plt.savefig('img/n = %d.png'%n) plt.show() for n in [0, 1, 2, 5, 10, 15]: BetaHot(n)
一般情况
以上可视化的是$a,b$取为正整数时$Beta$分布的情况,即(2)式。对于更一般的情况(4)式,即取$alpha,beta$为大于0的实数,在(3)式中就是$a>-1,b>-1$,尽管并不符合真实伯努利试验的情况,但仍可以计算。可视化如下:
可以看出,$a,b$都小于0时,密度函数会变成U形。且依旧是,$a$相比$b$越小,形状越往左偏。可视化代码如下:
import matplotlib.pyplot as plt from scipy.special import gamma import numpy as np import matplotlib matplotlib.rcParams['font.family'] = 'Times New Roman' def Beta(a, b, p): g1, g2, g3 = gamma(a+b+2), gamma(a+1), gamma(b+1) beta = g1/(g2*g3) * p**(a) * (1-p)**(b) return beta for n in [-1, 0, 1, 2, 5, 10]: for a in np.linspace(-0.9, n+0.9, 3): p = np.linspace(0.0001, 0.9999, 300) b = n-a y = Beta(a, b, p) plt.plot(p, y, label="a = %.1f, b = %.1f"%(a, b)) plt.legend(loc='upper center') plt.ylim([-0.1, 3]) plt.title('a + b = %.1f' % n) plt.savefig('img/a + b = %.1f.png' % n) plt.show()
关于共轭先验
$beta$分布是二项分布的共轭先验,我的理解:暂时不理解,看完书再回来写
狄利克雷分布
狄利克雷分布是$Beta$分布在高维上的推广,其概率密度函数表示为
$displaystyle f(x_1,x_2,…,x_k;alpha_1,alpha_2,…,alpha_k)=frac{Gamma(sum_{i=1}^kalpha_i)}{prod_{i=1}^kGamma(alpha_i)} prod_{i=1}^kx_i^{alpha_i-1}$
也就是把伯努利实验得到的二项分布变成多项分布(比如骰子实验),相应地得到狄利克雷分布。狄利克雷分布中的正单纯形,表示多项分布每种抽样的概率之和为1,即$x_1+x_2+…+x_k=1,x_i>0$。
参考
1. 共轭先验: https://www.zhihu.com/question/41846423?sort=created
2. 狄利克雷分布:https://zhuanlan.zhihu.com/p/425388698
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net