統計學的Python實現-017:標準正態分佈

作者:長行

時間:2019.03.15

統計學解釋

正態分佈:正態分佈(normal distribution),又稱高斯分佈;其概率密度(正態分佈曲線)呈鍾型,兩頭低,中間高,左右對稱。分佈如圖:

(圖片參見同名word文件)

其概率密度公式爲:
ϕ(x)=12πσe(Xμ)22σ2 \phi(x)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(X-\mu)^2}{2\sigma^2}}
其中σ\sigma爲標準差,μ\mu爲均值。

μ=0\mu=0σ=1\sigma=1時稱隨機變量X服從標準正態分佈,其概率密度爲:
ϕ(x)=12πex22 \phi(x)=\frac{1}{\sqrt{2\pi}}e^{-\frac{x^2}{2}}
標準正態分佈的概率即爲φ(x)的標準正態分佈的概率密度的積分,也就是標準正態分佈的分佈函數的值。標準正態分佈的分佈函數如下:
ϕ(x)=12πxet22dt \phi(x)=\frac{1}{\sqrt{2\pi}}\int^{x}_{-∞}{e^{-\frac{t^2}{2}}dt}

實現思路

因爲標準正態分佈的概率密度爲超越函數(不可積積分),因此我們通過將被函數包圍的面積切分爲大量矩陣來計算它的積分。

因爲在計算機中我們不方便直接從-∞開始切分爲小矩形,所以對於x>0的情況,我們利用ϕ(0)=0.5\phi(0)=0.5ϕ(x)\phi(x)轉化爲在區間(0,X)上的積分,再加上ϕ(0)\phi(0)的0.5;對於x<0的情況,我們利用公式:
ϕ(x)=1ϕ(x) \phi(-x)=1-\phi(x)
進行處理,將x<0的情況轉化爲x>0的情況。

實現代碼

import math
def normal_distribution(x):
    #處理x<0(目標點在分佈中心左側)的情況
    if x<0:
        return 1-normal_distribution(-x)
    if x=0:
        return 0.5
    #求標準正態分佈的概率密度的積分
    s=1/10000
    xk=[]
    for i in range(1,x*10000):
        xk.append(i*s)
    integral=(fx_normal_distribution(0)+fx_normal_distribution(x))/2 #f(0)和f(x)各算一半
    for each in xk:
        integral+=fx_normal_distribution(each)
    return 0.5+integral*s

def fx_normal_distribution(x):
    return math.exp((-(x)**2)/2)/(math.sqrt(2*math.pi))

print(normal_distribution(1))

結果

0.8413447458669009
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章