常見概率統計分佈及Python實現


常見概率統計分佈及Python實現

一、離散隨機變量及連續隨機變量

隨機變量

1. 離散隨機變量(Discrete random variable):取值是可數個值(且只能為自然數0、1、2...)的隨機變量

2. 連續隨機變量(Continuous random variable):取值是一個區間中任一實數(即變量的取值可以是連續的)的隨機變量


相應概率計算公式PMF/PDF/CDF

1. 離散隨機變量:概率質量函數(Probability Mass Function,PMF)PMF即離散隨機變量在各特定取值上的概率

2. 連續隨機變量:概率密度函數(Probability Density Function,PDF)PDF:連續隨機變量的概率密度函數是描述這個隨機變量的輸出值,在某個特定取值點附近可能性的函數。

3. 累積分佈函數(Cumulative Distribution Function,CDF)CDF:概率密度函數的積分,能完整描述一個隨機變量X的概率分佈。

PDF:如果XX是連續型隨機變量,定義概率密度函數為fX(x)fX(x),用PDF在某一區間上的積分來刻畫隨機變量落在這個區間中的概率,即


常見概率統計分佈及Python實現

PMF:如果XX離散型隨機變量,定義概率質量函數為fX(x)fX(x),PMF其實就是高中所學的離散型隨機變量的分佈律,即

常見概率統計分佈及Python實現

三.概念分析

 根據上述,我們能得到一下結論:

 1)PDF是連續變量特有的,PMF是離散隨機變量特有的;

 2)PDF的取值本身不是概率,它是一種趨勢(密度)只有對連續隨機變量的取值進行積分後才是概率,也就是說對於連續值確定它在某一點的概率是沒有意義的;

 3)PMF的取值本身代表該值的概率。

四.分佈函數的意義

  我們從兩點來分析分佈函數的意義:

  1.為什麼需要分佈函數?

  對於離散型隨機變量,可以直接用分佈律來描述其統計規律性,而對於非離散型的隨機變量,如連續型隨機變量,因為我們無法一一列舉出隨機變量的所有可能取值,所以它的概率分佈不能像隨機變量那樣進行描述,於是引入PDF,用積分來求隨機變量落入某個區間的概率。分佈律不能描述連續型隨機變量,密度函數不能描述離散隨機變量,因此需要找到一個統一方式描述隨機變量統計規律,這就有了分佈函數。另外,在現實生活中,有時候人們感興趣的是隨機變量落入某個範圍內的概率是多少,如擲骰子的數小於3點的獲勝,那麼考慮隨機變量落入某個區間的概率就變得有現實意義了,因此引入分佈函數很有必要。

  2. 分佈函數的意義

  分佈函數F(x)F(x)在點xx處的函數值表示XX落在區間(−∞,x](−∞,x]內的概率,所以分佈函數就是定義域為RR的一個普通函數,因此我們可以把概率問題轉化為函數問題,從而可以利用普通的函數知識來研究概率問題,增大了概率的研究範圍。

二、離散概率分佈及連續概率分佈

離散概率分佈

  1. 伯努利分佈(Bernoulli Distribution):亦稱“0-1分佈”
  2. 二項分佈(Binomial Distribution):即重複n次獨立的伯努利實驗,每次試驗中只有兩種可能的結果。
  3. 幾何分佈(Geometric Distribution):在n次伯努利試驗中,試驗k次才得到一次成功的概率(即前k-1次均失敗)
  4. 泊松分佈(Poisson Distribution):一種累計隨機事件發生次數的最基本的獨立增量過程。

泊松分佈一般需滿足三個條件:事件的發生是小概率事件/事件間相互獨立/事件發生的概率是穩定的

連續概率分佈

正態分佈(Normal Distribution):是所有分佈趨於極限大樣本的分佈,屬於連續分佈。

各種分佈類型間關係

  • 二項分佈的極限分佈是泊松分佈。
  • 泊松分佈的極限分佈是正態分佈,即np=λ,當n很大時可近似相等。
  • 二項分佈和泊松分佈都可以用正態分佈代替(需滿足一定條件,中心極限定理or大數定律)。


