Math-01.显著性检验-05.KS检验

Kolmogorov-Smirnov 检验KS 检验)比较经验累积分布函数(empirical CDF,ECDF)与理论 CDF,或两个样本的 ECDF,判断分布是否一致,假设特定参数形式(非参数)。

段末注释ECDF 为 $F_n(x) = \frac{1}{n}\sum I(X_i \le x)$;KS 统计量 $D$ 为两 CDF 最大垂直距离。

系列01 总论


1. 检验问题(D1)

图 1 KS 检验直观

类型 $H_0$
单样本 数据来自指定分布 $F_0$
两样本 两独立样本来自同一连续分布

2. 数据条件(D2)

条件 说明
连续 单样本 KS 对离散数据 p 值偏保守
独立 i.i.d.
单样本 需指定完全 $F_0$(含参数应用估计校正)
两样本 任意连续分布,不假设形态

3. 检验统计量(D3–D4)

图 2 D = max|F_n - F_0|

$$
D = \sup_x |F_n(x) - F_0(x)|
$$

两样本:$D = \sup_x |F_{n_1}(x) - F_{n_2}(x)|$。大 $n$ 下 $H_0$ 成立时 $D$ 的分布有表 / 渐近公式。


4. 适用场景(D5–D7)

图 3 适用场景

场景 用法
残差是否正态 对残差做单样本 KS(vs 正态)
两组表达分布是否同形 两样本 KS
模拟数据 vs 理论 单样本 KS
08 正态性 Shapiro 专检正态;KS 更通用

5. 局限与误用(D8)

图 4 局限

问题 说明
参数估计未校正 从数据估 $\mu,\sigma$ 再 KS 会过于乐观
离散数据 应用卡方或专门检验
中心敏感 对尾部差异不如 AD 检验
大 $n$ 必显著 微小偏离也拒绝 $H_0$
两样本位置相同但尺度不同 能检出,但效应解读需结合图

6. 示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt

rng = np.random.default_rng(42)
data = rng.normal(0, 1, 50)
# 单样本:vs 标准正态(参数固定时)
d, p = stats.kstest(data, 'norm')
print(f"KS vs N(0,1) fixed: D={d:.3f}, p={p:.4f}")

# 两样本
g1 = rng.normal(0, 1, 40)
g2 = rng.normal(0.3, 1, 40)
d2, p2 = stats.ks_2samp(g1, g2)
print(f"2-sample KS: D={d2:.3f}, p={p2:.4f}")

# ECDF 可视化
for g, lab in [(g1, 'G1'), (g2, 'G2')]:
x = np.sort(g)
y = np.arange(1, len(g)+1) / len(g)
plt.step(x, y, where='post', label=lab)
plt.legend(); plt.title('ECDF comparison')
plt.savefig('ks_ecdf.png', dpi=150)

7. 小结

  • KS 检验:CDF 最大距离 $D$;单样本拟合 / 两样本同分布。
  • 连续、独立;参数需已知或 Bootstrap 校正。

系列导航08 正态性 | 07 卡方


参考文献

  1. scipy.stats.kstest
-------------本文结束感谢您的阅读-------------