概率論中常見分布總結以及python的scipy庫使用:兩點分布、二項分布、幾何分布、泊松分布、均勻分布、指數分布、正態分布


 

概率分布有兩種類型:離散(discrete)概率分布和連續(continuous)概率分布。

離散概率分布也稱為概率質量函數(probability mass function)。離散概率分布的例子有伯努利分布(Bernoulli distribution)、二項分布(binomial distribution)、泊松分布(Poisson distribution)和幾何分布(geometric distribution)等。

連續概率分布也稱為概率密度函數(probability density function),它們是具有連續取值(例如一條實線上的值)的函數。正態分布(normal distribution)、指數分布(exponential distribution)和β分布(beta distribution)等都屬於連續概率分布。

 

1、兩點分布(伯努利分布)

伯努利試驗:

伯努利試驗是在同樣的條件下重復地、各次之間相互獨立地進行的一種試驗。

即只先進行一次伯努利試驗,該事件發生的概率為p,不發生的概率為1-p。這是一個最簡單的分布,任何一個只有兩種結果的隨機現象都服從0-1分布。

最常見的例子為拋硬幣

其中,

期望E = p

方差D = p*(1-p)^2+(1-p)*(0-p)^2 = p*(1-p)

 

 2、二項分布(n重伯努利分布)(X~B(n,p))

即做n個兩點分布的實驗

其中,

E = np

D = np(1-p)

對於二項分布,可以參考https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.binom.html

二項分布的應用場景主要是,對於已知次數n,關心發生k次成功。

,即為二項分布公式可求。

 

對於拋硬幣的問題,做100次實驗,觀察其概率分布函數:

from scipy.stats import binom
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

## 設置屬性防止中文亂碼
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False

  首先導入庫函數以及設置對中文的支持

fig,ax = plt.subplots(1,1)
n = 100
p = 0.5
#平均值, 方差, 偏度, 峰度
mean,var,skew,kurt = binom.stats(n,p,moments='mvsk')
print mean,var,skew,kurt
#ppf:累積分布函數的反函數。q=0.01時,ppf就是p(X<x)=0.01時的x值。
x = np.arange(binom.ppf(0.01, n, p),binom.ppf(0.99, n, p))
ax.plot(x, binom.pmf(x, n, p),'o')
plt.title(u'二項分布概率質量函數')
plt.show()

  

 

 

觀察概率分布圖,可以看到,對於n = 100次實驗中,有50次成功的概率(正面向上)的概率最大。

3、幾何分布(X ~ GE(p))

在n次伯努利實驗中,第k次實驗才得到第一次成功的概率分布。其中:P(k) = (1-p)^(k-1)*p

E = 1/p  推到方法就是利用利用錯位相減法然后求lim - k ->無窮 

D = (1-p)/p^2  推到方法利用了D(x) = E(x)^2-E(x^2),其中E(x^2)求解同上

幾何分布可以參考:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.geom.html#scipy.stats.geom

fig,ax = plt.subplots(1,1)
p = 0.5
#平均值, 方差, 偏度, 峰度
mean,var,skew,kurt = geom.stats(p,moments='mvsk')
print mean,var,skew,kurt
#ppf:累積分布函數的反函數。q=0.01時,ppf就是p(X<x)=0.01時的x值。
x = np.arange(geom.ppf(0.01, p),geom.ppf(0.99, p))
ax.plot(x, geom.pmf(x, p),'o')
plt.title(u'幾何分布概率質量函數')
plt.show()

  

 

因此,可以看到,對於拋硬幣問題,拋個兩三次就能成功。

 

4、泊松分布(X~P(λ))

描述單位時間/面積內,隨機事件發生的次數。P(x = k) = λ^k/k!*e^(-λ)   k = 0,1,2, ...    λ >0

泊松分布可作為二項分布的極限而得到。一般的說,若  ,其中n很大,p很小,因而  不太大時,X的分布接近於泊松分布  。

λ:單位時間/面積下,隨機事件的平均發生率

E = λ

D = λ

譬如:某一服務設施一定時間內到達的人數、一個月內機器損壞的次數等。

 假設某地區,一年中發生槍擊案的平均次數為2。

fig,ax = plt.subplots(1,1)
mu = 2
#平均值, 方差, 偏度, 峰度
mean,var,skew,kurt = poisson.stats(mu,moments='mvsk')
print mean,var,skew,kurt
#ppf:累積分布函數的反函數。q=0.01時,ppf就是p(X<x)=0.01時的x值。
x = np.arange(poisson.ppf(0.01, mu),poisson.ppf(0.99, mu))
ax.plot(x, poisson.pmf(x, mu),'o')
plt.title(u'poisson分布概率質量函數')
plt.show()

  

 

因此,一年內的槍擊案發生次數的分布如上所示。

 

與二項分布對比:

fig,ax = plt.subplots(1,1)

n = 1000
p = 0.1
#平均值, 方差, 偏度, 峰度
mean,var,skew,kurt = binom.stats(n,p,moments='mvsk')
print mean,var,skew,kurt
#ppf:累積分布函數的反函數。q=0.01時,ppf就是p(X<x)=0.01時的x值。
x = np.arange(binom.ppf(0.01, n, p),binom.ppf(0.99, n, p))
p1, = ax.plot(x, binom.pmf(x, n, p),'b*',label = 'binom')

mu = n*p
#平均值, 方差, 偏度, 峰度
mean,var,skew,kurt = poisson.stats(mu,moments='mvsk')
print mean,var,skew,kurt
#ppf:累積分布函數的反函數。q=0.01時,ppf就是p(X<x)=0.01時的x值。
x = np.arange(poisson.ppf(0.01, mu),poisson.ppf(0.99, mu))
p2, = ax.plot(x, poisson.pmf(x, mu),'ro',label = 'poisson')

plt.legend(handles = [p1, p2])
plt.title(u'對比')
plt.show()

  

 5、均勻分布(X~U(a,b))

對於隨機變量x的概率密度函數:

則稱隨機變量X服從區間[a,b]上的均勻分布。

E = 0.5(a+b)

D = (b-a)^2 / 12

均勻分布在自然情況下極為罕見,而人工栽培的有一定株行距的植物群落即是均勻分布。這表明X落在[a,b]的子區間內的概率只與子區間長度有關,而與子區間位置無關,因此X落在[a,b]的長度相等的子區間內的可能性是相等的,所謂的均勻指的就是這種等可能性。

落在某一點的概率都是相同的

若[x1,x2]是[a,b]的任一子區間,則

P{x1≤x≤x2}=(x2-x1)/(b-a)

這表明X落在[a,b]的子區間內的概率只與子區間長度有關,而與子區間位置無關。

fig,ax = plt.subplots(1,1)

loc = 1
scale = 1

#平均值, 方差, 偏度, 峰度
mean,var,skew,kurt = uniform.stats(loc,scale,moments='mvsk')
print mean,var,skew,kurt
#ppf:累積分布函數的反函數。q=0.01時,ppf就是p(X<x)=0.01時的x值。
x = np.linspace(uniform.ppf(0.01,loc,scale),uniform.ppf(0.99,loc,scale),100)
ax.plot(x, uniform.pdf(x,loc,scale),'b-',label = 'uniform')

plt.title(u'均勻分布概率密度函數')
plt.show()

 

 

 6、指數分布X~ E(λ)

 E = 1/λ

 D = 1/λ^2

fig,ax = plt.subplots(1,1)

lambdaUse = 2
loc = 0
scale = 1.0/lambdaUse

#平均值, 方差, 偏度, 峰度
mean,var,skew,kurt = expon.stats(loc,scale,moments='mvsk')
print mean,var,skew,kurt
#ppf:累積分布函數的反函數。q=0.01時,ppf就是p(X<x)=0.01時的x值。
x = np.linspace(expon.ppf(0.01,loc,scale),expon.ppf(0.99,loc,scale),100)
ax.plot(x, expon.pdf(x,loc,scale),'b-',label = 'expon')

plt.title(u'指數分布概率密度函數')
plt.show()

  

 指數分布通常用來表示隨機事件發生的時間間隔,其中lambda和poisson分布的是一個概念(我認為),不知道為什么知乎上https://www.zhihu.com/question/24796044他們為啥說這倆不一樣呢?我覺得這兩種分布的期望肯定不一樣啊,一個描述發生次數,一個描述兩次的時間間隔,互為倒數也是應該的啊。

指數分布常用來表示旅客進機場的時間間隔、電子產品的壽命分布(需要高穩定的產品,現實中要考慮老化的問題

 

指數分布的特性:無記憶性

比如燈泡的使用壽命服從指數分布,無論他已經使用多長一段時間,假設為s,只要還沒有損壞,它能再使用一段時間t 的概率與一件新產品使用時間t 的概率一樣。

這個證明過程簡單表示:

P(s+t| s) = P(s+t , s)/P(s) = F(s+t)/F(s)=P(t)

 

7、正態分布(X~N(μ,σ^2))

 

E = μ

D = σ^2

 正態分布是比較常見的,譬如學生考試成績的人數分布等

fig,ax = plt.subplots(1,1)


loc = 1
scale = 2.0
#平均值, 方差, 偏度, 峰度
mean,var,skew,kurt = norm.stats(loc,scale,moments='mvsk')
print mean,var,skew,kurt
#ppf:累積分布函數的反函數。q=0.01時,ppf就是p(X<x)=0.01時的x值。
x = np.linspace(norm.ppf(0.01,loc,scale),norm.ppf(0.99,loc,scale),100)
ax.plot(x, norm.pdf(x,loc,scale),'b-',label = 'norm')

plt.title(u'正太分布概率密度函數')
plt.show()

  

 

補充:

大數定理:

隨着樣本的增加,樣本的平均數將接近於總體的平均數,故推斷中,一般會使用樣本平均數估計總體平均數。

 大數定律講的是樣本均值收斂到總體均值

中心極限定理:

獨立同分布的事件,具有相同的期望和方差,則事件服從中心極限定理。他表示了對於抽取樣本,n足夠大的時候,樣本分布符合x~N(μ,σ^2)

中心極限定理告訴我們,當樣本量足夠大時,樣本均值的分布慢慢變成正態分布

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM