콜모고로프-스미르노프 검정

[섬네일|300px|콜모고로프-스미르노프 통계량의 그림. 빨간색 선은 모형 [누적 분포 함수|CDF, 파란색 선은 경험적 CDF, 검은색 화살표는 KS 통계량이다.]]

통계학에서 **콜모고로프-스미르노프 검정**(Kolmogorov–Smirnov test, **K-S 검정** 또는 **KS 검정**)은 연속(또는 불연속, 섹션 2.2 참조) 1차원 확률 분포의 등가성에 대한 비모수 검정이다. 이 검정은 표본이 주어진 기준 확률 분포에서 나왔는지(1-표본 K-S 검정), 또는 두 표본이 같은 분포에서 나왔는지(2-표본 K-S 검정)를 검정하는 데 사용될 수 있다. 이 검정은 1930년대에 이를 개발한 안드레이 콜모고로프와 니콜라이 스미르노프의 이름을 따서 명명되었다.

콜모고로프-스미르노프 통계량은 표본의 경험적 누적 분포 함수와 기준 분포의 누적 분포 함수 사이, 또는 두 표본의 경험적 누적 분포 함수 사이의 거리를 정량화한다. 이 통계량의 영 분포는 표본이 기준 분포에서 추출되었거나(1-표본의 경우) 표본이 동일한 분포에서 추출되었다는(2-표본의 경우) 귀무 가설 하에 계산된다. 1-표본의 경우, 귀무 가설 하에 고려되는 분포는 연속적일 수 있거나(섹션 2 참조), 순수하게 이산적이거나 혼합될 수 있다(섹션 2.2 참조). 2-표본의 경우(섹션 3 참조), 귀무 가설 하에 고려되는 분포는 연속 분포이지만 그 외에는 제한이 없다.

2-표본 K-S 검정은 두 표본의 경험적 누적 분포 함수의 위치와 형태의 차이에 모두 민감하므로 두 표본을 비교하는 데 가장 유용하고 일반적인 비모수 방법 중 하나이다.

콜모고로프-스미르노프 검정은 적합도 검정으로 사용되도록 수정될 수 있다. 분포의 정규성을 검정하는 특수한 경우, 표본은 표준화되어 표준 정규 분포와 비교된다. 이는 기준 분포의 평균과 분산을 표본 추정치와 동일하게 설정하는 것과 같으며, 이를 사용하여 특정 기준 분포를 정의하면 검정 통계량의 영 분포가 변경되는 것으로 알려져 있다(추정된 매개변수를 사용한 검정 참조). 다양한 연구에서 이 보정된 형태에서도 이 검정이 샤피로-윌크 검정 또는 앤더슨-달링 검정보다 정규성을 검정하는 데 검정력이 낮다는 사실이 밝혀졌다. 그러나 이러한 다른 검정에는 자체적인 단점이 있다. 예를 들어, 샤피로-윌크 검정은 동일한 값이 많은 표본에서는 잘 작동하지 않는 것으로 알려져 있다.

## 1-표본 콜모고로프-스미르노프 통계량
n개의 독립적이고 동일하게 분포된(i.i.d.) 순서 관측치 Xi에 대한 경험적 누적 분포 함수 Fn은 다음과 같이 정의된다.


F_{n}(x)=\frac{\text {number of (elements in the sample} \leq x)}{n}=\frac{1}{n} \sum_{i=1}^{n} 1_{(-\infty,x]}(X_{i}),

여기서 1_{(-\infty,x]}(X_i)는 지시 함수이며, X_i \leq x이면 1이고 그렇지 않으면 0이다.

주어진 누적 분포 함수 F(x)에 대한 콜모고로프-스미르노프 통계량은 다음과 같다.

D_n= \sup_x |F_n(x)-F(x)|

여기서 supx는 거리 집합의 상한이다. 직관적으로 이 통계량은 모든 x 값에서 두 분포 함수 사이의 가장 큰 절대 차이를 취한다.

글리벤코-칸텔리 정리에 따르면, 표본이 분포 F(x)에서 나온 경우, n이 무한대로 갈 때 Dn은 거의 확실하게 0으로 수렴한다. 콜모고로프는 이 수렴 속도를 효과적으로 제공함으로써 이 결과를 강화했다(콜모고로프 분포 참조). 돈스커 정리는 훨씬 더 강력한 결과를 제공한다.

