ARTICLE

柯尔莫哥洛夫-斯米尔诺夫检验

柯尔莫哥洛夫-斯米尔诺夫检验 (Kolmogorov-Smirnov Test) 柯尔莫哥洛夫-斯米尔诺夫检验 (Kolmogorov-Smirnov Test),简称 K-S检验,是一种重要的\%非参数统计\%方法,用于\%假设检验\%。该方法由苏联数学家安德雷·柯尔莫哥洛夫(Andrey Kolmogorov)于 1933 年提出单样本版本,后由尼古拉·

浏览 49 更新 2025-10-26

柯尔莫哥洛夫-斯米尔诺夫检验 (Kolmogorov-Smirnov Test)

柯尔莫哥洛夫-斯米尔诺夫检验 (Kolmogorov-Smirnov Test),简称 K-S检验,是一种重要的\%非参数统计\%方法,用于\%假设检验\%。该方法由苏联数学家安德雷·柯尔莫哥洛夫(Andrey Kolmogorov)于 1933 年提出单样本版本,后由尼古拉·斯米尔诺夫(Nikolai Smirnov)于 1939 年推广至双样本情形。其核心思想是比较样本\%经验分布函数\%(Empirical Distribution Function, EDF)与理论分布,或比较两个独立样本的分布是否存在显著差异。K-S检验的优点在于不依赖数据分组,充分利用每个观测点的精确信息,且检验统计量的零分布可由精确公式给出。

核心概念:经验分布函数(EDF)

对于容量为 n n 的随机样本 X1,X2,,Xn X_1, X_2, \ldots, X_n ,其经验分布函数定义为 Fn(x)=1ni=1nI(Xix) F_n(x) = \frac{1}{n}\sum_{i=1}^n I(X_i \le x) ,其中 I() I(\cdot) 是\%指示函数\%。Fn(x) F_n(x) 是一个右连续的阶梯函数,每越过一个样本观测值,函数值跳跃 1/n 1/n 。根据\%格里文科定理\%(Glivenko–Cantelli Theorem),当 n n \to \infty 时,Fn(x) F_n(x) 以概率 1 一致收敛于真实\%累积分布函数\% F(x) F(x) ,这为 K-S 检验提供了坚实的理论基础。

单样本 K-S 检验

单样本 K-S 检验用于判断样本是否来自具有已知 CDF F(x) F(x) 的连续分布。

  • \%原假设\% (H0 H_0 )Fn(x)=F(x) F_n(x) = F(x) 对所有 x x 成立,即样本来自该理论分布。
  • \%备择假设\% (Ha H_a ):存在某个 x x 使得 Fn(x)F(x) F_n(x) \neq F(x) ,即样本并非来自该分布。
  • 检验统计量Dn=supxFn(x)F(x) D_n = \sup_x |F_n(x) - F(x)| ,即 EDF 与理论 CDF 之间的最大绝对垂直距离。将样本观测值按升序排列为 x(1)x(2)x(n) x_{(1)} \le x_{(2)} \le \cdots \le x_{(n)} 后,Dn D_n 的计算公式可以表示为:
Dn=max(max1in(inF(x(i))), max1in(F(x(i))i1n))D_n = \max\left(\max_{1\le i\le n}\left(\frac{i}{n} - F(x_{(i)})\right),\ \max_{1\le i\le n}\left(F(x_{(i)}) - \frac{i-1}{n}\right)\right)
  • 临界值与决策:给定\%显著性水平\% α \alpha ,若 Dn D_n 超过临界值 Dn,α D_{n,\alpha} ,或\%p-value\%小于 α \alpha ,则拒绝 H0 H_0 。当样本量足够大时,Dn D_n 的渐近分布由柯尔莫哥洛夫分布给出:limnP(nDnt)=K(t)=12k=1(1)k1e2k2t2 \lim_{n\to\infty} P(\sqrt{n}D_n \le t) = K(t) = 1 - 2\sum_{k=1}^\infty (-1)^{k-1}e^{-2k^2 t^2}

> 重要前提:理论分布的所有参数必须预先指定,不能从样本数据中估计。若参数从数据中估计(例如使用样本\%均值\% Xˉ \bar{X} 和样本\%标准差\% s s 来构造正态分布),则应使用\%Lilliefors检验\%的修正临界值,否则检验过于保守,\%统计功效\%将显著下降。

双样本 K-S 检验

