泊松分布 (Poisson Distributions) 的推导

April 07, 2017

QM 课上讲泊松分布 (Poisson Distributions) 竟然只讲了公式,写篇文章聊聊泊松分布的推导。

泊松分布解决的问题看起来非常简单。比如这个:已知某医院平均一天里有 8 名新生儿诞生,那么医院一个月里,每日新生儿出生数量的分布是怎样的?

把泊松分布发扬光大的 Bortkiewicz 在《小数法则》一书里举了这么一个例子:从1875到1894年的20年间,德国的十四个军团部有士兵被马踢伤致死的人数纪录。这 20×14 = 280个纪录,按死亡人数来分,如下所示。

每年死亡人數 记录数
0144
191
232
311
42
≥50

这280个记录中,共有196人死亡,死亡率是 0.7,根据这一数据,Bortkiewicz 用泊松分布计算得出结果,如下所示,可以看到泊松分布得出的结果和现实出奇地吻合。

每年死亡人數 记录数 泊松分布
0144139.0
19197.3
23234.1
3118.0
421.4
≥500.2

泊松分布其实只是二项式分布的极限情况,泊松分布公式如下:

它的推导非常简单,但在推导之前,我们必须了解自然对数 e 的意义。

自然对数 e 的意义

我们就从简单的存钱问题入手。

你向银行存了 100 元,年利率是 100%,到下一年的此时,你就能取出 200 元。

现在银行允许你半年就能取出利息,年利率还是 100%,但半年后,你就能取出年利息的一半,也就是 50%,50 元。半年后,你决定把取出的五十块钱利息立即存进银行里,又过了半年后(第一存款的一年后),你的存款就是

现在银行允许你一个月就能取出利息,年利率还是 100%。你 1 月存了 100 元,1月结束,你取出利息后立即存到银行里,2月结束你取出利息后又存进去… 这样一年后,你的存款是

现在银行允许你一天就能取出利息,一年后你的存款是

现在我们考虑更极限的情况,银行允许你一小时就能取出利息。一年后你的存款是

可以发现,当我们取的时间越来越小时,也就是 n 无限大时,存款逐渐逼近某个数,这个数就是

因此,你可以把 e 理解为极限情况下,100% 年利率下,利滚利能取得的最高收益。

但如果年利率是 10%呢?极限情况(n 是个无限大的数)下,一年后你的存款是

再将公式推广,本钱是1,年利率(增长率)是 a,n 无限大时,t 年后的存款是

泊松分布是二项分布的极限情况,我们现在来看一下二项分布的性质。

二项分布

在一个无限空间口袋里,有无限多的黑球和白球,40%是黑球,60%是白球。分别拿三次球并记录每次拿出球的颜色,其中1个是白球,剩下2个是黑球的概率 P 是多少?

首先拿三次球一白二黑,有三种排列组合的情况,白黑黑,黑白黑,黑黑白。

拿出白黑黑的概率是,0.6×0.4×0.4=0.096

拿出黑白黑的概率是,0.4×0.6×0.4=0.096

拿出黑黑白的概率是,0.4×0.4×0.6=0.096

因此,P = 0.096 + 0.096 + 0.096 = 0.288

以上就是二项分布了,二项分布的公式很好理解,P = 排列组合的数量 × 该组合的概率

求排列组合的数量可以这么想。事件总数(size)是 n,事件分成2种情况,S 是白方块,数量为 k,F 是黑方块,数量就是 n-k。现在我们把所有白方块和黑方块都看做不同的,也就是 S1, S2, S3… Sk, F1, F2, F3… Fn-k,让这些方块排列组合,组合数量就是 n!。

但如果我们把黑色的方块视为相同的,白色还是不同的,每种排列都有 (n-k)! 个重复情况,如下图所示。

如果我们把白色的方块视为相同的,每种排列会有 k! 个重复情况。

因此当所有黑方块和白方块视为相同时,组合数量为 n! / [(n-k)! × k!)]

p 为成功概率,(1-p) 就是失败的概率,事件总数为 n,成功次数为 k,失败次数就是 n-k,不考虑顺序(也就是同时发生)该组合的概率就是

若考虑顺序,概率 P 就是

泊松分布的推导

泊松分布就是二项分布的极限情况。

已知某医院平均一天里有 λ 名新生儿诞生,我们可以把这一天以每秒计算,一天有86400秒,我们把出生瞬间定义为婴儿刚刚离开阴道的时间,假设新生儿不可能在同一秒出生,且每秒婴儿出生的概率相同,均为 λ/86400。

这就是二项分布问题,一天里的事件总数 n = 86400,成功概率 p = λ/86400=,失败概率 1-p = 1-λ/86400,带入公式,每日出生 k 名婴儿的概率就是

但我们是不是也能把这一秒再分割呢?比如毫秒、微秒?这样我们就更能保证在一微秒不会有多名婴儿同时诞生,我们把事件总数 n 看作无限大,每日出生 k 名婴儿的概率就是

因为此时 n 无限大,k 和 λ 相对小,结合自然对数 e 的性质,可以做以下的近似

因此

泊松分布的应用

已知某医院平均一天里有 8 名新生儿诞生,那么医院一个月里,每日新生儿出生数量的分布是怎样的?

用刚刚推出的公式,已知 λ =8,我们可以分别计算出每日诞生 1 名、2 名、3 名… 婴儿的概率。

用 Python 写了个循环,代码如下:

import math
import numpy as np

for k in range(1,30):
    l = 8.
    p = l ** k * np.exp(-l) / math.factorial(k)
    print '每日诞生 %d 名婴儿的概率 p = %f' %(k,p)

#部分输出如下
每日诞生 6 名婴儿的概率 p = 0.122138
每日诞生 7 名婴儿的概率 p = 0.139587
每日诞生 8 名婴儿的概率 p = 0.139587
每日诞生 9 名婴儿的概率 p = 0.124077
每日诞生 10 名婴儿的概率 p = 0.099262
每日诞生 11 名婴儿的概率 p = 0.072190
每日诞生 12 名婴儿的概率 p = 0.048127
每日诞生 13 名婴儿的概率 p = 0.029616
每日诞生 14 名婴儿的概率 p = 0.016924

用图像表示概率分布如下:

参考资料

Poisson 分布

e 的含义