正态分布(Normal Distribution)和标准正态分布(均值为0,方差为1)

正态分布

正态分布(Normal Distribution),又称为 高斯分布(Gaussian Distribution) ,是一种在统计学和概率论中最重要的连续概率分布。它广泛应用于自然科学、社会科学、工程、金融等领域。

作用

它精准描述了自然界、社会科学和工程领域中大量随机现象的分布规律 —— 即 数据倾向于围绕某个中心值(均值)对称分布,离中心越远,数据出现的概率越低,呈现出 “中间多、两头少” 的特征。

核心特征:“钟形曲线”

正态分布的直观表现是一条对称的钟形曲线,这条曲线由其概率密度函数(PDF) 定义,是理解其本质的关键。

典型图形示意(一维正态分布)

下图是一个均值为 μ、标准差为 σ 的正态分布曲线,核心特征已标注:

  • 对称性:曲线以均值 μ 为中心,左右完全对称。
  • 单峰性:曲线只有一个最高点(峰值),恰好位于均值处。
  • 渐进性:曲线向左右两端逐渐趋近于横轴,但永远不会与横轴相交(理论上极端值有极小概率出现)。

正态分布的概率密度函数

其中:

  • x:随机变量,表示数据点
  • μ:均值(mean),即数据的中心
  • σ:标准差,standard deviation
  • σ²:方差

参数解释-均值 μ

  • 决定正态分布的中心位置。
  • 直观来说,它表示数据的平均值,即数据的集中趋势。
  • 若 μ 变大,整个分布会向右平移;若 μ 变小,分布会向左平移。

实现图像代码:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

# 设置中文字体(避免中文标签乱码)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 黑体
plt.rcParams['axes.unicode_minus'] = False    # 正常显示负号

# 1. 生成x轴数据(范围覆盖-6到6,足够展示三个分布)
x = np.linspace(-6, 6, 1000)

# 2. 固定标准差σ=1,定义三个不同的均值
sigma = 1
mus = [-2, 0, 2]
colors = ['#FF6B6B', '#4ECDC4', '#45B7D1']  # 红、青、蓝(区分度高)
labels = [f'μ=-2, σ={sigma}', f'μ=0, σ={sigma}', f'μ=2, σ={sigma}']

# 3. 创建画布并绘制三条正态分布曲线
plt.figure(figsize=(10, 6))
for mu, color, label in zip(mus, colors, labels):
    # 计算对应均值的正态分布概率密度
    y = norm.pdf(x, loc=mu, scale=sigma)
    # 绘制曲线,添加标签和颜色
    plt.plot(x, y, color=color, linewidth=2.5, label=label)

# 4. 图表美化与标注
plt.title('不同均值(μ)的正态分布对比(σ=1固定)', fontsize=14, pad=20)
plt.xlabel('X 值', fontsize=12)
plt.ylabel('概率密度 f(x)', fontsize=12)
plt.grid(True, alpha=0.3)  # 网格线(透明度0.3,不干扰曲线)
plt.legend(loc='upper right', fontsize=11)  # 图例位置
plt.ylim(0, 0.45)  # 固定y轴范围,更易对比

# 5. 保存图片(可选,保存为高清PNG)
plt.savefig('normal_distribution_mu_comparison.png', dpi=300, bbox_inches='tight')

# 6. 显示图片
plt.show()

参数解释-标准差 σ

控制曲线的 “胖瘦”(即数据的离散程度)。

  • σ 越小,数据越集中在均值附近,曲线越 “高瘦”;
  • σ 越大,数据越分散,曲线越 “矮胖”

实现图像代码:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

# 设置中文字体(避免中文标签乱码)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 黑体,无则替换为 'Microsoft YaHei'
plt.rcParams['axes.unicode_minus'] = False    # 正常显示负号

# 1. 生成x轴数据(范围覆盖-10到10,适配大σ的分布)
x = np.linspace(-10, 10, 1000)

# 2. 固定均值μ=0,定义3个不同的标准差σ(体现梯度变化)
mu = 0
sigmas = [0.5, 1, 3]  # σ从小到大:0.5(高瘦)、1(中等)、3(矮胖)
colors = ['#E74C3C', '#3498DB', '#2ECC71']  # 红、蓝、绿(区分度高)
labels = [f'σ={s}(高瘦,数据集中)' for s in sigmas]
# 手动调整第三个标签更贴合特点
labels[-1] = f'σ={sigmas[-1]}(矮胖,数据分散)'