常見概率統計分佈及Python實現

大數定律:依概率收斂

大數定律是說,n只要越來越大,我把這n個獨立同分布的數加起來去除以n得到的這個樣本均值(也是一個隨機變量)會依概率收斂到真值u,但是樣本均值的分佈是怎樣的我們不知道。

切比雪夫不等式

由於方差D(X)

D(X)是用來描述隨機變量XX的取值在其數學期望E(X)E(X)附件的離散程度的,因此,對任意的正數ϵϵ,事件(∣X−E(X)∣⩾ϵ)(∣X−E(X)∣⩾ϵ)發生的概率應該與D(X)

D(X)有關,而這種關係用數學形式表示出來,就是切比雪夫不等式。

切比雪夫不等式定理 設隨機變量X

X的數學期望E(X)E(X)與方差D(X)D(X)存在,則對於任意正數ϵϵ,不等式


常見概率統計分佈及Python實現


常見概率統計分佈及Python實現

伯努利大數定律

伯努利大數定律是切比雪夫大數定律的一個重要推論 伯努利大數定律定理 設nA

nA​為n重伯努利試驗中事件A發生的次數,又設在每次試驗中事件A發生的概率P(A)=p,則對於任意的正數ϵ,當試驗的次數n→∞時,有


常見概率統計分佈及Python實現

中心極限定理

當樣本量N逐漸趨於無窮大時,N個抽樣樣本的均值的頻數逐漸趨於正態分佈,其對原總體的分佈不做任何要求,意味著無論總體是什麼分佈,其抽樣樣本的均值的頻數的分佈都隨著抽樣數的增多而趨於正態分佈,如上圖,這個正態分佈的u會越來越逼近總體均值,並且其方差滿足a^2/n,a為總體的標準差,注意抽樣樣本要多次抽取,一個容量為N的抽樣樣本是無法構成分佈的。


常見概率統計分佈及Python實現


常見概率統計分佈及Python實現

各概率分佈的Python實現:

<code>#導入包
import numpy as np #數組包
from scipy import stats #統計計算包的統計模塊
import matplotlib.pyplot as plt #繪圖包
%matplotlib inline/<code>

1.伯努利分佈(Bernoulli Distribution)

<code>#1、定義隨機變量:拋一次硬幣,0代表失敗即反面朝上;1代表成功即正面朝上
#(隨機變量通常用大寫字母表示)
X=np.arange(0,2,1)
X
>>>
array([0, 1])

#2、求對應分佈的概率:概率質量函數(PMF:Probabilily mass function)
p=0.5 #硬幣朝上的概率
pList=stats.bernoulli.pmf(X,p)
pList
>>>
array([0.5, 0.5])

#3、繪圖
plt.plot(X,pList,linestyle='None',marker='o') #不需要將兩點相連
plt.vlines(X,0,pList) #繪製豎線,參數說明plt.vlines(x座標值,y座標最小值,y座標最大值)
plt.xlabel('隨機變量:拋1次硬幣結果為反面記為0,為正面記為1')
plt.ylabel('概率值')
plt.title('伯努利分佈:p=%0.2f'%p)/<code>
常見概率統計分佈及Python實現

2.二項分佈(Binomial Distribution)


常見概率統計分佈及Python實現

<code>#1、定義隨機變量:拋5次硬幣,正面朝上的次數
n=5 #做某件事的次數
p=0.5 #做成功某件事的概率
X=np.arange(0,n+1,1)
X
>>>
array([0, 1, 2, 3, 4, 5])

#2、求對應分佈的概率
pList=stats.binom.pmf(X,n,p) #參數含義為:pmf(k次成功,共n次實驗,單次實驗成功概率為p)
pList
>>>
array([0.03125, 0.15625, 0.3125 , 0.3125 , 0.15625, 0.03125])

#3、繪圖
plt.plot(X,pList,linestyle='None',marker='o')
plt.vlines(X,0,pList)
plt.xlabel('隨機變量:拋5次硬幣,正面朝上的次數')
plt.ylabel('概率值')
plt.title('二項分佈:n=%i,p=%0.2f'%(n,p))/<code>


