1. 程式人生 > >Python統計分析(2)——幾種重要的概率分佈:泊松分佈

Python統計分析(2)——幾種重要的概率分佈:泊松分佈

#泊松分佈 (Poisson Distribution)

通俗定義:假定一個事件,在一段時間內隨即發生,且概率符合以下條件: 1.將該時間段分割成若干個小的時間段,在這個接近於0的小時間段裡,該事件發生一次的概率與該小時間段的長度成正比。 2.在每個極小時間段內,該事件連續發生兩次以上的概率恆等於0. 3.該事件在不同的小時間段裡,發生與否相互獨立。

則該事件符合泊松分佈。 泊松分佈使用了以下符號: λ是事件發生的速率, t是時間間隔的長, X是該時間間隔內發生的事件數, 其中X是泊松隨機變數,X的分佈稱為泊松分佈, 令μ表示t時間間隔內平均發生的事件數,則μ=λ*t.

#泊松分佈——繪圖
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
import matplotlib.style as style
from IPython.core.display import HTML

#PLOTTING CONFIG 繪圖配置
%matplotlib inline
style.use('fivethirtyeight')
plt.rcParams['figure.figsize']=(14,7)
plt.figure(dpi=100)

#PDF 繪製泊松分佈的概率密度函式
plt.bar(left=np.arange(20),height=(stats.poisson.pmf(np.arange(20),mu=5)),width=0.75,alpha=0.75)

#CDF 繪製泊松分佈的累計概率曲線
plt.plot(np.arange(20),stats.poisson.cdf(np.arange(20),mu=2),color="#fc4f30")

#LEGEND 圖例
plt.text(x=8,y=0.45,s="pmf(poisson)",alpha=0.75,weight="bold",color="#008fd5")
plt.text(x=8.5,y=0.9,s="cdf",rotation=.75,weight="bold",color="#fc4f30")

在這裡插入圖片描述 λ對結果的影響

plt.figure(dpi=100)
# PDF λ=1
plt.scatter(np.arange(20),stats.poisson.pmf(np.arange(20),mu=1),alpha=0.75,s=100)
plt.plot(np.arange(20),stats.poisson.pmf(np.arange(20),mu=1),alpha=0.75)

#PDF λ=5
plt.scatter(np.arange(20),stats.poisson.pmf(np.arange(20),mu=5),alpha=0.75,s=100)
plt.plot(np.arange(20),stats.poisson.pmf(np.arange(20),mu=5),alpha=0.75)

#PDF λ=10
plt.scatter(np.arange(20),stats.poisson.pmf(np.arange(20),mu=10),alpha=0.75,s=100)
plt.plot(np.arange(20),stats.poisson.pmf(np.arange(20),mu=10),alpha=0.75)

#LEGEND 圖例
plt.text(x=3,y=0.1,s="$λ=1$",alpha=0.75,weight="bold",color="#008fd5")
plt.text(x=8.25,y=0.075,s="$λ=5$",rotation=.75,weight="bold",color="#fc4f30")
plt.text(x=14.5,y=0.06,s="$λ=10$",rotation=.75,weight="bold",color="#fc4f30")

在這裡插入圖片描述 在λ處,事件發生的次數的概率最大。

#繪製PDF
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['figure.figsize']=(14,7)

#繪製泊松分佈的PMF曲線
x_s=np.arange(10)
y_s=stats.poisson.pmf(k=x_s,mu=5)
plt.scatter(x_s,y_s,s=100)

在這裡插入圖片描述 pmf值在μ處值最大。

#統計累積概率
#CDF
from scipy.stats import poisson

#求事件發生次數小於3的概率
print("p(x<3)={}".format(poisson.cdf(k=3,mu=5)))

#求事件發生次數大於2小於8的概率
print("p(2<x<8)={}".format(poisson.cdf(k=8,mu=5)-poisson.cdf(k=2,mu=5)))

p(x<3)=0.2650259152973616 p(2<x<8)=0.8072543457950705