Kolmogorovov-Smirnovov test

**Kolmogorovov-Smirnovov test** (alebo skrátene **K-S test**) je v teórii pravdepodobnosti a matematickej štatistike neparametrický test. Jeho testovacia štatistika sleduje najväčšiu odchýlku medzi teoretickou distribučnou funkciou (ktorú označujeme F(x)) a empirickou distribučnou funkciou (ktorá sa označuje F_n(x)), respektíve medzi dvoma empirickými distribučnými funkciami. Empirickú distribučnú funkciu získame z náhodného výberu.

Týmto testom testujeme, či jednorozmerná náhodná veličina má predpokladané, čiže teoretické rozdelenie. V takomto prípade hovoríme o jednovýberovom teste. Rovnako môžeme testovať, či dve jednorozmerné náhodné veličiny pochádzajú z rovnakého pravdepodobnostného rozdelenia (dvojvýberový test). Test nevie určiť, z akého rozdelenia náhodné veličiny pochádzajú, poskytne iba informáciu, či pochádzajú z rovnakého alebo odlišného rozdelenia pravdepodobnosti.

Kolmogorovov-Smirnovov test sa používa v prípade, že náhodný výber X_1, \cdots, X_n pochádza zo spojitého rozdelenia s distribučnou funkciou F(x) (dôležitý predpoklad). V prípade, že n (rozsah výberu) je nepostačujúce, teda je malé, používa sa tento test namiesto chí-kvadrát testu.

Test je pomenovaný podľa dvoch významných ruských matematikov Kolmogorova a Smirnova.

## Testovacia štatistika a hypotéza
Empirická distribučná funkcia F_n(x) pre n nezávislých, rovnako rozdelených náhodných veličín X_i, kde i = 1, \cdots, n, je definovaná nasledovne:

:F_n(x)={1 \over n}\sum_{i=1}^n I_{X_i\leq x}

kde I_{X_i\leq x} je charakteristická (indikátorová) funkcia, ktorá nadobúda hodnotu 1, ak X_i\leq x a hodnotu 0 v inom prípade.

Kolmogorovova-Smirnovova testovacia štatistika má potom nasledovný tvar:

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

kde symbol *sup* označuje suprémum.

## Kolmogorovove rozdelenie
Náhodná premenná K, ktorá je definovaná nasledovným vzťahom:

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

má Kolmogorovove rozdelenie, kde B(t) je tzv. Brownov most. Distribučná funkcia premennej K je nasledovná:

:\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)}.

## Jednovýberový Kolmogorovov–Smirnovov test
Testovaná hypotéza je v tomto prípade nasledovná:
:H_0: Náhodná veličina má predpokladané (teoretické) rozdelenie.
:H_1: Náhodná veličina nemá predpokladané (teoretické) rozdelenie.

Náhodné premenné definované vzťahom \sqrt{n}D_n konvergujú podľa distribučnej funkcie k známemu asymptotickému rozdeleniu:

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

kde B(t) označuje opäť tzv. Brownom most.

Kolmogorovov–Smirnovov test pri rozhodovaní o tom, ktorú hypotézu zamietne, využíva kritické hodnoty Kolmogorovovho rozdelenia. Test zamieta nulovú hypotézu na hladine významnosti \alpha, ak:

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

kde K_{\alpha} je také, že platí:

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

## Dvojvýberový Kolmogorovov–Smirnovov test
Testovaná hypotéza je v tomto prípade nasledovná:
:H_0: Dve jednorozmerné náhodné premenné pochádzajú z rovnakého pravdepodobnostného rozdelenia.
:H_1: Dve jednorozmerné náhodné premenné nepochádzajú z rovnakého pravdepodobnostného rozdelenia.

Dvojvýberový Kolmogorovov–Smirnovov test teda overuje situáciu, či dve jednorozmerné náhodné premenné pochádzajú z rovnakého pravdepodobnostného rozdelenia. V takomto prípade vyzerá Kolmogorovova-Smornovova testovacia štatistika nasledovne:

:D_{n_1,n_2}=\sup_x |F_{1,n_1}(x)-F_{2,n_2}(x)|

kde F_{1,n_1}(x) a F_{2,n_2}(x) sú empirické distribučné funkcie prvého a druhého náhodného výberu. Test zamieta nulovú hypotézu na hladine významnosti \alpha, ak:

:\sqrt{\frac{n_1 n_2}{n_1 + n_2}}D_{n_1,n_2}>K_\alpha

## Príklad testu
Jednoduchý príklad na Kolmogorovov-Smirnovov test sa dá ukázať pomocou matematického programu R. Tento test je v programe už zabudovaný a predpis je nasledovný: `ks.test`.