常見概率統計分佈及Python實現


3.幾何分佈(Geometric Distribution)


常見概率統計分佈及Python實現

<code>#1、定義隨機變量:首次表白成功所需次數k
k=5 #做某件事的次數
p=0.6 #做成功某件事的概率
X=np.arange(1,k+1,1)

X
>>>
array([1, 2, 3, 4, 5])

#2、求對應分佈的概率
pList=stats.geom.pmf(X,p) #參數含義為:pmf(第X次成功,單次實驗成功概率為p)
pList
>>>
array([0.6 , 0.24 , 0.096 , 0.0384 , 0.01536])

#3、繪圖
plt.plot(X,pList,linestyle='None',marker='o')
plt.vlines(X,0,pList)
plt.xlabel('隨機變量:表白k次才首次成功')
plt.ylabel('概率值')
plt.title('幾何分佈:p=%0.2f'%p)/<code>


常見概率統計分佈及Python實現


4.泊松分佈(Poisson Distribution)


常見概率統計分佈及Python實現


<code>#1、定義隨機變量:已知某路口平均每天發生事故兩次,則該路口一天內發生k起事故的概率是多少? 

mu=2 #平均值:每天平均發生2起事故
k=4 #該路口發生4起事故的概率
X=np.arange(0,k+1,1)
X
>>>
array([0, 1, 2, 3, 4])

#2、求對應分佈的概率
pList=stats.poisson.pmf(X,mu) #參數含義為:pmf(發生X次事件,平均發生mu次)
pList
>>>
array([0.13533528, 0.27067057, 0.27067057, 0.18044704, 0.09022352])

#3、繪圖
plt.plot(X,pList,linestyle='None',marker='o')
plt.vlines(X,0,pList)
plt.xlabel('隨機變量:該路口發生事故的次數')
plt.ylabel('概率值')
plt.title('泊松分佈:平均值mu=%i'%mu)/<code>

5.正態分佈(Normal Distribution)


常見概率統計分佈及Python實現


常見概率統計分佈及Python實現


<code>#1、定義隨機變量
mu=0 #平均值
sigma=1 #標準差
X=np.arange(-5,5,0.1)
#2、求對應分佈的概率
pList=stats.norm.pdf(X,mu,sigma) #參數含義為:pdf(發生X次事件,均值為mu,方差為sigma)
#3、繪圖
plt.plot(X,pList,linestyle='-')

plt.xlabel('隨機變量:x')
plt.ylabel('概率值:y')
plt.title('正態分佈:$\\mu$=%0.1f,$\\sigma^2$=%0.1f'%(mu,sigma))/<code>


5.4、已知正態分佈查找對應概率值

分三步:確定分佈範圍、求標準分z值、查找z表格

1. 確定分佈範圍(以左尾為例)如:p(k<1.05)


常見概率統計分佈及Python實現

2. 求標準分 標準分z=(1.05-平均值)/標準差


常見概率統計分佈及Python實現

3. 查找z表格


常見概率統計分佈及Python實現

其他:右尾及雙尾


常見概率統計分佈及Python實現


三、正態分佈與冪律分佈

  • 正態分佈(Normal distribution)

正態曲線呈鍾型,是兩邊低,中間高,左右對稱曲線。一般而言,如果某個量是由許多微小的獨立隨機因素影響的結果,則可以認為該量符合正態分佈。正態分佈說明了事物運行有慣性的規律,能避免向另外的極端發展,從而體現出一種一定態勢下的慣性波動。

常見概率統計分佈及Python實現

關於正態分佈,你不知道它誕生之路是多麼“變態”​www.sohu.com

常見概率統計分佈及Python實現

  • 冪律分佈(Power law distribution)

冪律分佈表現為斜率為負的冪指數的直線,概率越高,佔比越小,生活中的馬太效應及長尾分佈都是冪律分佈的典型案例。簡單來說,冪律分佈就是告訴你世界是不公平的,較少的人擁有大部分財富(二八法則),於是在他們身上就體現了財富的加速積累情況。


常見概率統計分佈及Python實現


分享到:


相關文章: