快捷搜索:  汽车  科技

python 计算正态分布:统计学的Python实现-017

python 计算正态分布:统计学的Python实现-017import 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_distributi

统计学解释

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

python 计算正态分布:统计学的Python实现-017(1)

标准正态分布曲线

其概率密度公式为:

python 计算正态分布:统计学的Python实现-017(2)

当μ=0,σ=1时称随机变量X服从标准正态分布,其概率密度为:

python 计算正态分布:统计学的Python实现-017(3)

标准正态分布的概率即为该标准正态分布的概率密度的积分,也就是标准正态分布的分布函数的值。标准正态分布的分布函数如下:

python 计算正态分布:统计学的Python实现-017(4)

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

因为在计算机中我们不方便直接从-∞开始切分为小矩形,所以对于x>0的情况,我们利用Φ(0)=0.5将Φ(x)转化为在区间(0 X)上的积分,再加上Φ(0)的0.5;对于x<0的情况,我们利用公式:

python 计算正态分布:统计学的Python实现-017(5)

进行处理,将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


作者:长行

猜您喜欢: