python泊松分布_泊松分布与Python图解

Python包

import numpy as np

import matplotlib.pyplot as plt

from numpy import power

from scipy.special import comb

相关知识

Bernoulli Experiment (伯努利试验)

对于一个试验(事件),如果重复发生的概率是独立的(互补影响),那么它是独立试验。特别的,如果这个试验只存在两种结果,则称其为伯努利试验。

Binomial Distribution (二项式分布)

对于重复

equation?tex=n次的伯努利试验,我们可以计算成功

equation?tex=k次的概率:

equation?tex=P_%7Bk%7D%3DC_%7Bn%7D%5E%7Bk%7D+p%5E%7Bk%7D%281-p%29%5E%7Bn-k%7D%3D%5Cfrac%7Bn+%21%7D%7B%28n-k%29+%21+k+%21%7D+%5Ccdot+p%5E%7Bk%7D%281-p%29%5E%7Bn-k%7D

def BinomialDist(n, k, p=.5):

return comb(n, k) * power(p, k) * power(1-p, n-k)

e.g. 假设我们抛一枚硬币,总共抛10次,求10次都是正面的概率?

解:

equation?tex=P_%7B10%7D+%3D+0.5%5E%7B10%7D

验证一下我们的函数:

BinomialDist(10, 10) == power(0.5, 10)

True

e.g. 假设我们抛一枚硬币,总共抛10次,分别求

equation?tex=k%3D0%2C1%2C2%2C...%2C10次是正面的概率?

ks = np.linspace(0, 10, 11) #ks=0,1,2,...,10

Plst = BinomialDist(10, ks)

plt.plot(Plst, '.')

plt.title(r'$P(X=k),\ X \sim B(10,0.5)$')

plt.show()

从上图可以看出,

equation?tex=k%3D5时候最大,这符合我们的预期:抛10次硬币,正面朝上的次数最有可能为5。即随机变量

equation?tex=%5Cxi+%5Csim+B%2810%2C+0.5%29

equation?tex=E%28%5Cxi%29%3Dnp%3D5

简单证明一下

equation?tex=E%28%5Cxi%29%3Dnp:预备公式:

equation?tex=k+c_%7Bn%7D%5E%7Bk%7D%3Dn+c_%7Bn-1%7D%5E%7Bk-1%7D

离散型随机变量

equation?tex=%5Cxi的期望:

equation?tex=E%28%5Cxi%29%3D%5Csum_i%5En%28x_i%5Ccdot+p%28x_i%29%29

这里

equation?tex=x_i+%3D+k+%3D+0%2C1%2C...%2Cn,而

equation?tex=p%28x_i%29%3Dp%28k%29%3DC_%7Bn%7D%5E%7Bk%7D+p%5E%7Bk%7D%281-p%29%5E%7Bn-k%7D

equation?tex=%5Cbegin%7Baligned%7DE%28%5Cxi%29+%26%3D+0+%5Ctimes+c_%7Bn%7D%5E%7B0%7D+p%5E%7B0%7D+q%5E%7Bn%7D%2B1+%5Ctimes+c_%7Bn%7D%5E%7B1%7D+p%5E%7B1%7D+q%5E%7Bn-1%7D%2B+2+%5Ctimes+c_%7Bn%7D%5E%7B2%7D+p%5E%7B2%7D+q%5E%7Bn-2%7D%5Cldots%2Bn+c_%7Bn%7D%5E%7Bn%7D+p%5E%7B0%7D+q%5E%7Bn%7D%5C%5C+%26%3D+n+p%5Cleft%28c_%7Bn-1%7D%5E%7B0%7D+p%5E%7B0%7D+q%5E%7Bn-1%7D%2Bc_%7Bn-1%7D%5E%7B1%7D+p%5E%7B0%7D+q%5E%7Bn-2%7D%2Bc_%7Bn-1%7D%5E%7B2%7D+p%5E%7B0%7D+q%5E%7Bn-2%7D+%5Cldots%2Bc_%7Bn-1%7D%5E%7Bn-1%7D+p%5E%7Bn-1%7D+q%5E%7B0%7D%5Cright%29%5C%5C+%26%3D+n+p%28p%2Bq%29%5E%7Bn-1%7D%5C%5C+%26%3D+n+p%5Cend%7Baligned%7D%5C%5C

计算一下

equation?tex=E%28%5Cxi%29%3D%5Csum_i%5En%28x_i%5Ccdot+p%28x_i%29%29,ks相当于

equation?tex=x_i,Plst相当于

equation?tex=p%28x_i%29

print('mean =', (ks*Plst).sum())

print('mean =', 10*0.5)

mean = 5.0

mean = 5.0

其他证明方法和方差(

equation?tex=D%28%5Cxi%29%3Dnpq)可以参考