실제로 이 통계량은 귀무 가설을 적절하게 기각하기 위해 상대적으로 많은 수의 데이터 포인트가 필요하다(앤더슨-달링 검정 통계량과 같은 다른 적합도 기준과 비교할 때).

## 콜모고로프 분포

[섬네일|600px|콜모고로프 분포의 [확률 밀도 함수|PDF 그림]]

콜모고로프 분포는 다음 확률 변수의 분포이다.

K=\sup_{t\in[0,1]}|B(t)|

여기서 B(t)는 브라운교이다. K의 누적 분포 함수는 다음과 같다.

\begin{align}
\operatorname{Pr}(K\leq x) &= 1-2\sum_{k=1}^\infty (-1)^{k-1} e^{-2k^2 x^2} \\
&=\frac{\sqrt{2\pi}}{x}\sum_{k=1}^\infty e^{-(2k-1)^2\pi^2/(8x^2)},
\end{align}

이는 야코비 세타 함수 \vartheta_{01}(z=0;\tau=2ix^2/\pi)로도 표현될 수 있다. 콜모고로프-스미르노프 검정 통계량의 형식과 귀무 가설 하에서의 점근 분포는 안드레이 콜모고로프가 발표했으며, 분포 표는 니콜라이 스미르노프가 발표했다. 유한 표본에서 검정 통계량 분포에 대한 점화식도 구할 수 있다.

표본이 가설 분포 F(x)에서 나왔다는 귀무 가설 하에,

\sqrt{n}D_n\xrightarrow{n\to\infty}\sup_t |B(F(t))|

분포 수렴이 발생하며, 여기서 B(t)는 브라운교이다. F가 연속이면 귀무 가설 하에 \sqrt{n}D_n은 콜모고로프 분포로 수렴하며, 이는 F에 의존하지 않는다. 이 결과는 콜모고로프 정리로도 알려져 있다.

n이 유한할 때 K의 정확한 CDF에 대한 근사치로서 이 극한의 정확도는 그리 인상적이지 않다. n=1000일 때조차 해당 최대 오차는 약 0.9~\%이며, n=100일 때 이 오차는 2.6~\%로 증가하고, n=10일 때는 전혀 허용할 수 없는 7~\%로 증가한다. 그러나 자코비 세타 함수의 인수에 x 대신
x+\frac{1}{6\sqrt{n}}+ \frac{x-1}{4n}

을 대입하는 매우 간단한 방법으로 이러한 오차는 각각
0.003~\%, 0.027\%, 0.27~\%로 줄어든다. 이러한 정확도는 일반적으로 모든 실제 적용에 충분한 것으로 간주될 것이다.

적합도 검정 또는 콜모고로프-스미르노프 검정은 콜모고로프 분포의 임계값을 사용하여 구성될 수 있다. 이 검정은 n \to\infty.일 때 점근적으로 유효하다. 귀무 가설은 수준 \alpha에서 기각되며,

\sqrt{n}D_n>K_\alpha,\,

여기서 Kα는 다음으로부터 얻어진다.

\operatorname{Pr}(K\leq K_\alpha)=1-\alpha.\,

이 검정의 점근 검정력은 1이다.

임의의 n과 x에 대해 cdf \operatorname{Pr}(D_n \leq x) 또는 그 보수를 계산하는 빠르고 정확한 알고리즘은 다음에서 찾을 수 있다.

* 및는 C 및 Java 코드를 포함하는 연속 영 분포를 위한 것이다.
*는 순수 이산, 혼합 또는 연속 영 분포를 위한 것으로, R 프로젝트 통계 컴퓨팅의 KSgeneral 패키지에 구현되어 있다. 이 패키지는 주어진 표본에 대해 KS 검정 통계량과 p-값도 계산한다. 대체 C++ 구현은 다음에서 구할 수 있다.

### 추정된 매개변수를 사용한 검정

