前言

正态分布是最常见的一种的概率分布,最早由棣莫弗(Abraham de Moivre)于1733年求二项分布的渐近公式中得到,后由德国数学家Gauss率先将其应用于天文学研究,也称为高斯分布,研究表明,自然界、人类社会中大量现象均按正态形式分布,正态分布非常常见,因此,正态分布也叫常态分布现象,这一次,我们先简单认识一下正态分布,然后重点研究正态分布的图形。

正态分布

若随机变量(X)服从一个数学期望为 μ \mu μ 、方差为 σ 2 \sigma^2 σ2的概率分布,其概率密度函数为

f ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 f(x) = \frac{1}{\sqrt {2\pi}\sigma} e^{-\frac{(x-\mu)^2}{2\sigma^2}} f(x)=2π σ1e2σ2(xμ)2

则称其分布服从正态分布,记作 X ∼ N ( μ , σ 2 ) X\sim N(\mu, \sigma^2) XN(μ,σ2),特别的,当 μ = 0 , σ 2 = 1 \mu =0, \sigma^2 = 1 μ=0,σ2=1时,称为标准正态分布。

正态分布图形

正态分布曲线中间高,两头低,左右对称,呈钟形,因此人们也经常称正态分布曲线为钟形曲线。由正态分布函数表达式来看,主要由两个参数 μ , σ \mu,\sigma μσ决定,其中,数学期望为 μ \mu μ 决定了其水平位置,其标准差 σ \sigma σ决定了其分布的高低胖瘦,下面我们以标准正态分布为例重点来研究一下正态分布图像,采取循序渐进的方式,首先,看一下静态的正态分布图形。

import numpy as np
import matplotlib.pyplot as plt
import math

mu = 0  # 均值μ
sigma = 1  # 标准差σ

x = np.linspace(-2, 2, 50)
y = np.exp(-(x - mu) ** 2 / (2 * sigma ** 2)) / (math.sqrt(2 * math.pi) * sigma)

plt.figure(figsize = (6,4))
plt.plot(x, y, "r-", linewidth=2, label = r'$f(x) = \frac{1}{\sqrt {2\pi}\sigma} e^{-\frac{(x-\mu)^2}{2\sigma^2}}$')
plt.grid(True)
plt.legend(loc = 'best')
plt.show()

预览效果如下

数学工程学|正态分布及其图形-LMLPHP
接着,通过调节参数 μ \mu μ 来移动正态分布曲线

fig = plt.figure(figsize=(16, 9)) #新建画布模板

def  chartFunc(i = int): #定义曲线图
    colormap = cm.rainbow(np.linspace(0, 1, 10))
    sigma = 1  # 标准差σ
    myx = np.linspace(-10, 10, 1000, endpoint = True) #横坐标范围
    myy = np.exp(-(myx - i) ** 2 / (2 * sigma ** 2)) / (math.sqrt(2 * math.pi) * sigma) #纵坐标
    plt.plot(myx, myy, linewidth = 2.0, color = colormap[i], label = "{}".format(str(i))) #
    plt.text(x=i-0.2, y = 0.41, s= r"$\mu ={}$".format(i), fontsize = 9)
    plt.grid(True)
    
animator = animation.FuncAnimation(fig, chartFunc, frames = np.arange(-5, 6, step=1),  interval = 1000, repeat = True) #渲染动图
animator.save(r"D:\guassian_distribution.gif", writer="pillow") #保存为gif动图

效果图如下

数学工程学|正态分布及其图形-LMLPHP
从上图可以看到随着参数 μ \mu μ的逐渐增大,正态曲线图的对称轴从左往右边移动,形态未发生变化,只是位置发生了变化。

然后,通过调节参数 σ \sigma σ 来控制正态分布曲线形态

fig = plt.figure(figsize=(16, 9)) #新建画布模板

def  chartFunc(i = int): #定义曲线图
    colormap = cm.rainbow(np.linspace(0, 1, 10))
    mu = 0
    myx = np.linspace(-10, 10, 1000, endpoint = True) #横坐标范围
    myy = np.exp(-(myx - mu) ** 2 / (2 * i ** 2)) / (math.sqrt(2 * math.pi) *i) #纵坐标
    plt.plot(myx, myy, linewidth = 2.0, color = colormap[i],label = "$\sigma ={}$".format(str(i))) #, 
#     plt.text(x=10, y=i/10, s= r"$\sigma ={}$".format(i), fontsize = 13)
    plt.legend()
    plt.grid(True)

animator = animation.FuncAnimation(fig, chartFunc, frames = np.arange(1, 10, step=1),  interval = 500, repeat = True) #渲染动图
animator.save(r"D:\guassian_distribution.gif", writer="pillow") #保存为gif动图

效果图如下
数学工程学|正态分布及其图形-LMLPHP
从上图可以看到随着参数 σ \sigma σ的逐渐增大,正态曲线形态从高高瘦瘦的珠穆朗玛峰变成了心宽体胖的小土坡。

参考文献

1,https://baike.baidu.com/item/正态分布/829892?fr=aladdin

11-16 08:02