equation?tex=%5Cbegin%7Barray%7D%7Bl%7D+D%28X%29%3DE%5Cleft%28X%5E%7B2%7D%5Cright%29-E%5E%7B2%7D%28X%29%3D%5Csum_%7Bk%3D0%7D%5E%7B%5Cinfty%7D+k%5E%7B2%7D+%5Ccdot+%5Cfrac%7B%5Clambda%5E%7Bk%7D%7D%7Bk+%21%7D+e%5E%7B-%5Clambda%7D-%5Clambda%5E%7B2%7D+%5C%5C+%3D%5Clambda+e%5E%7B-%5Clambda%7D+%5Csum_%7Bk%3D1%7D%5E%7B%5Cinfty%7D+%5Cfrac%7Bk+%5Clambda%5E%7Bk-1%7D%7D%7B%28k-1%29+%21%7D-%5Clambda%5E%7B2%7D%3D%5Clambda+e%5E%7B-%5Clambda%7D%5Cleft%5B%5Csum_%7Bk%3D2%7D%5E%7B%5Cinfty%7D+%5Cfrac%7B%5Clambda%5E%7Bk-1%7D%7D%7B%28k-2%29+%21%7D%2B%5Csum_%7Bk%3D1%7D%5E%7B%5Cinfty%7D+%5Cfrac%7B%5Clambda%5E%7Bk-1%7D%7D%7B%28k-1%29+%21%7D%5Cright%5D-%5Clambda%5E%7B2%7D+%5C%5C+%3D%5Clambda+e%5E%7B-%5Clambda%7D%5Cleft%5B%5Clambda+e%5E%7B%5Clambda%7D%2Be%5E%7B%5Clambda%7D%5Cright%5D-%5Clambda%5E%7B2%7D%3D%5Clambda+%5Cend%7Barray%7D%5C%5C

总结,如果随机变量

equation?tex=X%3Dk的概率满足

equation?tex=P%28X%3Dk%29%3DC_%7Bn%7D%5E%7Bk%7D+p%5E%7Bk%7D%281-p%29%5E%7Bn-k%7D二项式分布,则

equation?tex=X+%5Csim+B%28n%2Cp%29

定义

二项式分布

equation?tex=P%5Cleft%28k%5Cright%29%3D%5Cfrac%7Bn+%21%7D%7B%28n-k%29+%21+k+%21%7D+%5Ccdot+p%5E%7Bk%7D%281-p%29%5E%7Bn-k%7D要求

equation?tex=n必须为已知数,但是生活中很多事情是没法统计出或者不存在精确的总数,这些事情往往是在一段连续的时间内出现一定的次数,相互之间没有影响(随机发生),并且单次事件耗时和概率几乎可以忽略(只有出现或者未出现,类似二项式分布;任意时刻发生的概率几乎为0)。例如,发生的次数。

由于事情是随机发生的,也就是在统计的一定时间内,任意时刻都有可能发生,所以我们就要对二项式公式改进。假设一个小时内发生了

equation?tex=m次,如果我们10分钟统计一次,总共统计

equation?tex=n%3D6次,我们期待

equation?tex=p%3D%5Cfrac%7Bk%7D%7Bn%7D,也就是

equation?tex=k次需要分别散落在6个10分钟内,显然

equation?tex=k次可能出现在一个10分钟内。那么1秒钟统计一次呢?还是不行,因为还是存在1秒钟发生

equation?tex=k次的可能性。为了保证单位时间内最多只有一次事件发生,泊松分布将

equation?tex=n+%5Crightarrow+%2B%5Cinfty,那么单次事件只能发生在

equation?tex=%5Cfrac%7B1%7D%7Bn%7D时间内。

我们可以统计出一段时间内出现的平均次数

equation?tex=%5Clambda,那么可以认为单次事件概率

equation?tex=p%3D%5Cfrac%7B%5Clambda%7D%7Bn%7D,于是二项式分布就变成了:

equation?tex=%5Clim+_%7Bn+%5Crightarrow+%5Cinfty%7D+P%28X%3Dk%29+%5C%5C+%3D+%5Clim+_%7Bn+%5Crightarrow+%5Cinfty%7D%5Cleft%28%5Cbegin%7Barray%7D%7Bl%7Dn+%5C%5C+k%5Cend%7Barray%7D%5Cright%29+p%5E%7Bk%7D%281-p%29%5E%7Bn-k%7D%5C%5C+%3D+%5Cleft%28%5Cfrac%7B%5Clambda%5E%7Bk%7D%7D%7Bk+%21%7D%5Cright%29+%5Cexp+%28-%5Clambda%29%5C%5C+%3D+%5Cfrac%7B%5Clambda%5Ek%7D%7Bk%21%7De%5E%7B-%5Clambda%7D%5C%5C

其实

