4、统计学基础:均值、中位数、标准差、四分位数、偏度与峰度,正态分布与3σ原则

异常检测的核心在于识别“偏离常态”的数据点。要理解什么是“常态”,必须掌握描述数据分布与离散程度的基本统计量。本章将系统梳理均值、中位数、标准差、四分位数、偏度、峰度以及正态分布与3σ原则,为后续基于统计模型的异常检测算法(如Z-Score、IQR法则)打下坚实基础。

4.1 集中趋势度量:均值与中位数

集中趋势描述了数据向中心值聚集的程度,最常用的指标是均值(Mean)和中位数(Median)。

  • 均值(Mean):所有数据之和除以数据个数。对异常值(Outliers)非常敏感。
  • 中位数(Median):将数据从小到大排序后位于中间位置的值。对异常值具有鲁棒性。
异常检测启示: 当均值与中位数差异较大时,通常表明数据存在偏斜或包含异常值。在异常检测中,中位数常作为更稳健的中心参考点。
指标 计算公式 对异常值敏感性 适用场景
均值 \(\bar{x} = \frac{1}{n}\sum_{i=1}^{n}x_i\) 高 数据对称、无极端值
中位数 排序后第 \(\frac{n+1}{2}\) 个值 低 数据偏斜、存在异常值
均值与中位数在偏态分布中的位置对比 左偏分布(负偏) 均值 中位数 均值 < 中位数 右偏分布(正偏) 中位数 均值 均值 > 中位数 异常值会将均值拉向偏斜方向

4.2 离散程度度量:标准差与四分位数

离散程度描述了数据的波动范围。标准差和四分位距是衡量离散程度的核心工具。

  • 标准差(Standard Deviation, σ):衡量数据点与均值的平均偏离程度。单位与原始数据相同。
  • 四分位数(Quartiles):将排序后的数据分为四等份。Q1(25%)、Q2(中位数,50%)、Q3(75%)。四分位距 IQR = Q3 - Q1。
IQR 法则: 在异常检测中,通常将小于 Q1 - 1.5×IQR 或大于 Q3 + 1.5×IQR 的数据点视为异常值。这是箱线图(Box Plot)识别异常点的理论基础。
指标 定义 对异常值敏感性 异常检测应用
标准差 方差的平方根 高 Z-Score 检测
四分位距 (IQR) Q3 - Q1 低 箱线图异常点识别
箱线图与四分位数、IQR 异常检测 中位数 异常 异常 IQR = Q3 - Q1 下界 = Q1 - 1.5×IQR 上界 = Q3 + 1.5×IQR

4.3 分布形态度量:偏度与峰度

偏度和峰度描述了数据分布的形状,帮助判断数据是否接近正态分布。

  • 偏度(Skewness):衡量分布不对称的程度。
    • 偏度 = 0:对称分布(如正态分布)。
    • 偏度 > 0:右偏(正偏),右侧有长尾。
    • 偏度 < 0:左偏(负偏),左侧有长尾。
  • 峰度(Kurtosis):衡量分布尾部的厚度或峰部的尖锐程度。
    • 峰度 = 3:正态分布(常称为常峰度)。
    • 峰度 > 3:尖峰厚尾(Leptokurtic),异常值更可能出现。
    • 峰度 < 3:低峰薄尾(Platykurtic)。
异常检测注意: 高偏度或高峰度通常意味着数据中存在极端值或异常值。在应用基于正态假设的检测方法(如3σ原则)前,应先检查数据的偏度和峰度。
偏度与峰度对比示意图 左偏 偏度 < 0 正态 偏度 = 0 右偏 偏度 > 0

4.4 正态分布与3σ原则

正态分布(Normal Distribution)是统计学中最重要的概率分布,也是许多异常检测方法的基础假设。

  • 概率密度函数: \(f(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}\),其中 \(\mu\) 为均值,\(\sigma\) 为标准差。
  • 3σ原则(Empirical Rule): 在正态分布中:
    • 约 68.27% 的数据落在 \(\mu \pm \sigma\) 范围内。
    • 约 95.45% 的数据落在 \(\mu \pm 2\sigma\) 范围内。
    • 约 99.73% 的数据落在 \(\mu \pm 3\sigma\) 范围内。
3σ 异常检测: 在异常检测中,通常将超出 \(\mu \pm 3\sigma\) 范围的数据点视为异常值。因为正态分布下,数据点落在该范围外的概率仅为 0.27%,属于小概率事件。
正态分布与3σ原则 μ 68.27% μ ± σ 95.45% μ ± 2σ 99.73% μ ± 3σ 异常 异常 超出 μ ± 3σ 范围的数据点视为异常 概率 < 0.3%

4.5 Python 实现:统计量计算与异常检测

使用 Python 的 numpy 和 scipy 库可以快速计算上述统计量,并实现基于 3σ 原则的异常检测。

import numpy as np
from scipy import stats

# 示例数据
data = np.array([12, 15, 14, 10, 13, 18, 25, 12, 11, 14, 16, 13, 120])

# 计算基本统计量
mean = np.mean(data)
median = np.median(data)
std = np.std(data, ddof=1)  # 样本标准差
q1 = np.percentile(data, 25)
q3 = np.percentile(data, 75)
iqr = q3 - q1
skewness = stats.skew(data)
kurtosis = stats.kurtosis(data, fisher=True)  # Fisher 峰度,正态分布为 0

print(f"均值: {mean:.2f}")
print(f"中位数: {median:.2f}")
print(f"标准差: {std:.2f}")
print(f"Q1: {q1:.2f}, Q3: {q3:.2f}, IQR: {iqr:.2f}")
print(f"偏度: {skewness:.2f}")
print(f"峰度: {kurtosis:.2f}")

# 3σ 异常检测
lower_bound = mean - 3 * std
upper_bound = mean + 3 * std
anomalies = data[(data < lower_bound) | (data > upper_bound)]

print(f"\n3σ 下界: {lower_bound:.2f}")
print(f"3σ 上界: {upper_bound:.2f}")
print(f"检测到的异常值: {anomalies}")
输出解读: 上述代码中,数据点 120 明显偏离其他值,会被 3σ 原则检测为异常。偏度值为正,表明数据右偏,与异常值的存在一致。

4.6 本章小结

统计量 核心作用 异常检测关联
均值 / 中位数 描述数据中心 差异大时提示异常存在
标准差 / IQR 描述数据离散程度 Z-Score / IQR 法则的基础
偏度 / 峰度 描述分布形态 判断数据是否适合正态假设
正态分布 / 3σ 概率分布模型 经典异常检测阈值方法

掌握这些基础统计量,是理解后续 Z-Score、IQR、Grubbs 检验等异常检测算法的前提。在实际数据分析中,建议先通过描述性统计和可视化(如直方图、箱线图)了解数据分布特征,再选择合适的检测方法。