双样本 K-S 检验用于判断两个独立样本是否来自同一(未知)连续分布,是单样本检验的自然推广。

  • 原假设 (H0 H_0 )F1(x)=F2(x) F_1(x) = F_2(x) 对所有 x x 成立,即两样本来自相同分布。
  • 备择假设 (Ha H_a ):存在某个 x x 使得 F1(x)F2(x) F_1(x) \neq F_2(x) ,即两样本来自不同分布。
  • 检验统计量Dn1,n2=supxFn1(x)Fn2(x) D_{n_1,n_2} = \sup_x |F_{n_1}(x) - F_{n_2}(x)| ,即两个经验分布函数之间的最大绝对垂直距离。
  • 决策:若 Dn1,n2 D_{n_1,n_2} 超过临界值(该临界值取决于两样本容量 n1,n2 n_1, n_2 以及显著性水平 α \alpha ),则拒绝 H0 H_0 。双样本检验对两样本的位置偏移(均值差异)、尺度变化(方差差异)以及分布形状差异均敏感。

优缺点分析

优点:①完全分布自由(distribution-free),不依赖总体分布的特定假设,适用面广;②对分布的位置、尺度、形状差异均敏感,其检验功效优于仅关注均值的\%t检验\%或仅关注方差的\%F检验\%;③检验统计量的零分布可由精确公式计算,属于精确检验而非渐近近似;④检验是\%一致的检验\%(consistent test),当样本量增大时,检验功效趋近于 1,但凡存在差异必然能被检测到;⑤不需要对数据进行分组或分箱,保留了每个观测点的全部信息。

缺点:①理论上要求被检验的分布是连续的,应用于离散数据时结果偏于保守;②对分布尾部区域的差异不敏感——用于检验尾部行为时,推荐使用\%Anderson-Darling检验\%以获得更高的功效;③拒绝原假设仅能表明存在差异,但无法提供差异的具体形式或来源;④单样本检验中参数必须已知的限制在实际应用中较难满足,需借助 Lilliefors 修正或\%自助法\%(Bootstrap)获取有效临界值。

与其他检验方法的比较

  • 与\%卡方拟合优度检验\%比较:卡方检验要求将数据人为分组(分箱),分组方式的选择会影响检验结果。K-S检验不需要分组,利用每个数据点的精确位置,在小样本情形下统计功效更高。但卡方检验可用于离散分布,而标准 K-S 检验主要适用于连续分布。
  • 与\%Shapiro-Wilk检验\%比较:S-W检验是专门用于检验\%正态性\%的最优方法,在此特定任务上统计功效高于 K-S 检验(包括 Lilliefors 修正版本)。但 K-S 检验的通用性更强,可检验样本是否来自任意指定的连续分布(如指数分布、均匀分布、威布尔分布等),而 S-W 检验仅限于正态性检验。
  • 与\%Cramér–von Mises检验\%比较:Cramér–von Mises 检验同样基于 EDF,但使用平方积分距离而非最大垂直距离,对整体分布的差异更敏感。K-S 检验对局部偏离更灵敏,两者各有侧重。

实际应用

K-S 检验在实际应用中具有广泛价值:①金融领域用于检验资产收益率是否服从正态分布或\%稳定分布\%(stable distribution),这对风险模型中的价值-at-风险(VaR)计算和期权定价模型选择至关重要;②气象学与水文科学中用于检验降水量、洪水频率等极端事件的分布拟合,是极值分析的基础工具;③生物统计学中比较不同处理组间的分布差异,例如比较药物试验中实验组与对照组的响应变量分布;④机器学习与数据科学中用于检测训练集与测试集的分布漂移(data drift / distribution shift),这是模型持续监控与维护的重要环节;⑤物理与工程科学中检验实验测量数据是否符合理论预测的特定分布,如检验随机误差是否服从正态分布。

历史背景

柯尔莫哥洛夫于 1933 年发表论文《关于用经验分布函数确定概率》(Sulla determinazione empirica di una legge di distribuzione),首次提出了单样本 K-S 检验的统计量及其渐近分布。斯米尔诺夫随后在 1939 年将其推广至双样本情形,用以比较两个独立样本是否来自同一分布。该检验方法在非参数统计的发展史上具有里程碑意义,是早期为数不多的能够提供精确分布结果的非参数检验之一。此后,Lilliefors(1967)提出了针对参数未知情形的修正版本,进一步拓展了 K-S 检验在实际中的应用范围。

软件实现

主流统计软件均内置 K-S 检验函数:R 语言中使用 \texttt{ks.test()} 函数;Python 中 \texttt{scipy.stats} 模块提供 \texttt{ks\_1samp()} 和 \texttt{ks\_2samp()};MATLAB 的 \texttt{kstest} 和 \texttt{kstest2} 实现单双样本检验;Stata 的 \texttt{ksmirnov} 命令同样支持。使用时需注意参数指定方式及小样本下的精确临界值表。

在实现细节上,多数软件默认基于渐近分布计算 p-value,当样本量较小时建议查阅精确临界值表或使用\%蒙特卡洛方法\%模拟获得更准确的结论。同时,对于包含\%结\%(ties)的数据,K-S 检验的标准公式需要调整,部分软件实现提供了相应的修正选项。