### Jednovýberový test
V programe `R` si vygenerujeme náhodný výber z normálneho rozdelenia pomocou príkazu `rnorm(.)` (a necháme si tento výber vypísať). Následne môžeme pomocou Kolmogorovovho-Smirnovovho testu otestovať, či tento náhodný výber pochádza z normálneho rozdelenia. Výstupom testu je niekoľko informácií:
* *D* označuje testovaciu štatistiku
* *p-value* je p-hodnota, číslo vo výstupe je uvedené v desatinných číslach, nie v percentách. Na základe nej sa rozhoduje, ktorá hypotéza sa zamietne. Pokiaľ je p-hodnota menšia ako 5% (v prípade, že testujeme na tejto hladine významnosti), tak zamietame hypotézu H_0. Naopak, pokiaľ je p-hodnota vyššia ako 5%, tak zamietame hypotézu H_1.

V tomto prípade vyšla p-hodnota 0.507, čo je 50,7%, a teda zamietame hypotézu H_1, následkom čoho možno tvrdiť, že daný náhodný výber pochádza z teoretického, teda v tomto prípade normálneho rozdelenia.


```rsplus
> nahodny_vyber <- rnorm(30)
> nahodny_vyber
 [1]  1.19888025 -1.51273315 -0.03366925 -1.44443822 -0.31805864 -1.69239139
 [7] -0.06970566 -1.67015816  0.37471991  0.15004197 -1.22619596 -2.46564405
[13]  0.16325695  0.81895068  0.25471847 -0.24046811 -0.17076473  0.85611273
[19]  0.02941219  0.59442116 -0.98264278 -0.65619480  0.92143542  0.31796338
[25]  0.50684453  0.63747641 -0.77462771  0.11887193 -1.06427097  0.80255513
> 
> ks.test(nahodny_vyber, pnorm)

        One-sample Kolmogorov-Smirnov test

data:  nahodny_vyber 
D = 0.1451, p-value = 0.507
alternative hypothesis: two-sided
```


Pokiaľ by sme tento istý náhodný výber porovnávali s inou teoretickou distribučnou funkciou, napríklad s distribučnou funkciou rovnomerného rozdelenia, tak p-hodnota bude 1.409e-07, čo je 1,409.10^{-7}, teda vyjadrené v percentách to bude 1,409.10^{-5}. Táto hodnota je výrazne menšia ako 5%, a teda hypotézu H_0 zamietame.


```rsplus
> ks.test(nahodny_vyber, punif)

        One-sample Kolmogorov-Smirnov test

data:  nahodny_vyber 
D = 0.5039, p-value = 1.409e-07
alternative hypothesis: two-sided
```


### Dvojvýberový test
Tentoraz si v programe `R` vygenerujeme dva náhodné výbery – jeden z normálneho rozdelenia pomocou príkazu `rnorm(.)` a druhý z rovnomerného rozdelenia pomocou príkazu `runif(.)`. Následne budeme pomocou Kolmogorovovho-Smirnovovho testu testovať, či tieto dva náhodné výbery pochádzajú z rovnakého rozdelenia. Výstupom sú opäť tie isté informácie ako pri jednovýberovom teste.
Z testu vidíme, že p-hodnota vyšla rovná 0.001826, čo je 0.1826%. Táto hodnota je teda menej ako 5%, a teda hypotézu H_0 zamietame, následkom čoho sa dá tvrdiť, že tieto dva náhodné výbery nepochádzajú z rovnakého rozdelenia.


```rsplus
> vyber1 <- rnorm(50)
> vyber1
 [1]  0.529808452  1.984421774  0.967890820 -0.009851542  0.957859203
 [6]  0.508594105 -0.006812904 -0.219980494 -0.288870208  0.269138799
[11]  1.292500229  0.026582429  0.578625374 -0.439623986  0.696602281
[16]  0.360686099  1.238492593 -1.636362597 -1.188028910  2.252744940
[21] -0.909075651  0.512017326 -1.098583641  0.999292652  1.778016379
[26]  0.795499677 -1.077792032 -0.915389384 -0.106071582 -0.111512499
[31] -1.364847405  0.186406313 -0.091445138 -1.324561689  1.152640984
[36]  0.318170126 -0.431556425 -1.255561718  0.425081752  0.641398937
[41]  1.101968147  0.883650217  0.099955812  0.856377285  0.248175014
[46] -0.920281692 -0.056454711 -0.085295739  1.502253419  0.598325297
> vyber2 <- runif(30)
> vyber2
 [1] 0.09237699 0.38505380 0.27608514 0.58043327 0.51327622 0.66636661
 [7] 0.95383317 0.43125163 0.81681833 0.19769616 0.52809416 0.36984808
[13] 0.85963545 0.29324735 0.26970567 0.02132132 0.52460898 0.65868122
[19] 0.23952377 0.01522186 0.13488495 0.41358348 0.80082742 0.58836133
[25] 0.11895595 0.70033187 0.87048381 0.10687764 0.15342605 0.82152792
> ks.test(vyber1, vyber2)

        Two-sample Kolmogorov-Smirnov test

data:  vyber1 and vyber2 
D = 0.42, p-value = 0.001826
alternative hypothesis: two-sided
```


## Zdroj a referencie
* 
* 
* 
* knižnica a pomocník programu R http://127.0.0.1:12060/library/stats/html/ks.test.html

Kategória:Matematická štatistika