神奇的Gamma函数(scipy)

Γ(x)=0tx1etdt

对应于scipy(python库)的:

from scipy.special import gamma

通过分布积分的方法,进行如下的推导:

Γ(x+1)=0txetdt=0txd(et)=[txet|0x0tx1etdt]=xΓ(x)

可得该函数如下的递归性质:

Γ(x+1)=xΓ(x)

>>> gamma(5+1)
120.0
>>> 5*gamma(5)
120.0

于是很容易证明( Γ(1)=1,Γ(n)=(n1)Γ(n1) ), Γ(x) 函数可以看成是阶乘在实数集上的延拓,具有如下的性质:

Γ(n)=(n1)!

Γ(n) B(m,n) 的关系

B(m,n)=10xm1(1x)n1dxB(m,n)=Γ(m)Γ(n)Γ(m+n)

从二项分布到 Gamma 分布

对Gamma 函数的定义稍作变形,可得如下等式:

0xα1exΓ(α)dx=1

于是 取积分中的函数作为概率密度(Probability Density Function,PDF),就得到一个形式最为简单的Gamma 分布的密度函数(density function):
Gamma(x|α)=xα1exΓ(α)

如果再做一个变换 x=βt ,就得Gamma 分布的更一般形式:
Gamma(t|α,β)=βαtα1eβtΓ(α)

其中 α 称为形状参数(shape parameter),主要决定了分布曲线的形状,而 β 称为 rate parameter(或叫 inverse scale parameter, 1β 称为scale parameter),主要决定曲线有多陡。



Gamma 分布与Possion 分布

Gamma 分布首先与Possion 分布(离散型)、Possion 过程发生密切的联系。我们容易发现Gamma分布的概率密度和Possion分布在数学形式具有高度的一致性。参数为 λ 的Possion分布,其概率(probability mass function,pmf)为:

Possion(X=k|λ)=λkeλk!

而Gamma分布的密度( α=k+1,β=1 )得到:

Gamma(x|α=k+1)=xαexΓ(k+1)=xkexk!

所以这两个分布在数学形式上是一致的,只是Possion分布是离散的,Gamma分布是连续的, 可以直观地认为Gamma分布是Possion分布在正实数集上的连续化版本

我们在概率论与数理统计的课程中都学过, Poisson(λ) 分布可以看成是二项分布 B(n,p) np=λ,n 条件下的极限分布

B(k;n,p)=(nk)pk(1p)nknp=λ,nPoisson(X=k|np)=λkeλk!

如果你对二项分布的关注足够多,可能会知道二项分布的随机变量 X B(n,p) 满足下面一个奇妙的 恒等式
P(Xk)=n!k!(nk1)!1ptk(1t)nk1dt

我们在等式右侧做一个变换 t=xn 可得:
P(Xk)=====n!k!(nk1)!nnp(xn)k(1xn)nk1d(xn)nnp(n1)!k!(nk1)!(xn)k(1xn)nk1dxnnp(n1k)(xn)k(1xn)nk1dxnnpB(k;n1,xn)dxnnpB(Y=k|n1,xn)dx

上式左侧是二项分布 B(n,p) 的累积分布函数(cumulative density function,cdf),而右侧为无穷多个二项分布 B(n1,xn) 的积分和,所以可以写为:

B(Xk|n,p)=nnpB(Y=k|n1,xn)dx

对上式两边在条件 np=λ,n 下取极限,则得到:
Poisson(Xk|λ)=λPoisson(Y=k|x)dx=λxkexk!dx

到这,不妨先暂停,我们使用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(Xk|λ)=λPoisson(Y=k|x)dx=λxkexk!dx

该等式即为著名的 Poisson-Gamma duality,接下来我们来点好玩的,对上面的等式两边在 λ0 取极限,左侧Poisson分布表示的是至少发生 k 事件的概率,λ0的时候就不可能有事件再发生了,故 P(Xk)=0 ,于是:

1=limλ0λxkexk!dx=0xkexk!dx

该积分式子说明 f(x)=xkexk! 在实数集上是一个概率分布函数(probability density function,pdf),而这个函数恰好就是 Gamma分布 Gamma(x|α)=xα1exΓ(α),α=k+1 )( 也即我们通过二项分布,再根据泊松定理,推导出了最后的Gamma分布)。我们继续把上式右边中的 k! 移到左边,于是得到:

k!=0xkexdx

于是我们得到了将 k! 表示为积分(也即从此我们可以计算3.5的阶乘了)的方法。

好吧,文章已经够长的了,公式已经够繁复的了,下文,我们将重点实现阶乘在正实数轴上的连续化(或者叫插值),其实已经很明显了。

  • 20
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值