F(x)의 형식이나 매개변수가 데이터 Xi에서 결정되는 경우, 이러한 방식으로 결정된 임계값은 유효하지 않다. 이러한 경우에는 몬테카를로 또는 다른 방법이 필요할 수 있지만, 일부 경우에는 표가 작성되어 있다. 정규 분포 및 지수 분포에 대한 검정 통계량의 필요한 수정 및 임계값에 대한 세부 정보가 게시되었으며, 이후 출판물에는 굼벨 분포도 포함된다. 릴리포스 검정은 정규 분포에 대한 이 특수한 경우를 나타낸다. 로그 변환은 콜모고로프 검정 데이터가 정규 분포에서 나왔다는 가정에 맞지 않는 경우를 극복하는 데 도움이 될 수 있다.

매개변수를 추정할 때는 어떤 추정 방법을 사용해야 하는지에 대한 의문이 생긴다. 일반적으로 최대가능도 방법이 사용되지만, 예를 들어 정규 분포의 경우 MLE는 시그마에 대한 큰 편향 오차를 가지고 있다. 대신 모멘트 적합 또는 KS 최소화를 사용하면 임계값에 큰 영향을 미치고, 검정력에도 어느 정도 영향을 미친다. df = 2인 스튜던트-T 데이터에 대해 KS 검정을 통해 데이터가 정규 분포인지 아닌지를 결정해야 하는 경우, H0(데이터가 정규 분포이므로 스케일에는 표준 편차 사용)에 기반한 ML 추정은 KS 최소화를 통한 적합보다 훨씬 큰 KS 거리를 제공할 것이다. 이 경우 H0를 기각해야 하는데, 이는 MLE의 경우 종종 발생한다. 왜냐하면 T-2 데이터의 표본 표준 편차는 매우 클 수 있지만, KS 최소화를 사용하면 H0를 기각하기에는 여전히 너무 낮은 KS를 얻을 수 있기 때문이다. 스튜던트-T의 경우, MLE 대신 KS 추정치를 사용한 수정된 KS 검정은 KS 검정을 실제로 약간 더 나쁘게 만든다. 그러나 다른 경우에는 이러한 수정된 KS 검정이 약간 더 나은 검정력을 제공한다.

### 이산 및 혼합 영 분포

F가 비감소적이고 우연속적이며 셀 수 있는(무한할 수도 있는) 수의 점프를 가진다는 가정 하에, KS 검정 통계량은 다음과 같이 표현될 수 있다.

D_n= \sup_x |F_n(x)-F(x)| = \sup_{0 \leq t \leq 1} |F_n(F^{-1}(t)) - F(F^{-1}(t))|.

F의 우연속성으로부터 F(F^{-1}(t)) \geq t 및 F^{-1}(F(x)) \leq x 가 성립하며, 따라서 D_{n}의 분포는 영 분포 F에 의존하게 된다. 즉, 연속적인 경우처럼 분포에 독립적이지 않다. 따라서 F가 순수 이산적이거나 혼합일 때 D_{n}의 정확하고 점근적인 분포를 계산하기 위한 빠르고 정확한 방법이 개발되었으며, C++ 및 R 언어의 KSgeneral 패키지에 구현되어 있다. `disc_ks_test()`, `mixed_ks_test()` 및 `cont_ks_test()` 함수는 순수 이산, 혼합 또는 연속 영 분포 및 임의 표본 크기에 대한 KS 검정 통계량과 p-값도 계산한다. 이산 영 분포 및 작은 표본 크기에 대한 KS 검정 및 p-값은에서 R 언어의 dgof 패키지의 일부로 계산된다. SAS `PROC NPAR1WAY`, Stata `ksmirnov`와 같은 주요 통계 패키지는 F(x)가 연속이라는 가정 하에 KS 검정을 구현하는데, 이는 영 분포가 실제로 연속이 아닌 경우 더 보수적이다(Noether63

 참조).

## 2-표본 콜모고로프-스미르노프 검정
섬네일|300px|2-표본 콜모고로프-스미르노프 통계량 그림. 빨간색과 파란색 선은 각각 경험적 분포 함수에 해당하며, 검은색 화살표는 2-표본 KS 통계량이다.

