https://blog.csdn.net/fengdu78/article/details/114325589
https://www.cnblogs.com/arkenstone/p/5496761.html
https://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test#:~:text=In%20statistics%2C%20the%20Kolmogorov%E2%80%93Smirnov,test)%2C%20or%20to%20compare%20two
0. 简介
KS检验(Kolmogorov–Smirnov test)是由苏联数学家Andrey Kolmogorov和Nikolai Smirnov提出的一种无参数检验方法。它可以用来解决两类问题:
- 一个集合中的样本,属于某个具体的分布的概率是多少;
- 两个集合的样本,属于同一个分布的概率是多少。
具体来讲,KS检验会计算一个集合的样本的经验分布函数与给定分布函数(或者另一个集合的样本的经验分布函数)的距离。
注意,KS检验只能处理1维特征。
1. 数学定义
对于一个具有n个独立同分布的样本集合
X
=
{
X
1
,
X
2
,
⋯
,
X
n
}
X=\{X_1,X_2,\cdots,X_n\}
X={X1,X2,⋯,Xn},它的经验分布函数(empirical distribution function)为:
F
n
(
x
)
=
n
u
m
o
f
(
s
a
m
p
l
e
s
≤
x
)
n
=
1
n
∑
i
=
1
n
1
[
−
∞
,
x
]
(
X
i
)
(1-1)
F_n(x)=\frac{num of(samples\leq x)}{n}=\frac{1}{n}\sum_{i=1}^{n}1_{[-\infty,x]}(X_i)\tag{1-1}
Fn(x)=nnumof(samples≤x)=n1i=1∑n1[−∞,x](Xi)(1-1)
其中
1
[
−
∞
,
y
]
(
x
)
1_{[-\infty,y]}(x)
1[−∞,y](x)是指示性函数,当
x
≤
y
x\leq y
x≤y时值为1,否则值为0.
对于一个给定的分布函数
F
(
x
)
F(x)
F(x),KS检验就是要计算如下检验量:
D
n
=
sup
x
∣
F
n
(
x
)
−
F
(
x
)
∣
D_n=\sup \limits_{x}|F_n(x)-F(x)|
Dn=xsup∣Fn(x)−F(x)∣