泊松分佈分佈與Python圖解

import numpy as np
import matplotlib.pyplot as plt

from numpy import power
from scipy.special import comb

相關知識

Bernoulli Experiment (伯努利試驗)

對於一個試驗(事件),如果重複發生的概率是獨立的(互補影響),那麼它是獨立試驗。特別的,如果這個試驗只存在兩種結果,則稱其爲伯努利試驗。

Binomial Distribution (二項式分佈)

對於重複nn次的伯努利試驗,我們可以計算成功kk次的概率:

Pk=Cnkpk(1p)nk=n!(nk)!k!pk(1p)nkP_{k}=C_{n}^{k} p^{k}(1-p)^{n-k}=\frac{n !}{(n-k) ! k !} \cdot p^{k}(1-p)^{n-k}

def BinomialDist(n, k, p=.5):
    return comb(n, k) * power(p, k) * power(1-p, n-k)

e.g. 假設我們拋一枚硬幣,總共拋10次,求10次都是正面的概率?

解:P10=0.510P_{10} = 0.5^{10}

驗證一下我們的函數:

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

e.g. 假設我們拋一枚硬幣,總共拋10次,分別求k=0,1,2,...,10k=0,1,2,...,10次是正面的概率?

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()

在這裏插入圖片描述

從上圖可以看出,k=5k=5時候最大,這符合我們的預期:拋10次硬幣,正面朝上的次數最有可能爲5。即隨機變量ξB(10,0.5)\xi \sim B(10, 0.5)E(ξ)=np=5E(\xi)=np=5

簡單證明一下E(ξ)=npE(\xi)=np

  1. 預備公式:kcnk=ncn1k1k c_{n}^{k}=n c_{n-1}^{k-1}

  2. 離散型隨機變量ξ\xi的期望:E(ξ)=in(xip(xi))E(\xi)=\sum_i^n(x_i\cdot p(x_i))

  3. 這裏xi=k=0,1,...,nx_i = k = 0,1,...,n,而p(xi)=p(k)=Cnkpk(1p)nkp(x_i)=p(k)=C_{n}^{k} p^{k}(1-p)^{n-k}

E(ξ)=0×cn0p0qn+1×cn1p1qn1+2×cn2p2qn2+ncnnp0qn=np(cn10p0qn1+cn11p0qn2+cn12p0qn2+cn1n1pn1q0)=np(p+q)n1=np\begin{aligned}E(\xi) &= 0 \times c_{n}^{0} p^{0} q^{n}+1 \times c_{n}^{1} p^{1} q^{n-1}+ 2 \times c_{n}^{2} p^{2} q^{n-2}\ldots+n c_{n}^{n} p^{0} q^{n}\\ &= n p\left(c_{n-1}^{0} p^{0} q^{n-1}+c_{n-1}^{1} p^{0} q^{n-2}+c_{n-1}^{2} p^{0} q^{n-2} \ldots+c_{n-1}^{n-1} p^{n-1} q^{0}\right)\\ &= n p(p+q)^{n-1}\\ &= n p\end{aligned}

計算一下E(ξ)=in(xip(xi))E(\xi)=\sum_i^n(x_i\cdot p(x_i))ks相當於xix_iPlst相當於p(xi)p(x_i)

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

其他證明方法和方差(D(ξ)=npqD(\xi)=npq)可以參考二項分佈的期望和方差的詳細證明

D(X)=E(X2)E2(X)=k=0k2λkk!eλλ2=λeλk=1kλk1(k1)!λ2=λeλ[k=2λk1(k2)!+k=1λk1(k1)!]λ2=λeλ[λeλ+eλ]λ2=λ\begin{array}{l} D(X)=E\left(X^{2}\right)-E^{2}(X)=\sum_{k=0}^{\infty} k^{2} \cdot \frac{\lambda^{k}}{k !} e^{-\lambda}-\lambda^{2} \\ =\lambda e^{-\lambda} \sum_{k=1}^{\infty} \frac{k \lambda^{k-1}}{(k-1) !}-\lambda^{2}=\lambda e^{-\lambda}\left[\sum_{k=2}^{\infty} \frac{\lambda^{k-1}}{(k-2) !}+\sum_{k=1}^{\infty} \frac{\lambda^{k-1}}{(k-1) !}\right]-\lambda^{2} \\ =\lambda e^{-\lambda}\left[\lambda e^{\lambda}+e^{\lambda}\right]-\lambda^{2}=\lambda \end{array}

總結,如果隨機變量X=kX=k的概率滿足P(X=k)=Cnkpk(1p)nkP(X=k)=C_{n}^{k} p^{k}(1-p)^{n-k}二項式分佈,則XB(n,p)X \sim B(n,p)

定義

二項式分佈P(k)=n!(nk)!k!pk(1p)nkP\left(k\right)=\frac{n !}{(n-k) ! k !} \cdot p^{k}(1-p)^{n-k}要求nn必須爲已知數,但是生活中很多事情是沒法統計出或者不存在精確的總數,這些事情往往是在一段連續的時間內出現一定的次數,相互之間沒有影響(隨機發生),並且單次事件耗時和概率幾乎可以忽略(只有出現或者未出現,類似二項式分佈;任意時刻發生的概率幾乎爲0)。例如,某個醫院一天/一小時/一週內來的病人數量某個包子店一天/一小時/一週內賣出的包子數量,我們能得到只有一段時間內事情發生的次數。

