標籤:

離散和連續概率分布

離散和連續概率分布

一.離散概率分布

1.伯努利分布

分布的作用:

可以用於輔助決策。比如你知道明天下雨概率是80%,你出門帶傘。

如何檢驗:

伯努利試驗僅有兩個互斥結果,比如明天是否下雨,就是伯努利試驗,僅有下雨和不下雨兩種情況。

概率計算:

定義隨機變數

import scipy.stats as stats #統計計算包的統計模塊import pandas as pdimport numpy as np #數組包import matplotlib.pyplot as pltX= np.arange(0,2,1)Xarray([0, 1])p=0.5plist=stats.bernoulli.pmf(X,p)plistarray([ 0.5, 0.5])plt.plot(X, plist, marker=o,linestyle=None)plt.vlines(X, 0,plist) plt.xlabel(隨機變數 : 拋硬幣一次)plt.ylabel(概率)plt.title(伯努利分布:p = %.2f % p)plt.show()

x2 = np.arange(0,5,1)x2array([0, 1, 2, 3, 4])p = 0.5 n = 5plist2= stats.binom.pmf(x2,n,p)plist2array([ 0.03125, 0.15625, 0.3125 , 0.3125 , 0.15625])plt.plot(x2,plist2,marker=o,linestyle=None)plt.vlines(x2,0,plist2)plt.xlabel(隨機變數:拋硬幣正面朝上次數)plt.ylabel(概率)plt.title(二項分布: p=%.2f %p)plt.show()

#二項分布累計分布函數x2= np.arange(0,5,1)y = scipy.stats.binom.cdf(x2,n,p)plt.plot(x2, y, marker=o)plt.show()

2. 幾何分布

分布的作用:可以用於輔助決策。比如你想要知道你賭博十次,第一次贏的概率是多少。

如何檢驗:1、做某件事的次數是固定的,次數為N2、每一次事件都有兩個可能的結果3、每一次成功的概率都相等,成功概率記為P4、想要知道第K次做某件事才能取得第一次成功的概率。

概率計算:

#定義隨機變數k = 5x3 = np.arange(1,k+1, 1)x3array([1, 2, 3, 4, 5])p = 0.5 plist3 = scipy.stats.geom.pmf(x3, p)plt.plot(x3, plist3,marker=o,linestyle=none)plt.vlines(x3,0,plist3)plt.xlabel(隨機變數)plt.ylabel(概率)plt.title(幾何分布: p=%.2f% p)plt.show()

3.泊松分布

分布的作用:

可以用於輔助決策。比如某個路口平常每天平均發生兩起事故,你想知道如果發生4起的概率是多少。

如何檢驗:

1、事件是獨立事件

2、在任意相同的時間範圍內,事件發生的概率相同

3、你想知道某個時間範圍內,發生某件事情K次的概率是多大。

概率計算:

#定義隨機變數hist = 2 #定義某路口每天發生事故的比率是2次k=4 #想知道某路口發生4次事故的概率是多少x4=np.arange(0,k+1,1)x4array([0, 1, 2, 3, 4])#計算概率密度函數plist4= scipy.stats.poisson.pmf(x4, hist)plist4array([ 0.13533528, 0.27067057, 0.27067057, 0.18044704, 0.09022352])plt.plot(x4, plist4 ,marker = o,linestyle = none)plt.vlines(x4,0 ,plist4)plt.xlabel(隨機變數)plt.ylabel(概率)plt.title(泊松分布:平均值 hist =%i %mu)plt.show()

二.連續概率分布

1.正態分布

#生成正態分布mean =950std = 50nor = scipy.stats.norm(mean,std)nor<scipy.stats._distn_infrastructure.rv_frozen at 0xc237588>#繪製正態分布密度分布x = np.arange(700,1200,1)y = nor.pdf(x)plt.plot(x, y)plt.show()

#繪製正態分布的累計密度分布x = np.arange(700,1200,1)y=nor.cdf(x)plt.plot(x,y)plt.show()

知道概率求置信區間,分三種情況

1.計算小於1000出現的概率

# 繪製PDF曲線x=np.arange(700,1200,1)y= nor.pdf(x)plt.plot(x, y)#在1000處繪製豎線plt.vlines(1000, 0, nor.pdf(1000))#填充顏色x2 =np.arange(700, 1000, 1)y2 =nor.pdf(x2)plt.fill_between(x2,y2, color = cyan,alpha =0.1)#設置X軸範圍plt.ylim(0, 0.0085)plt.show()

nor.cdf(1000)0.84134474606854293

計算大於1000的概率:

x = np.arange(700,1200, 1)y =nor.pdf(x)plt.plot(x,y)plt.vlines(1000, 0,nor.pdf(1000))x2 = np.arange(1000,1200,1)y2 = nor.pdf(x2)plt.fill_between(x2, y2, color =cyan,alpha =0.1)plt.ylim(0, 0.0085)plt.show()

1 - nor.cdf(1000)0.15865525393145707nor.sf(1000)0.15865525393145707

計算落在950至1050範圍的概率

x = np.arange(700,1200, 1)y =nor.pdf(x)plt.plot(x,y)plt.vlines(950, 0,nor.pdf(950))plt.vlines(1050, 0,nor.pdf(1050))x2 = np.arange(950,1050,1)y2 = nor.pdf(x2)plt.fill_between(x2, y2, color =cyan,alpha =0.1)plt.ylim(0, 0.0085)plt.show()

nor.cdf(1050) - nor.cdf(950)0.47724986805182079#知道概率值,求X#x小於某個值的概率為0.8413447460685429nor.ppf(0.8413447460685429)1000.0nor.isf(1-0.8413447460685429)1000.0

2. t分布

生成t分布

#為了便於比比較標準正態分布與T分布的區別,也生成了正態分布standard_norm = scipy.stats.norm #生成正態分布t_dist = scipy.stats.t #生成T分布

生成t分布概率密度分布

x = np.arange(-4, 4,0.01)plt.plot(x, standard_norm.pdf(x), label=standard_norm)plt.plot(x, t_dist.pdf(x, df=1),label=t_disterbution)plt.legend()plt.show()

#繪製累計密度分布x=np.arange(-4, 4, 0.01)y=t_dist.cdf(x, df=1)plt.plot(x, y)plt.show()

總結:1、概率分布=隨機變數+概率+分布(在統計圖中的形狀)

2、需要熟練使用科學計算包SCIPY中stats模塊常用指令,pdf,cdf,ppf,sf,isf的具體應 用。其中cdf的反函數是ppf,用於知道區間求概率。sf的反函數是isf,用於知道概率求區間。


推薦閱讀:

表徵與反表徵——兼論美國華裔文學的表徵實踐
香江廿年|香港特區基本法20年實踐: 大浪淘沙,始見真金
【實踐案例】平崗龍系列之「飛雁投湖」(靈珠子 )
秋英多傑仁波切:正法實踐論(連載二十六)
我在金文書法實踐中的體會 趙洪富

TAG:實踐 |