콜모고로프-스미르노프 검정은 두 개의 기초적인 1차원 확률 분포가 다른지 여부를 검정하는 데에도 사용될 수 있다. 이 경우 콜모고로프-스미르노프 통계량은 다음과 같다.

D_{n,m}=\sup_x |F_{1,n}(x)-F_{2,m}(x)|,

여기서 F_{1,n} 및 F_{2,m}은 각각 첫 번째 표본과 두 번째 표본의 경험적 누적 분포 함수이며, \sup는 상한 함수이다.

큰 표본의 경우, 귀무 가설은 수준 \alpha에서 기각된다.

D_{n,m}>c(\alpha)\sqrt{\frac{n + m}{n\cdot m}}.

여기서 n과 m은 각각 첫 번째와 두 번째 표본의 크기이다. c({\alpha}) 값은 가장 일반적인 \alpha 수준에 대해 아래 표에 나와 있다.

그리고 일반적으로 다음으로 주어진다.

c\left(\alpha\right)=\sqrt{-\ln\left(\tfrac{\alpha}{2}\right)\cdot \tfrac{1}{2}},

따라서 조건은 다음과 같다.

D_{n,m}>\sqrt{-\ln\left(\tfrac{\alpha}{2}\right)\cdot \tfrac{1 + \tfrac{m}{n}}{2m}}.

여기서 다시 표본 크기가 클수록 최소 경계가 더 민감해진다. 주어진 표본 크기 비율(예: m=n)의 경우, 최소 경계는 표본 중 하나의 크기에 따라 역제곱근에 비례하여 조정된다.

두 표본 검정은 두 데이터 표본이 동일한 분포에서 왔는지 여부를 확인한다. 이는 공통 분포가 무엇인지(예: 정규 분포인지 아닌지)를 지정하지 않는다. 다시, 임계값 표가 발행되었다. 단변량 콜모고로프-스미르노프 검정의 단점은 두 분포 함수 간의 모든 가능한 유형의 차이에 민감하도록 고안되었기 때문에 검정력이 그리 강하지 않다는 것이다. 일부 사람들은 원래 위치와 스케일을 동시에 비교하기 위해 제안된 쿠코니 검정이 두 분포 함수를 비교할 때 콜모고로프-스미르노프 검정보다 훨씬 더 강력할 수 있다고 주장한다.

2-표본 KS 검정은 경제학에서 비대칭 효과를 감지하고 자연 실험을 연구하는 데 적용되었다.

## 분포 함수의 형태에 대한 신뢰 한계 설정

콜모고로프-스미르노프 검정은 일반적으로 주어진 F(x)가 Fn(x)의 기초 확률 분포인지 여부를 검정하는 데 사용되지만, 이 절차를 역으로 적용하여 F(x) 자체에 대한 신뢰 한계를 제공할 수 있다. 검정 통계량 Dα의 임계값을 P(Dn&nbsp;>&nbsp;Dα) = α가 되도록 선택하면 Fn(x) 주변의 ±Dα 폭의 구간은 확률 1&nbsp;−&nbsp;α로 F(x)를 완전히 포함한다.

## 다차원 콜모고로프-스미르노프 통계량
분포에 독립적인 다변량 콜모고로프-스미르노프 적합도 검정이 후스텔, 페냐, 자마르(1997)에 의해 제안되었다. 이 검정은 로젠블라트 변환을 사용하여 구축된 통계량을 사용하며, 이변량 경우에 이를 계산하는 알고리즘이 개발되었다. 또한 어떤 차원에서도 쉽게 계산할 수 있는 근사 검정도 제시되어 있다.