由於事情是隨機發生的,也就是在統計的一定時間內,任意時刻都有可能發生,所以我們就要對二項式公式改進。假設一個小時內發生了kk次,如果我們10分鐘統計一次,總共統計n=6n=6次,我們期待p=knp=\frac{k}{n},也就是kk次需要分別散落在6個10分鐘內,顯然kk次可能出現在一個10分鐘內。那麼1秒鐘統計一次呢?還是不行,因爲還是存在1秒鐘發生kk次的可能性。爲了保證單位時間內最多隻有一次事件發生,泊松分佈將n+n \rightarrow +\infty,那麼單次事件只能發生在1n\frac{1}{n}時間內。

我們可以統計出一段時間內出現的平均次數λ\lambda,那麼可以認爲單次事件概率p=λnp=\frac{\lambda}{n},於是二項式分佈就變成了:

limnP(X=k)=limn(nk)pk(1p)nk=(λkk!)exp(λ)=λkk!eλ\lim _{n \rightarrow \infty} P(X=k) \\ = \lim _{n \rightarrow \infty}\left(\begin{array}{l}n \\ k\end{array}\right) p^{k}(1-p)^{n-k}\\ = \left(\frac{\lambda^{k}}{k !}\right) \exp (-\lambda)\\ = \frac{\lambda^k}{k!}e^{-\lambda}

其實ee的定義就是(參見:自然常數e的含義):
limn+(1+1n)n\lim_{n \rightarrow +\infty}(1+\frac{1}{n})^n

eλ=limn+(1+λn)ne^{-\lambda} = \lim_{n \rightarrow +\infty}(1+\frac{-\lambda}{n})^n

最終泊松分佈定義爲:若XX服從參數爲λ\lambda的泊松分佈,記爲Xπ(λ)X\sim \pi(\lambda)XP(λ)X\sim P(\lambda)

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

相關性質:

  • E(X)=λE(X) = \lambda
  • D(X)=λD(X) = \lambda

PMF與PDF

雖然n+n\rightarrow +\infty,並且公式也可以計算k>0k>0的非整數,但是泊松分佈還是針對離散型隨機變量,所以上述公式又稱爲泊松分佈的PMF(概率質量函數)。

  • PMF(Probability Mass Function,概率質量函數): 是對離散隨機變量的定義。是離散隨機變量在各個特定取值的概率。該函數通俗來說,就是對於一個離散型概率事件來說,使用這個函數來求它的各個成功事件結果的概率。

  • PDF(Probability Density Function,概率密度函數 ):是對連續性隨機變量的定義。與PMF不同的是,PDF在特定點上的值並不是該點的概率, 連續隨機概率事件只能求一段區域內發生事件的概率, 通過對這段區間進行積分來求。通俗來說, 使用這個概率密度函數將想要求概率的區間的臨界點(最大值和最小值)帶入求積分,就是該區間的概率。

參數lambda

我們來看不同參數λ\lambda的泊松分佈情況。注意,由於是離散隨機變量,所以我們對kk只能取0\geq 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()

在這裏插入圖片描述

從上圖中,可以看出,泊松分佈圍繞着λ\lambda爲中心的,而且λ\lambda越大,越對稱,也越像正態分佈。

與正態分佈的關係

知乎上有個答案這樣說的:

正態分佈是所有分佈趨於極限大樣本的分佈,屬於連續分佈。二項分佈與泊松分佈,則都是離散分佈。二項分佈的極限分佈是泊松分佈,泊松分佈的極限分佈是正態分佈,即np=λnp=\lambda,當nn很大時,可以近似相等。當nn很大時(還沒達到連續的程度),可以用泊松分佈近似代替二項分佈;當n再變大,幾乎可以看成連續時,二項分佈和泊松分佈都可以用正態分佈來代替!

乍一看,好像是這麼回事,但是仔細想想我們本來就是假設n+n \rightarrow +\infty。從上面的實驗中我們發現,λ\lambda越大越接近正態分佈。


簡書上一篇blog認爲:當發生次數kk比較大的時候,泊松分佈會變成均值爲λ\lambda,方差爲λ\lambda的正態分佈:

limkλkk!eλ=12πλe(xλ)2/2λN(λ,λ)\lim _{k \rightarrow \infty} \frac{\lambda^{k}}{k !} e^{-\lambda}=\frac{1}{\sqrt{2 \pi \lambda}} e^{-(x-\lambda)^{2} / 2 \lambda} \sim N(\lambda, \lambda)

個人認爲這個結論也是明顯不對,因爲不論參數λ\lambdakk都可以\rightarrow \infty。不過後半句話應該是對的。


根據這篇數學文章上的圖(截取如下),當μ\mu也就是λ\lambda\rightarrow \inftyσ2=λ\sigma^{2}=\lambda時,變成了N(μ,σ)N(\mu, \sigma)

在這裏插入圖片描述
這與我們的實驗也是相符的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章