3σ 法则
一、直观理解:离开“平均 ± 三倍平常波动”就先亮黄灯
3σ 法则(Three-Sigma Rule)把一列近似单峰、对称的数据想象成一条以均值为中心的道路:路面宽度由标准差 刻画。走得离中心超过三条车道()的点,先标成异常候选,再决定是测量错误、罕见事件,还是分布本身有厚尾。
在正态分布下有著名的经验覆盖率:
- 约 68% 的数据落在 ;
- 约 95% 落在 ;
- 约 99.7% 落在 。
因此,若数据真近似正态,落在 之外的点非常少,作为初筛阈值简单有效。工业质量控制里的控制图、数模竞赛里的传感器毛刺检查,都常从这一思想出发。
但务必建立正确预期:
- 3σ 不是“凡越界必删除”的自动法令;
- 偏态、重尾、多峰、混合总体下,“99.7%”不再成立;
- 均值和标准差本身会被极端值污染,出现“异常把门槛抬高、再藏住自己”的现象。
二、适用场景与优缺点
| 类型 | 说明 |
|---|---|
| 适用场景 | 单变量、近似正态或至少单峰对称的连续指标;传感器、实验重复测量中的毛刺筛查;需要可解释、可手算的初筛规则;样本量中等偏好、希望先得到候选名单再人工复核。 |
| 核心优点 | 规则清晰、计算极快;与正态理论衔接自然;阈值 便于写进论文与程序;可推广为 ()做灵敏度分析。 |
| 局限与缺点 | 强依赖对称近似正态;被异常值反向污染(非稳健);多变量相关结构下的联合异常看不出来;时间序列中的水平漂移会导致大量误报;类别变量不适用。 |
使用 3σ 前通常需要完成以下检查:
- 画直方图、核密度或 Q-Q 图,判断是否大致单峰对称;
- 确认单位正确、无录入串位(如把 1.5 写成 15);
- 区分横截面与时间序列:后者可能需先去趋势、分期估计;
- 决定 取 3 还是更松 / 更紧,并计划与箱线图等稳健方法对照;
- 明确“检出”之后的动作:复核、Winsorize、删除、还是单独建模。
三、核心原理:用位置 + 尺度构造截断区间
1. 基本判定式
对一维样本 ,先估计
若
|x_i-\hat\mu| > k\hat\sigma则将 标为异常候选。经典 3σ 取 。
等价的区间形式:
2. 为何是“候选”而不是“错误”
统计上的“罕见”≠ 业务上的“错误”。高考满分、极端天气、金融危机日收益率,都可能落在 外,却是真实且关键的信号。3σ 的产出应是待核查列表,删除与否取决于题目目标。
3. 稳健改进:用中位数与 MAD
为减轻“自己抬门槛”,可用:
再构造
当 |z_i^{\mathrm{MAD}}|>3 时标记(系数 0.6745 使正态下 与 一致)。这常称为修正 Z 分数法,比经典 3σ 抗污染。
4. 多变量情形的局限
逐列做 3σ 会漏掉“每个坐标都不极端、但组合不可能”的点。多变量异常需要马氏距离、LOF、隔离森林等。3σ 只负责单变量边缘筛查。
5. 与假设检验的关系
在 且参数已知时,P(|X-\mu|>3\sigma)\approx 0.0027。参数未知、样本有限时,这只是近似规则,不是精确的假设检验 值程序。
四、关键决策 / 如何选参数
1. 倍数 怎么选
| 倾向 | 适用直觉 | |
|---|---|---|
| 2 ~ 2.5 | 更严,候选更多 | 质量控制、对毛刺零容忍 |
| 3 | 默认 | 近似正态的通用初筛 |
| 3.5 ~ 4 | 更松 | 略重尾、或样本很大不想误报过多 |
应报告不同 下的检出个数,避免“只展示对结论有利的一种阈值”。
2. 是否迭代删除
有人反复:估 → 删越界点 → 再估……直到收敛。这会强烈改变分布,只建议在确认是仪器错误且比例极低时谨慎使用,并完整记录每一轮。
3. 分组还是全体
男女身高、不同工艺批次混在一起,组间差会被当成异常。应按自然组别分别估计 ,或先建模去掉固定效应再检查残差。
4. 样本太小
n<30 时 本身很不稳, 界限可能离谱。宜改用箱线图、或结合业务上下限。
5. 与训练集 / 测试集
若异常规则用于特征清理并影响后续模型,应在训练折上估计 ,再应用于验证折;并说明测试阶段是否允许“新出现的极端真实值”。
五、MATLAB 示例
% 构造近似正态主体 + 两个明显毛刺
rng(1);
x = [10 + 1.2 * randn(40, 1); 80; -5]; % 最后两个为异常候选
% ----- 经典 3σ -----
mu = mean(x);
sigma = std(x, 0); % 样本标准差
k = 3;
lower = mu - k * sigma;
upper = mu + k * sigma;
isOut_3s = (x < lower) | (x > upper);
% ----- 稳健版:修正 Z 分数(MAD)-----
med = median(x);
MAD = median(abs(x - med));
if MAD == 0
zMad = zeros(size(x));
else
zMad = 0.6745 * (x - med) / MAD;
end
isOut_mad = abs(zMad) > 3;
T = table(x, isOut_3s, abs((x - mu) / sigma), isOut_mad, abs(zMad), ...
'VariableNames', {'x', 'out_3sigma', 'abs_z', 'out_MAD', 'abs_zMAD'});
disp(T);
fprintf("3σ 区间: [%.3f, %.3f], 检出 %d 个\n", lower, upper, sum(isOut_3s));
fprintf("MAD 法检出 %d 个\n", sum(isOut_mad));
% 可视化
figure;
histogram(x, 15); hold on;
xline(lower, "--r", "\mu-3\sigma");
xline(upper, "--r", "\mu+3\sigma");
xline(mu, "-k", "\mu");
scatter(x(isOut_3s), zeros(sum(isOut_3s), 1) + 0.5, 60, "r", "filled");
title("3\sigma 法则筛查");
xlabel("x"); ylabel("频数");
grid on;
% 不同 k 的灵敏度
ks = [2, 2.5, 3, 3.5, 4];
counts = arrayfun(@(kk) sum(abs(x - mu) > kk * sigma), ks);
disp(table(ks', counts', 'VariableNames', {'k', 'n_outliers'}));
对数据矩阵按列筛查:
X = [x, 100 + 5 * randn(size(x))]; % 第二列干净
muX = mean(X, 1);
sigX = std(X, 0, 1);
isOutMat = abs(X - muX) > 3 .* sigX; % 隐式扩展
disp("各列检出个数:");
disp(sum(isOutMat, 1));
六、如何解释结果
输出应理解为:
在“数据近似正态、用样本均值和标准差刻画中心与波动”的假设下,这些点的偏离程度超过了预设倍数。
报告建议包含:
- 变量名、样本量、是否分组估计;
- 、、 与具体区间;
- 候选点的索引、原始值、对应 ;
- 分布诊断图(直方图 / Q-Q)——证明方法假设是否勉强成立;
- 与箱线图或 MAD 法的对照结果;
- 对每个(或每类)候选点的处置:保留 / 修正 / 删除 / 单独分析,以及理由;
- 处置前后下游模型指标的变化(敏感性分析)。
若 3σ 一个都检不出,而箱线图检出很多,通常说明分布偏态或有不对称长尾,应改用稳健方法并在论文中解释差异。
七、常见误区
1. 把 3σ 当成任意分布的普适定律
没有正态或至少对称单峰,“99.7%”叙事不成立。幂律、指数分布的右尾会系统性“越界”。
2. 检出后无脑全部删除
可能删掉的正是研究事件(故障、违约、极端需求)。先分类:错误值 vs 真实极端值。
3. 用已被污染的 做唯一依据
少数极大值抬高 ,导致边界外扩、漏检。应并行报告 MAD 法或先修剪再估。
4. 在明显分组的数据上整体套 3σ
混合分布的组中心差会被当成离群。
5. 对多变量问题只做逐列 3σ 并声称“已处理全部异常”
边缘正常、联合异常仍然存在。
八、小结
3σ 法则用“均值 ± 倍标准差”快速标出单变量上的极端候选,在近似正态的测量数据上简单、好讲、好复现。
它的核心思想可以概括为:
先用中心和典型波动搭一条安全带,再把冲出安全带的点拉出来人工问责。
它适合作为异常排查的第一道闸,而不是最终判决。论文中应展示分布假设、阈值灵敏度,并与稳健方法对照;候选异常的去留必须回到题目背景,而不是只看是否大于 。