当前位置: 首页 > ai >正文

正态分布 - 正态分布的经验法则(68-95-99.7 法则)

正态分布 - 正态分布的经验法则(68-95-99.7 法则)

flyfish

完整代码在文末
在这里插入图片描述

正态分布的经验法则(68-95-99.7 法则)

经验法则(Empirical Rule),也叫 68-95-99.7 法则,就是对正态分布数据的一种简明、直观的描述:

  • 大约 68% 的观测值会落在均值 ±1 个标准差的区间内;
  • 大约 95% 的观测值会落在均值 ±2 个标准差的区间内;
  • 大约 99.7% 的观测值会落在均值 ±3 个标准差的区间内。

这就是人们常说的 “一倍标准差 68%,二倍标准差 95%,三倍标准差几乎全覆盖”

这究竟是一个严格的数学定理,还是仅仅是一个经验总结?

正态分布的数学定义

一个随机变量 XXX 服从均值为 μ\muμ,标准差为 σ\sigmaσ 的正态分布,记作

X∼N(μ,σ2) X \sim N(\mu, \sigma^2) XN(μ,σ2)

它的概率密度函数为:

f(x)=12πσ2exp⁡ ⁣(−(x−μ)22σ2) f(x) = \frac{1}{\sqrt{2 \pi \sigma^2}} \exp\!\left(-\frac{(x-\mu)^2}{2\sigma^2}\right) f(x)=2πσ21exp(2σ2(xμ)2)

其图像呈现对称的钟形曲线,峰值在 μ\muμ,曲线宽窄由 σ\sigmaσ 决定。

由于正态分布没有解析积分表达式(即无法写出分布函数的闭合形式),所以我们往往借助数值积分或标准正态分布表来查找概率。

经验法则的数学推导

所谓 68-95-99.7 法则,其实就是在正态分布中计算以下概率:

  1. P(μ−σ≤X≤μ+σ)P(\mu - \sigma \leq X \leq \mu + \sigma)P(μσXμ+σ)
  2. P(μ−2σ≤X≤μ+2σ)P(\mu - 2\sigma \leq X \leq \mu + 2\sigma)P(μ2σXμ+2σ)
  3. P(μ−3σ≤X≤μ+3σ)P(\mu - 3\sigma \leq X \leq \mu + 3\sigma)P(μ3σXμ+3σ)

通过变量标准化,即设

Z=X−μσ,Z∼N(0,1) Z = \frac{X - \mu}{\sigma}, \quad Z \sim N(0,1) Z=σXμ,ZN(0,1)

这些概率问题就化为标准正态分布 N(0,1)N(0,1)N(0,1) 的积分:

  1. P(−1≤Z≤1)=Φ(1)−Φ(−1)P(-1 \leq Z \leq 1) = \Phi(1) - \Phi(-1)P(1Z1)=Φ(1)Φ(1)
  2. P(−2≤Z≤2)=Φ(2)−Φ(−2)P(-2 \leq Z \leq 2) = \Phi(2) - \Phi(-2)P(2Z2)=Φ(2)Φ(2)
  3. P(−3≤Z≤3)=Φ(3)−Φ(−3)P(-3 \leq Z \leq 3) = \Phi(3) - \Phi(-3)P(3Z3)=Φ(3)Φ(3)

其中 Φ(z)\Phi(z)Φ(z) 是标准正态分布的累积分布函数(CDF)。查表或数值计算可得:

  • Φ(1)≈0.8413\Phi(1) \approx 0.8413Φ(1)0.8413,所以 P(−1≤Z≤1)≈0.6826P(-1 \leq Z \leq 1) \approx 0.6826P(1Z1)0.6826(约 68%)。
  • Φ(2)≈0.9772\Phi(2) \approx 0.9772Φ(2)0.9772,所以 P(−2≤Z≤2)≈0.9544P(-2 \leq Z \leq 2) \approx 0.9544P(2Z2)0.9544(约 95%)。
  • Φ(3)≈0.99865\Phi(3) \approx 0.99865Φ(3)0.99865,所以 P(−3≤Z≤3)≈0.9973P(-3 \leq Z \leq 3) \approx 0.9973P(3Z3)0.9973(约 99.7%)。

