对应于scipy(python库)的:
from scipy.special import gamma
通过分布积分的方法,进行如下的推导:
可得该函数如下的递归性质:
>>> gamma(5+1)
120.0
>>> 5*gamma(5)
120.0
于是很容易证明(
Γ(1)=1,Γ(n)=(n−1)Γ(n−1)
),
Γ(x)
函数可以看成是阶乘在实数集上的延拓,具有如下的性质:
Γ(n) 与 B(m,n) 的关系
从二项分布到 Gamma 分布
对Gamma 函数的定义稍作变形,可得如下等式:
于是 取积分中的函数作为概率密度(Probability Density Function,PDF),就得到一个形式最为简单的Gamma 分布的密度函数(density function):
如果再做一个变换 x=βt ,就得Gamma 分布的更一般形式:
其中 α 称为形状参数(shape parameter),主要决定了分布曲线的形状,而 β 称为 rate parameter(或叫 inverse scale parameter, 1β 称为scale parameter),主要决定曲线有多陡。
Gamma 分布与Possion 分布
Gamma 分布首先与Possion 分布(离散型)、Possion 过程发生密切的联系。我们容易发现Gamma分布的概率密度和Possion分布在数学形式具有高度的一致性。参数为
λ
的Possion分布,其概率(probability mass function,pmf)为:
而Gamma分布的密度(
α=k+1,β=1
)得到:
所以这两个分布在数学形式上是一致的,只是Possion分布是离散的,Gamma分布是连续的, 可以直观地认为Gamma分布是Possion分布在正实数集上的连续化版本。
我们在概率论与数理统计的课程中都学过,
Poisson(λ)
分布可以看成是二项分布
B(n,p)
在
np=λ,n→∞
条件下的极限分布:
如果你对二项分布的关注足够多,可能会知道二项分布的随机变量 X B(n,p) 满足下面一个奇妙的 恒等式:
我们在等式右侧做一个变换 t=xn 可得:
上式左侧是二项分布
B(n,p)
的累积分布函数(cumulative density function,cdf),而右侧为无穷多个二项分布
B(n−1,xn)
的积分和,所以可以写为:
对上式两边在条件 np=λ,n→∞ 下取极限,则得到:
到这,不妨先暂停,我们使用scipy做一个简单验证:
import scipy.stats as st
from scipy.misc import factorial
from scipy import integrate
lmbda, k = 2, 6
X = st.poisson(2)
# X ~ Poisson(2)
print(X.cdf(k))
# P(X<=k)
def poisson_pdf(x, k):
return x**k*np.exp(-x)/factorial(k)
print(integrate.quad(possion_pdf, lmbda, np.inf, args=(k))[0])
# 0.995466194474
# 0.9954661944737513
# 两者达到完美的相等
书归正传,我们再来看上面的公式,
该等式即为著名的 Poisson-Gamma duality,接下来我们来点好玩的,对上面的等式两边在
λ→0
取极限,左侧Poisson分布表示的是至少发生
k
事件的概率,
该积分式子说明 f(x)=xke−xk! 在实数集上是一个概率分布函数(probability density function,pdf),而这个函数恰好就是 Gamma分布( Gamma(x|α)=xα−1e−xΓ(α),α=k+1 )( 也即我们通过二项分布,再根据泊松定理,推导出了最后的Gamma分布)。我们继续把上式右边中的 k! 移到左边,于是得到:
于是我们得到了将 k! 表示为积分(也即从此我们可以计算3.5的阶乘了)的方法。
好吧,文章已经够长的了,公式已经够繁复的了,下文,我们将重点实现阶乘在正实数轴上的连续化(或者叫插值),其实已经很明显了。