다변량 데이터에 유사한 검정을 적용하려면 콜모고로프-스미르노프 검정 통계량을 수정해야 한다. 이는 두 결합 누적 분포 함수 간의 최대 차이가 일반적으로 보완 분포 함수 중 어느 하나와의 최대 차이와 같지 않기 때문에 간단하지 않다. 따라서 \Pr(X  또는 \Pr(X  y) 또는 다른 두 가지 가능한 배치 중 어느 것을 사용하는지에 따라 최대 차이가 달라질 것이다. 사용된 검정 결과가 어떤 선택에 의존하지 않아야 한다고 요구할 수 있다.

콜모고로프-스미르노프 통계량을 더 높은 차원으로 일반화하는 한 가지 접근 방식은 두 표본의 cdf를 가능한 모든 순서로 비교하고 결과 KS 통계량 세트 중 가장 큰 값을 취하는 것이다. d차원에서 이러한 순서는 2d − 1개가 있다. 이러한 변형 중 하나는 피콕(Peacock)의 것이며
(3D 버전은 고세트(Gosset)도 참조)
다른 하나는 파사노(Fasano)와 프란체스키니(Franceschini)의 것이다 (비교 및 계산 세부 정보는 로페스 등 참조). 검정 통계량의 임계값은 시뮬레이션을 통해 얻을 수 있지만, 결합 분포의 의존성 구조에 따라 달라진다.

## 구현
콜모고로프-스미르노프 검정은 많은 소프트웨어 프로그램에 구현되어 있다. 대부분은 1-표본 및 2-표본 검정을 모두 구현한다.

* Mathematica에는 KolmogorovSmirnovTest가 있다.
* MATLAB의 Statistics Toolbox에는 1-표본 및 2-표본 콜모고로프-스미르노프 검정을 위한 kstest와 kstest2가 있다.
* R 패키지 "KSgeneral"은 임의의 이산, 혼합 또는 연속 영 분포 하에서 KS 검정 통계량과 p-값을 계산한다.
* R의 통계 기본 패키지는 "stats" 패키지에 ks.test {stats}로 검정을 구현한다.
* SAS는 PROC NPAR1WAY 프로시저에 검정을 구현한다.
* 파이썬에서는 SciPy 패키지가 scipy.stats.kstest 함수에 검정을 구현한다.
* SYSTAT (SPSS Inc., 시카고, 일리노이)
* Java에는 아파치 커먼즈에서 제공하는 이 검정의 구현이 있다.
* KNIME에는 위의 Java 구현을 기반으로 이 검정을 구현하는 노드가 있다.
* Julia에는 함수 ExactOneSampleKSTest(x::AbstractVector{<:Real}, d::UnivariateDistribution)가 포함된 HypothesisTests.jl 패키지가 있다.
* StatsDirect (StatsDirect Ltd, 맨체스터, 영국)은 모든 일반적인 변형을 구현한다.
* Stata (Stata Corporation, 칼리지 스테이션, 텍사스)는 ksmirnov (콜모고로프-스미르노프 분포 동등성 검정) 명령에 검정을 구현한다.
* PSPP는 KOLMOGOROV-SMIRNOV (또는 KS 바로가기 함수 사용)에서 검정을 구현한다.
* Excel용 Real Statistics Resource Pack은 KSCRIT 및 KSPROB로 검정을 실행한다.
## 같이 보기
* 르파주 검정
* 쿠코니 검정
* 쿠이퍼 검정
* 샤피로-윌크 검정
* 앤더슨-달링 검정
* 크라메르-폰 미제스 검정
* 바서슈타인 거리

## 각주

## 추가 자료
* 
* 
* 
* 
* 
* 

## 외부 링크
* 
* 짧은 소개
* KS 검정 설명
* 1-sided 및 2-sided 검정의 자바스크립트 구현
* KS 검정이 있는 온라인 계산기
* 콜모고로프 분포를 계산하고 KS 검정을 수행하는 오픈 소스 C++ 코드 https://web.archive.org/web/20171204072150/http://root.cern.ch/root/html/TMath.html#TMath:KolmogorovProb
* 콜모고로프 분포 평가에 대한 논문; C 구현 포함. 매트랩에서 사용되는 방법이다.
* 2-sided 콜모고로프-스미르노프 분포 계산에 대한 논문; C 또는 Java로 KS 통계량의 cdf 계산.
* 논문 powerlaw: 꼬리가 두꺼운 분포 분석을 위한 파이썬 패키지; Jeff Alstott, Ed Bullmore, Dietmar Plenz. 다른 것들 중에서도 콜모고로프-스미르노프 검정도 수행한다. powerlaw 패키지의 소스 코드 및 설치 프로그램은 PyPi에서 구할 수 있다.

분류:비모수 통계학
분류:통계적 거리