这就是经验法则中的 68%、95%、99.7% 的来源。

它是数学定理吗?

严格地说,68-95-99.7 法则并不是一个普适定理,而是正态分布下的数值近似结果

  • 它对 正态分布 来说是严格计算出来的概率值,虽然四舍五入成了“68%、95%、99.7%”,但并非近似经验,而是 精确积分的数值近似
  • 但是,如果数据并非正态分布,而是偏态分布、长尾分布、均匀分布等,那么这个法则就不成立。

所以说:

  • 在正态分布的世界里,这可以视为一个 定量结果(基于积分的事实);
  • 在统计应用中,由于很多数据近似正态分布,人们才把它称作 经验法则

换句话说,它不是像勾股定理那样的数学定理,而是 一个数值上非常好记的近似结果

统计直觉

为什么经验法则如此受欢迎?因为它给了我们一种极其直观的判断方式:

  • 如果一组数据大致服从正态分布,那么大多数(约 2/3)数据点会落在均值 ±1σ 以内,这就是“常态波动范围”。
  • 如果一个点落在 ±2σ 以外,就已经比较少见(大约 5% 的概率)。
  • 如果一个点落在 ±3σ 以外,那几乎可以认为是异常值(outlier)。

这就为很多领域提供了 异常检测、风险判断、质量控制 的工具。例如:

  • 在制造业中,±3σ 管理就是著名的 六西格玛(Six Sigma)质量管理
  • 在金融中,股票收益大多近似正态分布,±2σ 之外的收益率就可以视为“极端风险”。
  • 在教育测量中,智商 IQ 的均值设定为 100,标准差为 15,那么 95% 的人智商都在 70–130 之间。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import normplt.rcParams["font.family"] = ["SimHei", "sans-serif"]
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题
# 参数设置:均值和标准差
mu = 1150
sigma = 150# 生成x值范围:从mu - 4*sigma 到 mu + 4*sigma,以覆盖整个曲线
x = np.linspace(mu - 4*sigma, mu + 4*sigma, 1000)# 计算PDF
pdf = norm.pdf(x, mu, sigma)# 创建 figure 和 axes
fig, ax = plt.subplots(figsize=(12, 6))# 绘制钟形曲线
ax.plot(x, pdf, color='black', linewidth=2)# 填充区域以显示百分比
# -3SD to -2SD and +2SD to +3SD: 2.35%
ax.fill_between(x, pdf, where=((x >= mu - 3*sigma) & (x < mu - 2*sigma)), color='lightblue', alpha=0.5)
ax.fill_between(x, pdf, where=((x > mu + 2*sigma) & (x <= mu + 3*sigma)), color='lightblue', alpha=0.5)# -2SD to -1SD and +1SD to +2SD: 13.5%
ax.fill_between(x, pdf, where=((x >= mu - 2*sigma) & (x < mu - 1*sigma)), color='blue', alpha=0.3)
ax.fill_between(x, pdf, where=((x > mu + 1*sigma) & (x <= mu + 2*sigma)), color='blue', alpha=0.3)# -1SD to +1SD: 68% (34% each side)
ax.fill_between(x, pdf, where=((x >= mu - 1*sigma) & (x <= mu)), color='teal', alpha=0.7)
ax.fill_between(x, pdf, where=((x > mu) & (x <= mu + 1*sigma)), color='teal', alpha=0.7)# 添加垂直虚线 for SD markers
sd_lines = [mu - 3*sigma, mu - 2*sigma, mu - 1*sigma, mu, mu + 1*sigma, mu + 2*sigma, mu + 3*sigma]
for sd in sd_lines:ax.axvline(sd, color='gray', linestyle='--', linewidth=1)# 添加底部标签
labels = ['700\nM -3SD', '850\nM -2SD', '1000\nM -1SD', '1150\nM', '1300\nM +1SD', '1450\nM +2SD', '1600\nM +3SD']
for i, label in enumerate(labels):ax.text(sd_lines[i], -0.0001, label, ha='center', va='top', fontsize=10)# 添加百分比标签在曲线下方
percent_labels = ['2.35%', '13.5%', '34%', '34%', '13.5%', '2.35%']
positions = [(mu - 2.5*sigma), (mu - 1.5*sigma), (mu - 0.5*sigma), (mu + 0.5*sigma), (mu + 1.5*sigma), (mu + 2.5*sigma)]
for pos, pct in zip(positions, percent_labels):ax.text(pos, 0.0005, pct, ha='center', fontsize=12, color='black')# 添加顶部水平线和百分比
ax.hlines(y=0.0026, xmin=mu - 3*sigma, xmax=mu + 3*sigma, color='purple', linestyle='-', linewidth=1)
ax.text(mu, 0.0027, '99.7%', ha='center', fontsize=12, color='purple')ax.hlines(y=0.0022, xmin=mu - 2*sigma, xmax=mu + 2*sigma, color='purple', linestyle='-', linewidth=1)
ax.text(mu, 0.0023, '95%', ha='center', fontsize=12, color='purple')ax.hlines(y=0.0018, xmin=mu - 1*sigma, xmax=mu + 1*sigma, color='purple', linestyle='-', linewidth=1)
ax.text(mu, 0.0019, '68%', ha='center', fontsize=12, color='purple')# 添加箭头(近似图片中的箭头)
ax.annotate('', xy=(mu - 3*sigma, 0.0026), xytext=(mu + 3*sigma, 0.0026),arrowprops=dict(arrowstyle='<->', color='purple'))
ax.annotate('', xy=(mu - 2*sigma, 0.0022), xytext=(mu + 2*sigma, 0.0022),arrowprops=dict(arrowstyle='<->', color='purple'))
ax.annotate('', xy=(mu - 1*sigma, 0.0018), xytext=(mu + 1*sigma, 0.0018),arrowprops=dict(arrowstyle='<->', color='purple'))# 设置标题和轴
ax.set_title('在正态分布中使用经验法则', fontsize=16)# Using the empirical rule in a normal distribution
ax.set_xlim(mu - 4*sigma, mu + 4*sigma)
ax.set_ylim(0, 0.003)
ax.axis('off')  # 移除轴线以匹配图片# 显示图表
plt.show()
http://www.xdnf.cn/news/20279.html

