让我们谈谈统计学吧 - 面向软件质量的统计入门(No.9 正态分布及其相关:3σ 规则的含义与局限)
Back to Top
为了覆盖更广泛的受众,这篇文章已从日语翻译而来。
您可以在这里找到原始版本。
引言
#在质量管理中,有一个统计学的代表性关键词:“±3σ(西格玛)”。
这是一个基于正态分布前提,用于表示数据波动可容忍范围的规则,在异常检测和过程管理的实践中经常出现。
然而,“如果是正态分布的话……”这一前提本身在很多情况下并不可靠。
在“让我们谈谈统计学吧”系列的第九期中,我将讲解3σ规则的含义及其局限,以及如何应对无法近似为正态分布的现场数据。
1. 正态分布与3σ规则的基础
#● 什么是正态分布?
#正态分布是一种具有以下特征的连续分布:
- 以均值 μ 为中心,左右对称
- 标准差 σ 决定了波动的程度
- 曲线的形状是“钟形”
正态分布的概率密度函数可表示为:
即使看到公式,也可能难以直观想象,您可以通过第2章中介绍的图形来确认其形状。
● 标准正态分布和Z分数
在所有正态分布中,将均值 μ = 0、标准差 σ = 1进行标准化后称为“标准正态分布”。
该分布可以用以下公式表示,记号用 Z:
使用标准正态分布后,任何正态分布都可以在**“均值0、标准差1”的统一尺度上进行比较**。
此时所使用的转换值称为 Z分数(Z值),通过以下公式计算:
Z分数表示“某个值 X 与均值的距离是多少(以标准差为单位)”,是异常值判断、置信区间估计、t检验等多种统计方法的基础。
Z分数的应用将在后续的“置信区间与误差”一节中详细讨论。
● 什么是3σ规则?
#范围 | 包含的比例(理论值) |
---|---|
±1σ | 约68.3% |
±2σ | 约95.4% |
±3σ | 约99.7% |
也就是说,“落在±3σ以外”的数据被视为非常罕见的事件。这就是将其作为“异常值”或“偏离”的依据。
● 六西格玛():
在制造业和服务业等领域,有一种称为六西格玛(Six Sigma)的质量管理方法。
六西格玛的目的是抑制过程的波动,将缺陷率降至接近零。
基于正态分布的3σ规则,±3σ范围包含99.7%的数据,而在六西格玛中,假设**±6σ范围包含99.99966%的数据**,以实现每一百万次中仅3.4次的极低缺陷率。
在软件领域,也可在以下场景中应用:
- 管理缺陷发生率或评审所需时间等的波动
- 利用回归分析来预测未来的不良数
- 通过过程能力指标(Cp, Cpk)对过程的稳定性进行定量评估
(※后文将介绍 Cp、Cpk)
“了解波动、查明原因、并利用于改进”——这一思路正是统计质量管理的核心。
2. 用 Python 进行可视化
#下面的代码绘制图表,以便直观理解“正态分布与3σ规则的关系”。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
plt.rcParams['font.family'] = 'Meiryo'
mu = 0
sigma = 1
x = np.linspace(mu - 4*sigma, mu + 4*sigma, 500)
y = norm.pdf(x, mu, sigma)
plt.plot(x, y, label='正規分布', color='steelblue')
plt.axvline(mu, color='black', linestyle='--', label='平均')
for i in range(1, 4):
plt.axvline(mu + i*sigma, color='gray', linestyle=':')
plt.axvline(mu - i*sigma, color='gray', linestyle=':')
plt.fill_between(x, y, where=(x > mu - 3*sigma) & (x < mu + 3*sigma), color='lightblue', alpha=0.5, label='±3σ範囲')
plt.title("正規分布と±3σルール")
plt.xlabel("値")
plt.ylabel("確率密度")
plt.legend()
plt.tight_layout()
plt.show()
图中可以确认“在正态分布中,±1σ、±2σ、±3σ 各包含多少数据?”。尤其能直观理解“±3σ 范围内包含几乎所有数据(99.7%)”的3σ规则。
也就是说:
- 它成为过程管理或质量管理中发现“异常”或“离群值”的标准。
- 超出±3σ的数据通常被视为“超出正常波动的异常”。
3. 实务应用:质量规格与过程能力
#上一章介绍了正态分布是一个非常有效的模型,可用于描述带有波动的数据的分布范围和位置。这一思路在实际工作中也可用于判断**“产品或过程的稳定性如何,以及是否落在允许范围内”**。
例如,以假设产品的最终尺寸或处理时间等服从正态分布为前提,通过比较该分布的宽度(波动)与允许的规格范围(上下限),可以评估质量的稳定性。
在此出现了“Cp”“Cpk”等过程能力指数(※1)。它们以正态分布的标准差(σ)为基准,对过程的波动程度及均值位置与规格的符合程度进行数值化。
- “了解波动”→“应用于与允许范围的比较”
通过这样的流程,统计理论与质量评价和过程管理直接相关。
※1:什么是 Cp、Cpk?
Cp 和 Cpk 是表示过程能力的代表性指标。在制造业和质量保证领域得到广泛应用,也可以用于评估软件开发过程的稳定性和一致性。
● Cp 的定义:
- USL:上限规格值(Upper Specification Limit)
- LSL:下限规格值(Lower Specification Limit)
- σ:过程的标准差(波动的指标)
→ 表示过程的波动在规格范围(允许范围)内的程度。
→ 与均值位置无关,只关注“范围的比率”。
● Cpk 的定义:
→ 在 Cp 的基础上,考虑均值是否偏离中心(是否存在偏斜)的指标。
→ 如果均值位于中央,则 Cp ≒ Cpk;如果偏离,则 Cpk < Cp。
● 可视化 Cp 与 Cpk 之间的差异
#在制造和软件质量领域使用的过程能力指标 Cp 和 Cpk 是评估过程波动及对规格稳定性的关键指标。以下代码可视化了当均值位于规格中央(Cp = Cpk)与均值偏移(Cp > Cpk)两种情况的差异。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
plt.rcParams['font.family'] = 'Meiryo' # 日语支持(本地运行时生效)
# 参数设置
sigma = 5
mu_cp = 50 # 当 Cp = Cpk 时(平均位于中央)
mu_cpk = 55 # 当 Cp > Cpk 时(平均值偏移)
LSL = 30
USL = 70
x = np.linspace(20, 80, 500)
y_cp = norm.pdf(x, mu_cp, sigma)
y_cpk = norm.pdf(x, mu_cpk, sigma)
plt.figure(figsize=(10, 5))
plt.plot(x, y_cp, label='平均=50(Cp=Cpk)', color='steelblue')
plt.plot(x, y_cpk, label='平均=55(Cp>Cpk)', color='orange')
plt.axvline(LSL, color='red', linestyle='--', label='LSL(下限)')
plt.axvline(USL, color='red', linestyle='--', label='USL(上限)')
plt.axvline((LSL + USL)/2, color='black', linestyle='--', label='中心値')
plt.title("CpとCpkの違いを示す正規分布の比較")
plt.xlabel("値")
plt.ylabel("確率密度")
plt.legend()
plt.tight_layout()
plt.show()
说明
- 蓝线表示均值位于规格中央,即 Cp = Cpk 的情况。
- 橙线表示均值偏离规格,即 Cp > Cpk 的情况。
- 即使波动(标准差)相同,如果存在偏离中心,Cpk 也会变小。
- 换句话说,即使波动小,如果过程不位于规格中央,也会判断过程能力较低。
● 实务中的参考值与应用
#- 在许多行业和企业中,往往将“Cp ≥ 1.33”作为质量基准
→ 这意味着±4σ能够落在规格范围内的稳定性 - 在软件开发中,也可将其应用于测试时间、评审所需时间、交付周期等的“波动评估”
- 如果 Cpk 较低,可能说明过程本身存在偏向,需要重新审视均值或进行过程改进
例如,可以在以下场景中应用 Cp、Cpk:
■ 示例1:测试执行时间的稳定性评估
对某功能的自动测试执行时间进行记录后,执行时间的平均值为30秒,标准差为2秒,规格上的允许范围为**±10秒(20~40秒)**。
在这种情况下,
→ 波动非常小,质量稳定
→ 均值也位于规格中央,过程无偏向
→ 可评为非常稳定的优良过程。Cp 与 Cpk 均满足 1.67 ≥ 1.33,符合许多行业的质量标准。这样的过程通常被判断为“统计上稳定,且无需过多改进”。
■ 示例2:评审所需时间存在偏差的情况
评审的平均所需时间为30分钟,但波动较大,其中位数为26分钟,标准差为6分钟。如果规格的允许范围为20~40分钟:
→ 可见波动较大,评审时间不稳定。可能需要重新审视评审标准或进行培训。
● Cp 与 Cpk 的总结
#指标 | 考察内容 | 是否考虑中心偏移 | 含义 |
---|---|---|---|
Cp | 过程波动与规格范围的比值 | 不考虑 | 可能“有能力但偏移” |
Cpk | 在 Cp 基础上考虑均值偏移 | 考虑 | 指示实际可用的“实力” |
对过程“波动的管理”与质量稳定性直接相关。Cp 与 Cpk 是统计质量管理的关键指标。
4. 限界与注意事项
#-
并非所有数据都服从正态分布
- 例如:测试时间、故障处理时间、评审提出的问题数量等往往右偏(右尾较长)
- 这可能是具有较高“偏度”或“峰度”的非对称分布
(“偏度”“峰度”请参见请参见此处)
-
在非正态分布上强行应用3σ规则会……
- 容易漏检异常值
- 容易误报(false positive)
-
如果忽视检验或分布可视化,将有误判统计判断的风险
- 通过直方图或箱线图检查分布形状
- 以数值方式检查偏度和峰度
- 使用 Shapiro‐Wilk 检验等**正态性检验(※2)**也很有效
※2:正态性检验
关于正态性检验将在后续的“假设检验”一节中讨论。在这里只需理解为“用于检查数据是否服从正态分布的检验”即可。
在使用之前验证前提(分布)非常重要。特别是过程能力指数和3σ规则等方法都是以正态分布为前提,因此必须进行确认数据是否符合该前提的过程。
总结
#- 正态分布与3σ规则作为可视化过程波动和进行异常检测的基本指标被广泛使用
- 通过 Cp 和 Cpk 可以数值化地把握过程的稳定程度
- 但如果数据不服从正态分布,则需注意
下次预告
#下次将介绍“总体与样本:抽样的基础”。将解读如何从有限样本推断总体,统计推断的出发点。
希望能对您的数据分析有所帮助。