统计学的Python实现-017:标准正态分布

作者:长行

时间:2019.03.15

统计学解释

正态分布:正态分布(normal distribution),又称高斯分布;其概率密度(正态分布曲线)呈钟型,两头低,中间高,左右对称。分布如图:

(图片参见同名word文件)

其概率密度公式为:
ϕ ( x ) = 1 2 π σ e − ( X − μ ) 2 2 σ 2 \phi(x)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(X-\mu)^2}{2\sigma^2}} ϕ(x)=2π σ1e2σ2(Xμ)2
其中 σ \sigma σ为标准差, μ \mu μ为均值。

μ = 0 \mu=0 μ=0 σ = 1 \sigma=1 σ=1时称随机变量X服从标准正态分布,其概率密度为:
ϕ ( x ) = 1 2 π e − x 2 2 \phi(x)=\frac{1}{\sqrt{2\pi}}e^{-\frac{x^2}{2}} ϕ(x)=2π 1e2x2
标准正态分布的概率即为φ(x)的标准正态分布的概率密度的积分,也就是标准正态分布的分布函数的值。标准正态分布的分布函数如下:
ϕ ( x ) = 1 2 π ∫ − ∞ x e − t 2 2 d t \phi(x)=\frac{1}{\sqrt{2\pi}}\int^{x}_{-∞}{e^{-\frac{t^2}{2}}dt} ϕ(x)=2π 1xe2t2dt

实现思路

因为标准正态分布的概率密度为超越函数(不可积积分),因此我们通过将被函数包围的面积切分为大量矩阵来计算它的积分。

因为在计算机中我们不方便直接从-∞开始切分为小矩形,所以对于x>0的情况,我们利用 ϕ ( 0 ) = 0.5 \phi(0)=0.5 ϕ(0)=0.5 ϕ ( x ) \phi(x) ϕ(x)转化为在区间(0,X)上的积分,再加上 ϕ ( 0 ) \phi(0) ϕ(0)的0.5;对于x<0的情况,我们利用公式:
ϕ ( − x ) = 1 − ϕ ( x ) \phi(-x)=1-\phi(x) ϕ(x)=1ϕ(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
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页