目錄
1. 前言
2. 概率密度函數(shù)(PDF: Probability Density Function)?
3. 累積分布函數(shù)(CDF: Cumulative Distribution Function)
4. 百分點(diǎn)函數(shù)(PPF: Percent Point Function)
5. 生成函數(shù)和風(fēng)險(xiǎn)函數(shù)
6. 常用統(tǒng)計(jì)特征
7. 應(yīng)用示例
7.1 從正態(tài)分布中采樣
7.2 The 68-95-99.7 Rule
8. Why is the normal distribution useful and important?
1. 前言
????????在概率論和統(tǒng)計(jì)的世界里,正態(tài)分布(Normal Distribution),通常也稱為高斯分布(Gaussian Distribution), 是最重要的連續(xù)概率分布. 有時(shí)候也稱為鐘形分布,因?yàn)樗母怕拭芏群瘮?shù)(pdf)曲線呈鐘形曲線(bell curve)的形狀。由于大數(shù)定律的作用,高斯分布在現(xiàn)實(shí)世界中處處可見。進(jìn)一步,它也可以用于對于其它概率分布的近似表示。所以高斯分布是最常用、最基本、最重要的概率分布(可能不需要之一)。
????????遵循正態(tài)分布的一維隨機(jī)變量記為:
????????????????
????????或者?
????????????????
????????其中表示均值(mean),表示方差(variance),則稱為標(biāo)準(zhǔn)偏差(standard deviation).
????????
????????為了后面的代碼示例,首先導(dǎo)入必要的庫。
import random
import numpy as np
from scipy.stats import norm
%matplotlib inline
import matplotlib.pyplot as plt
2. 概率密度函數(shù)(PDF: Probability Density Function)?
????????與離散隨機(jī)變量用概率質(zhì)量函數(shù)(PMF)或分布律來表示不同,連續(xù)隨機(jī)變量的概率分布特性用概率密度函數(shù)(PDF: Probability Density Function)來刻畫。 一維高斯分布的概率密度函數(shù)(PMF中通常用大寫字母P,而概率密度函數(shù)則通常用小寫的p或f)如下式所示:
????????正態(tài)分布的概率密度函數(shù)為:
????????其中表示均值(mean),表示方差(variance),則稱為標(biāo)準(zhǔn)偏差(standard deviation).
????????其中均值為0方差為1的正態(tài)分布稱為標(biāo)準(zhǔn)正態(tài)分布。
????????正態(tài)分布的概率密度函數(shù)如下圖所示,用scipy.stats中norm類的pdf(x, loc=0, scale=1)函數(shù)生成。 缺省參數(shù)條件下,norm.pdf()生成標(biāo)準(zhǔn)正態(tài)分布的概率密度函數(shù)。loc參數(shù)用于指定??, scale參數(shù)用于指定??。
????????scipy.stats還提供了logpdf()用于繪制對數(shù)概率密度函數(shù),其調(diào)用方法與pdf()相同。
fig, ax = plt.subplots(1,1,figsize=(8,4))
x = np.linspace(norm.ppf(0.01),norm.ppf(0.99), 200)
ax.plot(x, norm.pdf(x),'r-', lw=2, alpha=0.6, label='scale = 1, loc = 0')
ax.plot(x, norm.pdf(x,scale=0.25),'k-', lw=2, alpha=0.6, label='scale = 0.25, loc = 0')
ax.plot(x, norm.pdf(x,scale=0.49),'g-', lw=2, alpha=0.6, label='scale = 0.49, loc = 0')
ax.plot(x, norm.pdf(x,scale=0.09),'b-', lw=2, alpha=0.6, label='scale = 0.09, loc = 0')
ax.plot(x, norm.pdf(x,loc = 1, scale=0.16),'y-', lw=2, alpha=0.6, label='scale = 0.16, loc = 1')
ax.set_title('norm pdf')
ax.grid()
ax.legend()
3. 累積分布函數(shù)(CDF: Cumulative Distribution Function)
????????標(biāo)準(zhǔn)正態(tài)分布的累積分布函數(shù)如下所示:
????????但是這個(gè)積分沒有簡單的閉式解(closed formula),需要以數(shù)值計(jì)算的方式進(jìn)行求解。
????????正態(tài)分布的概率密度函數(shù)如下圖所示,用scipy.stats中norm類的pdf(x, loc=0, scale=1)函數(shù)生成。 缺省參數(shù)條件下,norm.pdf()生成標(biāo)準(zhǔn)正態(tài)分布的概率密度函數(shù)。loc參數(shù)用于指定??, scale參數(shù)用于指定??。
????????scipy.stats提供了cdf()用于繪制累積分布函數(shù),其調(diào)用參數(shù)與pdf()相同。 如下為正態(tài)分布的累積分布函數(shù)曲線繪制代碼及運(yùn)行結(jié)果。注意,正態(tài)分布的累積分布函數(shù)有兩個(gè)特征:
????????(1) 在均值點(diǎn)處到達(dá)0.5. 這是因?yàn)檎龖B(tài)分布是以均值點(diǎn)處左右對稱的
????????(2) 方差越小,意味著在均值點(diǎn)左右的斜率越大
fig, ax = plt.subplots(1,1,figsize=(8,4))
x = np.linspace(norm.ppf(0.01),norm.ppf(0.99), 200)
ax.plot(x, norm.cdf(x),'r-', lw=2, alpha=0.6, label='scale = 1, loc = 0')
ax.plot(x, norm.cdf(x,scale=0.25),'y-', lw=2, alpha=0.6, label='scale = 0.25, loc = 0')
ax.plot(x, norm.cdf(x,scale=0.49),'b-', lw=2, alpha=0.6, label='scale = 0.49, loc = 0')
ax.plot(x, norm.cdf(x,scale=0.09),'g-', lw=2, alpha=0.6, label='scale = 0.09, loc = 0')
ax.plot(x, norm.cdf(x,loc = 1, scale=0.16),'k-', lw=2, alpha=0.6, label='scale = 0.16, loc = 1')
ax.set_title('norm cdf')
ax.grid()
ax.legend()
?
4. 百分點(diǎn)函數(shù)(PPF: Percent Point Function)
????????百分點(diǎn)函數(shù)PPF是CDF的反函數(shù):?
????????它回答了“為了得到一定的累積分布概率,CDF相應(yīng)的輸入值是什么”的問題。
????????與累積分布函數(shù)相同的是,正態(tài)分布的百分點(diǎn)函數(shù)同樣沒有閉式表達(dá)形式,只能通過數(shù)值方式求解。
????????scipy.stats提供了ppf(q, loc=0, scale=1)用于求解百分點(diǎn)值。參數(shù)loc和scale含義同上,參數(shù)q在這里指定所希望得到的累積概率。
????????事實(shí)上在上面的示例中,我們已經(jīng)用到了ppf函數(shù),通過以下語句將橫坐標(biāo)(x)取值范圍限制到累積分布概率為0.01到0.99之間。
????????x = np.linspace(norm.ppf(0.01),norm.ppf(0.99), 200)
? ? ? ? 以下代碼段繪制了不同參數(shù)設(shè)定條件下的ppf圖。
fig, ax = plt.subplots(1,1,figsize=(8,4))
q = np.linspace(0,1, 200)
ax.plot(q, norm.ppf(q),'r-', lw=2, alpha=0.6, label='scale = 1, loc = 0')
ax.plot(q, norm.ppf(q,scale=0.25),'k-', lw=2, alpha=0.6, label='scale = 0.25, loc = 0')
ax.plot(q, norm.ppf(q,scale=0.49),'g-', lw=2, alpha=0.6, label='scale = 0.49, loc = 0')
ax.plot(q, norm.ppf(q,scale=0.09),'b-', lw=2, alpha=0.6, label='scale = 0.09, loc = 0')
ax.plot(q, norm.ppf(q,loc = 1, scale=0.16),'y-', lw=2, alpha=0.6, label='scale = 0.16, loc = 1')
ax.set_title('norm ppf')
ax.grid()
ax.legend()
5. 生成函數(shù)和風(fēng)險(xiǎn)函數(shù)
????????生存函數(shù)(Survial Function)定義為:??(??)=????[??>??]=1???(??)
????????S(x)通常用于可靠性分析及其相關(guān)領(lǐng)域。
????????風(fēng)險(xiǎn)函數(shù)為概率密度函數(shù)與生存函數(shù)之比:? ??(??)=??(??)/??(??)=??(??)/(1???(??))
????????由于它們都是基于累積分布函數(shù)定義的,自然都沒有閉式表達(dá)形式,只能通過數(shù)值方式求解。
????????scipy.stats提供了sf(q, loc=0, scale=1)用于求解生存函數(shù)。參數(shù)loc和scale含義同上。 風(fēng)險(xiǎn)函數(shù)則可以基于以上定義計(jì)算而得。
fig, ax = plt.subplots(1,1,figsize=(8,4))
x = np.linspace(norm.ppf(0.01),norm.ppf(0.99), 200)
ax.plot(x, norm.cdf(x),'r-', lw=2, alpha=0.6, label='cdf')
ax.plot(x, norm.sf(x),'g-', lw=2, alpha=0.6, label='survival function')
ax.plot(x, norm.pdf(x)/norm.sf(x),'y-', lw=2, alpha=0.6, label='hazard function')
#ax.plot(x, norm.cdf(x,scale=0.25),'y-', lw=2, alpha=0.6, label='scale = 0.25, loc = 0')
#ax.plot(x, norm.cdf(x,scale=0.49),'b-', lw=2, alpha=0.6, label='scale = 0.49, loc = 0')
#ax.plot(x, norm.cdf(x,scale=0.09),'g-', lw=2, alpha=0.6, label='scale = 0.09, loc = 0')
#ax.plot(x, norm.cdf(x,loc = 1, scale=0.16),'k-', lw=2, alpha=0.6, label='scale = 0.16, loc = 1')
ax.set_title('norm: sf, hf vs cdf')
ax.grid()
ax.legend()
????????與生存函數(shù)、風(fēng)險(xiǎn)函數(shù)相關(guān)聯(lián)的常用概率函數(shù)還有累積風(fēng)險(xiǎn)函數(shù)(cumulative hazard function),逆生存函數(shù)(inverse survival function), 這里就不一一說明了。
6. 常用統(tǒng)計(jì)特征
????????正態(tài)分布由于是基于它的均值和方差進(jìn)行定義的,所以它的常用統(tǒng)計(jì)特征非常簡單明了,對于??~??(??,??^2):
??????????[??]=??
??????????????[??]=??^2
????????此外,正態(tài)分布的中位數(shù)(median)和眾數(shù)(mode)都等于??. 正態(tài)分布的取值范圍為(?∞,∞)(?∞,∞)
????????
????????
????????正態(tài)分布由于是對稱的,所以它的Skew為0是,因?yàn)镾kew就是用于評估偏度的,對稱函數(shù)的偏度自然為0。
????????正態(tài)分布的峰度(Kurtosis)為0,事實(shí)上,這個(gè)是一個(gè)定義的問題。以上是scipy.stats中計(jì)算峰度的公式(也有不減3的),之所以減3就是將正態(tài)分布當(dāng)作一個(gè)基準(zhǔn),-3是要使得正態(tài)分布的峰度為0.
????????用scipy.stats提供的函數(shù)計(jì)算正態(tài)分布的以上幾個(gè)統(tǒng)計(jì)特征的示例如下:
mean, var, skew, kurt = norm.stats(moments='mvsk')
print('Normal Distribution: \nmean = {0}\nvar = {1}\nskew = {2}\nkurt = {3}\n'.format(mean, var, skew, kurt))
?Output:
Normal Distribution: mean = 0.0 var = 1.0 skew = 0.0 kurt = 0.0
7. 應(yīng)用示例
7.1 從正態(tài)分布中采樣
r = norm.rvs(0, size=100000)
fig,ax=plt.subplots(1,1)
ax.hist(r, bins='auto', density=True) # arguments are passed to np.histogram
x = np.linspace(np.min(r),np.max(r),100)
ax.plot(x, norm.pdf(x),'r-', lw=2, alpha=0.6, label='scale = 1, loc = 0')
ax.set_title("Histogram with 'auto' bins")
ax.grid()
print('sample means of r = {0}'.format(np.mean(r)))
print('sample variance of r = {0}'.format(np.var(r)))
????????以上示例是從標(biāo)準(zhǔn)正態(tài)分布中采樣10000個(gè)樣點(diǎn)。從直方圖可以看出基本上符合鐘形曲線的特征(其輪廓也與pdf理論曲線非常吻合),樣本均值和樣本方差也基本上符合預(yù)期。?
7.2 The 68-95-99.7 Rule
????????對于正態(tài)分布,以均值點(diǎn)為中心的[-\sigma, \sigma]區(qū)間的面積大概為68%,這意味著在正態(tài)分布總體中68%的樣本落在均值加減1個(gè)標(biāo)準(zhǔn)偏差范圍內(nèi)。同理,正態(tài)分布總體中95%的樣本落在均值加減2個(gè)標(biāo)準(zhǔn)偏差范圍內(nèi),正態(tài)分布總體中99.7%的樣本落在均值加減3個(gè)標(biāo)準(zhǔn)偏差范圍內(nèi)。如下圖所示:
????????可以利用以下代碼計(jì)算出任意范圍內(nèi)的總概率。?
for k in range(1,6):
print('prob with [-{0}*sigma, {1}*sigma] = {2}'.format(k,k,norm.cdf(k) - norm.cdf(-k)))
prob with [-1*sigma, 1*sigma] = 0.6826894921370859 prob with [-2*sigma, 2*sigma] = 0.9544997361036416 prob with [-3*sigma, 3*sigma] = 0.9973002039367398 prob with [-4*sigma, 4*sigma] = 0.9999366575163338 prob with [-5*sigma, 5*sigma] = 0.9999994266968562
8. Why is the normal distribution useful and important?
????????不管是從理論的角度還是從使用的角度來說,正態(tài)分布都可以說是概率統(tǒng)計(jì)中最重要的分布。
????????(1) 許多經(jīng)典的統(tǒng)計(jì)測試都是基于正態(tài)分布假設(shè)。在對數(shù)據(jù)進(jìn)行這些統(tǒng)計(jì)測試時(shí),需要首先確認(rèn)數(shù)據(jù)是否符合正態(tài)分布。
????????(2) 在建模應(yīng)用中,比如說線性或非線性回歸,誤差項(xiàng)通常都被假定遵循正態(tài)分布。
????????(3) 正態(tài)分布也被用于在需要假設(shè)檢驗(yàn)以及置信區(qū)間檢驗(yàn)中確定顯著性水平。
????????(4) 現(xiàn)實(shí)世界中許許多多的事物或現(xiàn)象都是呈正態(tài)分布或者近似于正態(tài)分布的。比如說,正常人的身高的分布,智商的分布都是近似于正態(tài)分布的。測量誤差也通常是呈正態(tài)分布。
????????(5) 正態(tài)分布非常方便于數(shù)學(xué)處理。在許多實(shí)際應(yīng)用中,基于正態(tài)分布理論所開發(fā)的應(yīng)用方法都工作得非常好,即便在處理對象并不是正態(tài)分布時(shí)。
????????(6) 大數(shù)定律和中心極限定理從理論上證明了為什么正態(tài)分布為什么如此常見以及為什么如此有用。根據(jù)中心極限定理,不管原始的總體分布是什么,獨(dú)立同分布的N個(gè)隨機(jī)變量的平均會隨著N的增大而逼近正態(tài)分布。第(4)點(diǎn)其實(shí)也可以看作是大數(shù)定律和中心極限定理的作用在現(xiàn)實(shí)世界的一個(gè)具體體現(xiàn)。
????????The central limit theorem basically states that as the sample size (N) becomes large, the following occur:?The sampling distribution of the mean becomes approximately normal regardless of the distribution of the original variable. The sampling distribution of the mean is centered at the population mean, μ, of the original variable. In addition, the standard deviation of the sampling distribution of the mean approaches???/??.
? ? ? ? 本系列計(jì)劃目錄:
? ? ? ? (1) 均勻分布? ? ? ?基于python/scipy學(xué)習(xí)概率統(tǒng)計(jì)(1):均勻分布(Uniform Distribution)_chenxy_bwave的專欄-CSDN博客
? ? ? ? (2) 伯努利分布: ?基于python/scipy學(xué)習(xí)概率統(tǒng)計(jì)(2):伯努利分布(Bernoulli Distribution)_chenxy_bwave的專欄-CSDN博客_伯努利分布的概率分布函數(shù)
? ? ? ? (3) 正態(tài)分布:? ? ? 基于python/scipy學(xué)習(xí)概率統(tǒng)計(jì)(3):正態(tài)分布_chenxy_bwave的專欄-CSDN博客
? ? ? ? (4) 二項(xiàng)分布
? ? ? ? (5) Student-T分布
? ? ? ? (6) Chi-Square分布
? ? ? ? (7) Rayleigh/Rice分布
? ? ? ? (8) Beta分布
? ? ? ? (9) Gamma分布
? ? ? ? (10) 玻爾茲曼分布
? ? ? ? (11) 指數(shù)分布
? ? ? ? (12) dirichlet分布
? ? ? ? ......
?
Reference:
[1]?1.3.6.6.1. Normal Distribution文章來源:http://www.zghlxwxcb.cn/news/detail-405140.html
[2]?scipy.stats.norm — SciPy v1.7.1 Manual文章來源地址http://www.zghlxwxcb.cn/news/detail-405140.html
到了這里,關(guān)于基于python/scipy學(xué)習(xí)概率統(tǒng)計(jì)(3):正態(tài)分布的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!