1. 程式人生 > 其它 >概率統計Python計算(15)自定義離散型分佈

概率統計Python計算(15)自定義離散型分佈

假定有自定義的分佈資料(X, P),其中X表示隨機變數 X X X的取值序列,P表示對應 X X X的每個取值的概率序列。scipy.stats包為我們提供了一個rv_discrete類,可以用資料(X, P)建立自定義的離散型隨機變數的分佈。例如設 X X X~ ( 1 2 10 0.15 0.55 0.3 ) \begin{pmatrix}1&2&10\\0.15&0.55&0.3\end{pmatrix} (10.1520.55100.3),我們用下列程式碼生成一個以序列X={1, 2, 10},P={0.15, 0.55, 0.3}表示的分佈律的離散型分佈mydist。並生成200個服從mydist分佈的隨機數,模擬此分佈描述的隨機試驗。

from scipy.stats import rv_discrete         #匯入rv_discrete類
import numpy as np                          #匯入numpy取別名為np
from matplotlib import pyplot as plt        #匯入pyplot取別名plt
X=np.array([1, 2, 10])                      #X的取值序列
P=np.array([0.15, 0.55, 0.3])               #對應的概率序列
mydist=rv_discrete(
values=(X, P)) #用X,P建立分佈mydist data=mydist.rvs(size=200) #200個mydist分佈的隨機數 plt.hist(data, density=True) #繪製直方圖 plt.plot(Y, mydist.pmf(Y), 'bo') #繪製Y的分佈律圖形 plt.show()

程式的第4~5行設定表示隨機變數 X X X的分佈律的陣列X與P。第6行呼叫rv_discrete函式(第1行匯入)用X,P建立自定義離散型分佈mydist。該函式的呼叫介面為

re_discrete(value) \text{re\_discrete(value)} re_discrete(value)
引數value傳遞表示離散型隨機變數的取值序列X與對應取值的概率序列P組成的序偶(X, P)。
第7行呼叫mydist的rvs方法產生200個服從mydist的隨機數,存於陣列data。第8行呼叫plt(第3行匯入)的hist方法,用data資料繪製直方圖。第9行呼叫plt的plot方法,繪製隨機變數 Y Y Y的概率質量函式(分佈律)圖形。執行程式,展示下圖。
在這裡插入圖片描述