equation?tex=e的定义就是(参见:

equation?tex=%5Clim_%7Bn+%5Crightarrow+%2B%5Cinfty%7D%281%2B%5Cfrac%7B1%7D%7Bn%7D%29%5En+%5C%5C

equation?tex=e%5E%7B-%5Clambda%7D+%3D+%5Clim_%7Bn+%5Crightarrow+%2B%5Cinfty%7D%281%2B%5Cfrac%7B-%5Clambda%7D%7Bn%7D%29%5En

最终泊松分布定义为:若

equation?tex=X服从参数为

equation?tex=%5Clambda的泊松分布,记为

equation?tex=X%5Csim+%5Cpi%28%5Clambda%29

equation?tex=X%5Csim+P%28%5Clambda%29

equation?tex=P%28X%3Dk%29%3D%5Cfrac%7Be%5E%7B-%5Clambda%7D%7D%7Bk+%21%7D%5Clambda%5E%7Bk%7D+%5C%5C

相关性质:equation?tex=E%28X%29+%3D+%5Clambda

equation?tex=D%28X%29+%3D+%5Clambda

PMF与PDF

虽然

equation?tex=n%5Crightarrow+%2B%5Cinfty,并且公式也可以计算

equation?tex=k%3E0的非整数,但是泊松分布还是针对离散型随机变量,所以上述公式又称为泊松分布的PMF(概率质量函数)。PMF(Probability Mass Function,概率质量函数): 是对离散随机变量的定义。是离散随机变量在各个特定取值的概率。该函数通俗来说,就是对于一个离散型概率事件来说,使用这个函数来求它的各个成功事件结果的概率。

PDF(Probability Density Function,概率密度函数 ):是对连续性随机变量的定义。与PMF不同的是,PDF在特定点上的值并不是该点的概率, 连续随机概率事件只能求一段区域内发生事件的概率, 通过对这段区间进行积分来求。通俗来说, 使用这个概率密度函数将想要求概率的区间的临界点(最大值和最小值)带入求积分,就是该区间的概率。

参数lambda

我们来看不同参数

equation?tex=%5Clambda的泊松分布情况。注意,由于是离散随机变量,所以我们对

equation?tex=k只能取

equation?tex=%5Cgeq+0的整数。

from scipy.special import factorial

Xs = np.linspace(0, 50, 51)

def PD(k, lmd):

return np.power(lmd, k) * np.exp(-lmd) / factorial(k)

plt.figure(figsize=(10, 6))

plt.plot(Xs, PD(Xs, lmd=1), '*--', label=rf'$\lambda=1$')

plt.plot(Xs, PD(Xs, lmd=5), '^--', label=rf'$\lambda=5$')

plt.plot(Xs, PD(Xs, lmd=10), '.', label=rf'$\lambda=10$')

plt.plot(Xs, PD(Xs, lmd=15), '+', label=rf'$\lambda=15$')

plt.legend()

plt.show()

从上图中,可以看出,泊松分布围绕着

equation?tex=%5Clambda为中心的,而且

equation?tex=%5Clambda越大,越对称,也越像正态分布。

练习题

e.g.

与正态分布的关系

知乎上有个正态分布是所有分布趋于极限大样本的分布,属于连续分布。二项分布与泊松分布,则都是离散分布。二项分布的极限分布是泊松分布,泊松分布的极限分布是正态分布,即

equation?tex=np%3D%5Clambda,当

equation?tex=n很大时,可以近似相等。当

equation?tex=n很大时(还没达到连续的程度),可以用泊松分布近似代替二项分布;当n再变大,几乎可以看成连续时,二项分布和泊松分布都可以用正态分布来代替!

乍一看,好像是这么回事,但是仔细想想我们本来就是假设

equation?tex=n+%5Crightarrow+%2B%5Cinfty。从上面的实验中我们发现,

equation?tex=%5Clambda越大越接近正态分布。

简书上一篇

equation?tex=k比较大的时候,泊松分布会变成均值为

equation?tex=%5Clambda,方差为

equation?tex=%5Clambda的正态分布:

equation?tex=%5Clim+_%7Bk+%5Crightarrow+%5Cinfty%7D+%5Cfrac%7B%5Clambda%5E%7Bk%7D%7D%7Bk+%21%7D+e%5E%7B-%5Clambda%7D%3D%5Cfrac%7B1%7D%7B%5Csqrt%7B2+%5Cpi+%5Clambda%7D%7D+e%5E%7B-%28x-%5Clambda%29%5E%7B2%7D+%2F+2+%5Clambda%7D+%5Csim+N%28%5Clambda%2C+%5Clambda%29+%5C%5C

个人认为这个结论也是明显不对,因为不论参数

equation?tex=%5Clambda

equation?tex=k都可以

equation?tex=%5Crightarrow+%5Cinfty。不过后半句话应该是对的。

根据这篇数学

equation?tex=%5Cmu也就是

equation?tex=%5Clambda%5Crightarrow+%5Cinfty

equation?tex=%5Csigma%5E%7B2%7D%3D%5Clambda时,变成了

equation?tex=N%28%5Cmu%2C+%5Csigma%29

这与我们的实验也是相符的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值