统计学的Python实现-017:标准正态分布
程序员文章站
2022-07-11 14:59:05
...
作者:长行
时间:2019.03.15
统计学解释
正态分布:正态分布(normal distribution),又称高斯分布;其概率密度(正态分布曲线)呈钟型,两头低,中间高,左右对称。分布如图:
(图片参见同名word文件)
其概率密度公式为:
其中为标准差,为均值。
当,时称随机变量X服从标准正态分布,其概率密度为:
标准正态分布的概率即为φ(x)的标准正态分布的概率密度的积分,也就是标准正态分布的分布函数的值。标准正态分布的分布函数如下:
实现思路
因为标准正态分布的概率密度为超越函数(不可积积分),因此我们通过将被函数包围的面积切分为大量矩阵来计算它的积分。
因为在计算机中我们不方便直接从-∞开始切分为小矩形,所以对于x>0的情况,我们利用将转化为在区间(0,X)上的积分,再加上的0.5;对于x<0的情况,我们利用公式:
进行处理,将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
上一篇: Python统计学一数据的概括性度量
下一篇: 从“前端”到“后端”的概括性认识