作者:Vamei 出處:http://www.cnblogs.com/vamei 歡迎轉載,也請保留這段聲明。謝謝!
我們已經知道什么是離散隨機變量。離散隨機變量只能取有限的數個離散值,比如投擲一個撒子出現的點數為隨機變量,可以取1,2,3,4,5,6。每個值對應有發生的概率,構成該離散隨機變量的概率分布。
離散隨機變量有很多種,但有一些經典的分布經常重復出現。對這些經典分布的研究,也占據了概率論相當的一部分篇幅。我們將了解一些離散隨機變量的經典分布,了解它們的含義和特征。
伯努利分布
伯努利分布(Bernoulli distribution)是很簡單的離散分布。在伯努利分布下,隨機變量只有兩個可能的取值: 1和0。隨機變量取值1的概率為p。相應的,隨機變量取值0的概率為1-p。因此,伯努利分布可以表示成:
$$P(X=k) = \left\{ \begin{array}{rcl} p & for & k=1 \\ 1-p & for & k=0 \end{array} \right.$$
投擲一次硬幣,出現正面,記錄為1,出現背面,記錄為0。這樣我們就有一個伯努利隨機變量。如果硬幣是均勻的,那么[$p=0.5$]。如果硬幣是不均勻的,比如硬幣出現正面的概率為0.8,那么[$p=0.8$]。我們可以繪制此分布如下:
代碼如下:
# By Vamei
plt.bar([-0.2,0.8],[0.2, 0.8],width=0.4) # bar plot
plt.xlim([-1, 2]) # axis range
plt.ylim([0.0, 1.0])
plt.title("Bernoulli distribution") # figure title
plt.xlabel("RV")
plt.ylabel("P(X=x)")
plt.show()
在scipy.stats中,有直接表達伯努利分布的函數bernoulli。事實上,在scipy.stats中,有許多常見的分布函數。
# By Vamei
from scipy.stats import bernoulli
rv = bernoulli(0.8)
x = [-1, 0, 1, 2]
print(rv.cdf(x))
上面,我們創建了一個[$p=0.8$]的伯努利隨機變量,并計算該隨機變量在不同點的累積分布函數(CDF)。
二項分布
為了理解二項分布是如何出現的,我們假設下面情況:進行n次獨立測試,每次測試成功的概率為p(相應的,失敗的概率為1-p)。這n次測試中的“成功次數”是一個隨機變量。這個隨機變量符合二項分布(binomial distribution)。
二項分布可以從計數的角度來理解。n次測試,如果隨機變量為k,意味著其中的k次成功,n-k次失敗。從n次實驗中挑選k個,根據計數原理,共有[$\left( \begin{array}{c} n \\ k \end{array} \right)$]種可能。其中的每種可能出現的概率為[$p^k(1-p)^{n-k})$]。因此,二項分布可以表示成為:
$$P(X=k) = \left( \begin{array}{c} n \\ k \end{array} \right) p^k (1-p)^{n-k}$$
$$k = 0,1,2,...,n$$
(“二項分布”的命名原因是,上面的P(X=k)等于二項式[$(p + (1-p))^n$])二項式展開的第k項。)
我們進行連續的10次打靶,如果每次中靶的概率為0.7, 那么在10次打靶中,打中靶的次數就是一個符合二項分布的隨機變量。在這樣的假設下,[$n=10$],[$p=0.7$],k可以取值從0到10之間的任意整數。利用scipy.stats中的binom函數,我們可以繪制此分布如下:
[$x=0$]和[$x=1$]概率不為0,只是值太小,沒有在圖中顯現出來。
代碼如下:
# By Vamei
from scipy.stats import binom
rv = binom(10, 0.7)
x = np.arange(-1, 12, 1)
y = rv.pmf(x)
plt.bar(x-0.2, y, width=0.4)
plt.title("binomial distribution")
plt.xlabel("RV")
plt.ylabel("P(X=x)")
plt.show()
泊松分布
泊松
泊松分布(Poisson distribution)是二項分布的一種極限情況,當[$p \rightarrow 0$],[$n \rightarrow +\infty$],而[$np = \lambda$]時,二項分布趨近于泊松分布。這意味著我們進行無限多次測試,每次成功概率無窮小,但n和p的乘積是一個有限的數值。
泊松分布用于模擬低概率事件,比如地震。地震是很低概率的事件,我們想知道一段時間,比如十年內某地發生地震的總數,可以將十年劃分為n個小時間段,每個時間段內地震發生的概率為p。我們假設小時間段很短,以致于不可能有兩次地震發生在同一小時間段內,那么地震的總數是一個隨機變量,趨近于泊松分布。
泊松分布的關鍵特征是,隨機變量的取值與區間的長短成正比。這里的區間是廣義的,它既可以表示時間,也可以表示空間。泊松分布有一個參數[$\lambda$],我們可以將泊松分布寫成如下形式:
$$P(X=k) = \frac{\lambda^k}{k!}e^{-\lambda}$$
$$k=0,1,2,...$$
[$\lambda = 1$]和[$\lambda = 5$]的泊松分布如下:
可以看到,[$\lambda$]決定了泊松分布的“重心”所在。比如地震的例子中,[$\lambda$]越大,k取大值的可能性越大,越有可能發生更多次的地震。我們將在統計中看到,如何利用觀測的數據,來估計[$\lambda$]的取值。
代碼如下:
# By Vamei
# use poisson function
from scipy.stats import poisson
rv1 = poisson(1)
x = np.arange(0,15)
y1 = rv.pmf(x)
plt.figure(figsize=(10, 4))
plt.subplot(121)
plt.bar(x-0.2, y1, width=0.4)
plt.title("lambda = 1")
plt.xlabel("RV")
plt.ylabel("PMF")
plt.subplot(122)
rv2 = poisson(5)
y2 = rv2.pmf(x)
plt.bar(x-0.2, y2, width=0.4)
plt.title("lambda = 5")
plt.xlabel("RV")
plt.ylabel("PMF")
plt.show()
幾何分布
假設我們連續進行獨立測試,直到測試成功。每次測試成功的概率為p。那么,到我們成功時,所進行的測試總數是一個隨機變量,可以取值1到正無窮。這樣一個隨機變量符合幾何分布(geometric distribution)。
隨機變量取值為k時,意味前面的k-1次都失敗了。因此,我們可以將幾何分布表示成:
$$P(X=k)=(1-p)^{k-1}p$$
$$k=1,2,...$$
假設我們進行產品檢驗。產品的合格率為0.65。我們需要檢驗k次才發現第一個合格產品,k的分布表示如下:
可以看到,幾何分布的概率質量函數呈遞減趨勢。我們也可以從表達式中得到該特征。
代碼如下:
# By Vamei
from scipy.stats import geom
rv = geom(0.45)
x = np.arange(-1, 15, 1)
y = rv.pmf(x)
plt.bar(x-0.2, y, width=0.4)
plt.ylim([0, 0.5])
plt.title("geometric distribution")
plt.xlabel("RV")
plt.ylabel("P(X=x)")
plt.show()
負二項分布
幾何分布實際上是負二項分布(negative geometric distribution)的一種特殊情況。幾何分布是進行獨立測試,直到出現成功,測試的總數。負二項分布同樣是進行獨立測試,但直到出現r次成功,測試的總數k。r=1時,負二項分布實際上就是幾何分布。
在連續的r次測試時,我們只需要保證最后一次測試是成功的,而之前的k-1次中,有r-1次成功。這r-1次成功的測試,可以任意存在于k-1次測試。因此,負二項分布的表達式為:
$$P(X=k) = \left( \begin{array}{c} k-1 \\ r-1 \end{array} \right) p^r (1-p)^{k-r}$$
$$k = 1,2,...$$
練習: (可以使用scipy.stats中的ngeom函數來表示負二項分布) 假設我們進行產品檢驗。產品的合格率為0.65。我們需要檢驗k次才共發現3個合格產品。繪制隨機變量k的概率分布。
超幾何分布
一個袋子中有n個球,其中r個是黑球,n-r是白球,從袋中取出m個球,讓X表示取出球中的黑球的個數,那么X是一個符合超幾何分布(hypergeometric distribution)的隨機變量。
練習: 推導超幾何分布的概率質量函數,并繪制其概率分布。
總結
離散隨機變量比較直觀,容易理解。我們在這里介紹了一些經典分布,即隨機變量取值的概率。
歡迎繼續閱讀“數據科學”系列文章
文章列表