用一个“栗子”讲透让人迷惑的泊松分布

2,316 阅读5分钟

本文始发于个人公众号:TechFlow,原创不易,求个关注


今天是概率统计专题的第5篇文章,这篇文章的出现意味着高等数学专题我们已经告一段落了。高数当中剩下的内容还有很多,比如多重积分、微分方程求解等等内容。但对于算法领域来说,基本的微积分已经基本足够了,所以我们就不再继续往下延伸,如果以后有相关的内容涉及,我们再来开文章单讲。

我们这篇文章的内容关于统计学中的泊松分布。


举个栗子


泊松分布在概率统计当中非常重要,可以很方便地用来计算一些比较难以计算的概率。很多书上会说,泊松分布的本质还是二项分布,泊松分布只是用来简化二项分布计算的。从概念上来说,这的确是对的,但是对于我们初学者,很难完全理解到其中的精髓。

所以让我们来举个栗子,来通俗地理解一下。

假设我们有一颗栗子树,有时候因为风或者是小动物活动的关系,树上可能会掉下栗子来,树上掉栗子显然是一棵偶然事件,并且发生的概率很低,那么我们怎么求它的概率分布呢?泊松分布解决的就是这样一个问题。

好像没有一个模型可以直接来刻画这个问题,必须要经过一些转化。

其实我们可以将事件切分,将这个问题转化成二项分布问题。

比如我们把一天的时间切分成了若干份,这样对于每一份时间来说,是否会有栗子掉下来,就是一个是否会发生的事件。于是这就成了一个二项分布问题。理论上来说不会有两颗栗子掉下的时间完全一样,所以只要我们将时间切分得足够细,就可以保证一段时间之中最多只会掉下一个栗子(否则就不满足二项分布)。

假设我们把一天的时间切分成了n份,我们想知道一天当中会有k个栗子掉下的概率,根据二项分布的公式,这个概率就是:

P(k)=C_n^k\cdot p^k(1-p)^{n-k}

到这里,我们往前迈出了坚实的一步,写出了概率的表达式。


推导泊松分布


我们虽然有了式子,但是好像没什么用,因为我们只知道p是单位时间内有栗子掉下的概率,我们怎么知道这个概率是多大呢?难道还真的去测量吗?

要解决这个问题,还得回到二项分布。我们可以利用二项分布求一下每天掉下栗子数量的期望,显然对于每一个单位时间而言,发生栗子掉落的概率是p,所以整体的期望是:

E(X) = np

我们令这个值是\lambda,那么根据这个式子,我们可以表达出p了。

p=\frac{\lambda}{n}

我们把这个p的式子带入原式,可以得到:

P(k) = C_n^k \cdot {\frac{\lambda}{n}}^{k}(1-\frac{\lambda}{n})^{n-k}

前面说了,为了满足二项分布,我们需要让单位时间尽量小,防止会有同一时刻掉下两个栗子的情况发生。所以这个n应该越大越好,我们可以用上之前学过的极限,让n趋向于无穷,所以这个问题就变成了一个求极限的问题。

\begin{aligned}
P(k) = \lim_{n \to \infty}  C_n^k \cdot{\frac{\lambda}{n}}^{k}(1-\frac{\lambda}{n})^{n-k}
\end{aligned}

我们来算一下这个极限:

\begin{aligned}
P(k) &= \lim_{n \to \infty}  C_n^k \cdot{\frac{\lambda}{n}}^{k}(1-\frac{\lambda}{n})^{n-k} \\
&=  \lim_{n \to \infty} \frac{n(n-1)(n-2)\cdots(n-k+1)}{k!}{\frac{\lambda}{n}}^k(1-\frac{\lambda}{n})^{n-k} \\
&= \lim_{n \to \infty} \frac{\lambda^k}{k!} (1-\frac{\lambda}{n})^n\cdot \frac{n}{n} \cdot \frac{n-1}{n}\cdots \frac{n-k+1}{n} (1-\frac{\lambda}{n})^{-k}
\end{aligned}

我们把这个极限拆分开来看,其中:

\begin{aligned}
\lim_{n \to \infty}\frac{n}{n} \cdot \frac{n-1}{n}\cdots \frac{n-k+1}{n} (1-\frac{\lambda}{n})^{-k} = 1
\end{aligned}
\begin{aligned}
\lim_{n \to \infty}(1-\frac{\lambda}{n})^n &= \lim_{n\to \infty}\{(1+\frac{1}{-\frac{n}{\lambda}})^{-\frac{n}{\lambda}}\}^{-\lambda}\\
&= e^{-\lambda}
\end{aligned}

所以,我们代入,可以得到:

P(k) = \frac{\lambda^k}{k!}e^{-\lambda}

这个就是泊松分布的概率密度函数了,也就是说在一天当中掉下k个例子的概率就是\frac{\lambda^k}{k!}e^{-\lambda}

也就是说泊松分布是我们将时间无限切分,然后套用二项分布利用数学极限推导出来的结果。本质上来说,它的内核仍然是二项分布。使用泊松分布的原因是,当n很大,p很小的时候,我们使用二项分布计算会非常困难,因为使用乘方计算出来的值会非常巨大,这个时候,我们使用泊松分布去逼近这个概率就很方便了。


结尾和升华


我们根据推导出来的结果,感觉只要是n很大,并且p很小的场景都可以使用泊松分布。但是这毕竟只是一个感性的认知,在统计学上对于这个问题也是有严谨定义的。我们来看一下严谨的使用条件的限制,大概是这么三条。

  1. 当我们将时间进行无线切分之后,在接近于0的时间段内事件发生的概率与时间成正比。
  2. 在每一段无限小的时间段内,同一事件发生两次的概率无限接近于0
  3. 在不同的时间段内,事件是否发生互相独立

最后,我们看一道书上的例题,实际感受一下泊松分布的应用。假设我们有一批零件,它的次品率是0.1%,也就是千分之一。请问我们生产一千个产品当中至少有两件次品的概率?

这道题应该很简单,要求两件及以上次品的概率,我们只需要计算出只有零件和一件次品的概率,然后用1减去它们即可。我们首先根据n和p算出\lambda

\lambda = np = 1000 * 0.1% = 1

我们带入泊松分布的公式:

P(k \geq 2) = 1 - P(k=1) - P(k=0) = 1 - \frac{1^1 e^{-1}}{1!} - \frac{1^0 e^{-1}}{0!}\approx 0.264

如果我们要用二项分布来计算,那么就需要计算0.999的一千次方了,这显然是非常复杂的,这也是泊松分布的意义。

今天的文章就到这里,原创不易,关注我,获取更多优质文章