统计学的Python实现-019:任意正态分布计算概率

作者:长行

时间:2019.03.21

统计学解释

上次我们介绍了标准正态分布概率计算的方法,现在我们来计算任意正态分布的概率计算方法。

首先需要将正态分布通过线性变换将它转化为标准正态分布,其变换公式如下:
Z=Xμσ Z=\frac{X-\mu}{\sigma}
其中μ\mu为正态分布的均值,σ\sigma为标准差;其结果服从于均值为0,标准差为1的标准正态分布。

实现代码

1.引入计算标准正态分布累积概率的代码

import math
def st_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_st_normal_distribution(x):
    return math.exp((-(x)**2)/2)/(math.sqrt(2*math.pi))

此函数计算了随机变取量小于函数参数x的概率。

2.利用公式将任意正态分布转化为标准正态分布

def normal_distribution(x,u,s):
    z=(x-u)/s
    return st_normal_distribution(s)
normal_distribution(7.1,5,2)

结果:

0.9772498679618343

其中u为任意正态分布的均值,s为标准差;此函数计算了任意正态分布随机变量取小于函数参数x的概率。

实际应用

正态分布在统计学中的应用非常广泛。无论随机变量本身是如何分布的,只要是大量的服从相同分布的随机变量之和,那这个和就近似服从正态分布(李雅普诺夫定理)。

因此,我们可以将正态分布应用到如下场景的概率计算中:肺活量、智商、考试成绩、态度得分等等。

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