相关文章:

  • Modbus通信的大端和小端字节序
  • OpsManage 项目启动脚本与 Docker 配置深度分析
  • Day05 单调栈 | 84. 柱状图中最大的矩形、42. 接雨水
  • LeetCode算法日记 - Day 34: 二进制求和、字符串相乘
  • 【目录-多选】鸿蒙HarmonyOS开发者基础
  • 分布式go项目-搭建监控和追踪方案
  • 国内外支持个人开发者的应用市场
  • OpenCV - 图像的IO操作
  • 【开题答辩全过程】以 住院管理系统为例,包含答辩的问题和答案
  • 从零开始的python学习——文件
  • C++ 面向对象编程:多态相关面试简答题
  • 444444
  • LeetCode - 1089. 复写零
  • MQTT 与 Java 框架集成:Spring Boot 实战(三)
  • RAG提示词分解
  • CentOS系统管理:useradd命令的全面解析
  • Vllm-0.10.1:通过vllm bench serve测试TTFT、TPOT、ITL、E2EL四个指标
  • 多线程任务执行窗体框架jjychengTaskWinForm
  • 浅析Linux内核scatter-gather list实现
  • SQL 实战指南:电商订单数据分析(订单 / 用户 / 商品表关联 + 统计需求)
  • WordPress过滤文章插入链接rel属性noopener noreferrer值
  • 开源与定制化对比:哪种在线教育系统源码更适合教育培训APP开发?
  • 企业微信智能表格高效使用指南
  • Kafka Exactly-Once 语义深度解析与性能优化实践指南
  • 串口发送数据
  • 如何离线安装 VirtualMachinePlatform
  • 基于STM32单片机的家庭医护血氧体温血压吃药监测APP系统
  • 万字长文详解 MyCat 分表分库:从 0 到 1 构建高可用订单系统
  • 能发弹幕的简单视频网站
  • 计算机网络:调制解调器