# 3. 创建画布并绘制三条正态分布曲线
plt.figure(figsize=(12, 7))
for sigma, color, label in zip(sigmas, colors, labels):
    # 计算对应σ的正态分布概率密度
    y = norm.pdf(x, loc=mu, scale=sigma)
    # 绘制曲线,加粗线条便于区分
    plt.plot(x, y, color=color, linewidth=3, label=label)

# 4. 图表美化与标注(增强可读性)
plt.title('固定均值μ=0,不同标准差σ的正态分布对比', fontsize=16, pad=20)
plt.xlabel('X 值', fontsize=13)
plt.ylabel('概率密度 f(x)', fontsize=13)
plt.grid(True, alpha=0.2)  # 浅网格线不干扰曲线
plt.legend(loc='upper right', fontsize=12)
plt.ylim(0, 0.9)  # 固定y轴范围,更易对比曲线高度
plt.xlim(-10, 10) # 固定x轴范围,展示大σ的分散效果

# 5. 保存高清图片(可选,保存在代码运行目录)
plt.savefig('normal_distribution_sigma_comparison.png', dpi=300, bbox_inches='tight')

# 6. 显示图片
plt.show()

标准正态分布

当均值 μ=0、标准差 σ=1 时,正态分布被称为 标准正态分布,其公式简化为:

图像

实现图像的代码:


import numpy as np
import matplotlib.pyplot as plt

# 设置中文字体,避免图表中文乱码(可选)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 1. 生成均值为0、方差为1的标准正态分布数据
# size=10000 表示生成10000个数据点,数量越多分布越接近标准正态
data = np.random.normal(loc=0, scale=1, size=10000)

# 2. 验证生成数据的均值和方差(可选,用于确认数据符合要求)
mean = np.mean(data)
variance = np.var(data)
print(f"生成数据的均值:{mean:.4f}")
print(f"生成数据的方差:{variance:.4f}")

# 3. 绘制可视化图像
fig, ax = plt.subplots(figsize=(10, 6))

# 绘制直方图:bins=50 表示分50个区间,density=True 表示归一化(面积和为1)
ax.hist(data, bins=50, density=True, alpha=0.7, color='skyblue', label='数据分布直方图')

# 绘制核密度曲线(拟合分布趋势)
from scipy import stats
kernel = stats.gaussian_kde(data)
x_range = np.linspace(min(data), max(data), 1000)
ax.plot(x_range, kernel(x_range), color='red', linewidth=2, label='核密度拟合曲线')

# 绘制均值线(0)和方差参考线(±1)
ax.axvline(x=0, color='green', linestyle='--', linewidth=2, label='均值(0)')
ax.axvline(x=1, color='orange', linestyle=':', linewidth=1.5, label='方差边界(+1)')
ax.axvline(x=-1, color='orange', linestyle=':', linewidth=1.5, label='方差边界(-1)')

# 设置图表标题和标签
ax.set_title('均值为0、方差为1的标准正态分布数据可视化', fontsize=14)
ax.set_xlabel('数值', fontsize=12)
ax.set_ylabel('概率密度', fontsize=12)
ax.legend()
ax.grid(alpha=0.3)

# 显示图像
plt.show()

一般正态分布 转 标准正态分布

它是所有正态分布的 “基准”—— 任何一般正态分布的数据,都可通过 标准化变换,如下公式:

转化为 标准正态分布,进而通过查表或工具快速计算概率。

这个转换是线性的,能保持分布的“钟形”特性,同时将数据转换到以0为中心、标准差为1的尺度上。

为什么重要?

  • 简化计算:标准正态分布的概率密度函数和累积分布函数有标准形式,便于查表或编程计算。
  • 统一比较:不同正态分布的数据转换后,可以直接比较。
  • 理论基础:许多统计推断方法(如假设检验、置信区间)都基于标准正态分布。

实际应用

在数据分析中,我们经常将原始数据标准化,以便使用标准正态分布的性质进行推断。


原文出处:/show_1GW2e16T3HEL.html