Test de Kolmogorov-Smirnov
|
|
Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.
|
En statistiques, le test de Kolmogorov-Smirnov est un test d'hypothèse utilisé pour déterminer si un échantillon suit bien une loi donnée connue par sa fonction de répartition continue, ou bien si deux échantillons suivent la même loi.
Sommaire |
Principe [modifier]
Ce test repose sur les propriétés des fonctions de répartition empiriques : si
est un échantillon de
variables aléatoires indépendantes à valeurs réelles, alors la fonction de répartition empirique de cet échantillon est définie par
avec 
La fonction de répartition empirique est un processus qui prend ses valeurs dans l'espace des fonctions croissantes comprises entre
et
. Grâce à ses propriétés, on a la convergence suivante :
pour toute constante
. Le terme
vaut
pour
. Remarquons que la limite à droite ne dépend pas de
. Cela découle du fait que
converge en loi vers un pont brownien changé de temps par l'inverse
de
. La série
se déduit des propriétés de ce dernier processus.
Il est ainsi facile de proposer un test d'hypothèse pour décider si un échantillon provient bien d'une loi donnée, ou si deux échantillons ont la même loi, lorsque leurs fonction de répartitions sont continues.
On peut aussi considérer
et
.
Le test de Kolmogorov-Smirnov est par exemple utilisé pour tester la qualité d'un générateur de nombres aléatoires[1].
Exemple [modifier]
On illustre le test en simulant trois variables aléatoires: x et y de loi normale, z de loi uniforme. On applique ensuite le test de même distribution sur les trois paires puis le test d'adéquation à une distribution connue, en utilisant la fonction ks.test() du logiciel libre de statistiques R.
Génération de variables aléatoires x, y et z [modifier]
x <- rnorm(50) #Simulation de 50 observations d'une loi normale y <- rnorm(40) #Simulation de 40 observations d'une loi normale z <- runif(30) #Simulation de 30 observations d'une loi uniforme
Test d'adéquation de distribution de deux échantillons [modifier]
Test de x et y
| Résultat affiché | Code R |
|---|---|
|
Two-sample Kolmogorov-Smirnov test data: x and y D = 0.135, p-value = 0.7652 alternative hypothesis: two-sided |
ks.test(x, y) |
Si l'hypothèse nulle est vraie (c'est-à-dire que les deux échantillons proviennent d'une même loi), alors la probabilité d'observer une statistique
autant éloignée de 0 (qui correspondrait à une parfaite adéquation des deux échantillons) ou plus éloignée, vaut 0.7 (les chiffres obtenus en reproduisant l'exemple peuvent varier!).
Test de x et z
| Résultat affiché | Code R |
|---|---|
|
Two-sample Kolmogorov-Smirnov test data: x and z D = 0.48, p-value = 0.0002033 alternative hypothesis: two-sided |
ks.test(x, z) |
Si l'hypothèse nulle est vraie (c'est-à-dire que les deux échantillons x et z proviennent d'une même loi), alors la probabilité d'observer une statistique
autant éloignée de 0 (qui correspondrait à une parfaite adéquation des deux échantillons) ou plus éloignée, est extrêmement petite et vaut moins de 0,1 %. Il s'agit donc d'un cas très improbable (il est très rare que
soit si grand si l'hypothèse nulle est vraie) qui nous incite à rejeter l'hypothèse de même distribution.
Test de y et z
| Résultat affiché | Code R |
|---|---|
|
Two-sample Kolmogorov-Smirnov test data: y and z D = 0.55, p-value = 2.889e-05 alternative hypothesis: two-sided |
ks.test(y, z) |
Si l'hypothèse nulle est vraie (c'est-à-dire que les deux échantillons y et z proviennent d'une même loi), alors la probabilité d'observer une statistique
autant éloignée de 0 (qui correspondrait à une parfaite adéquation des deux échantillons) ou plus éloignée, est extrêmement petite et vaut moins de 0,1 %. Il s'agit donc d'un cas très improbable (il est très rare que
soit si grand si l'hypothèse nulle est vraie) qui nous incite à rejeter l'hypothèse de même distribution.
Test d'adéquation d'un échantillon à une distribution connue [modifier]
Test si x suit une loi normale
| Résultat affiché | Code R |
|---|---|
|
One-sample Kolmogorov-Smirnov test data: x D = 0.0824, p-value = 0.8586 alternative hypothesis: two-sided |
ks.test(x, "pnorm") |
La probabilité est ici de 80 %, on ne rejette donc pas l'hypothèse (qui est vraie puisque x est généré selon une loi normale) que x suit une loi normale.
Test si x suit une loi uniforme
| Résultat affiché | Code R |
|---|---|
|
One-sample Kolmogorov-Smirnov test data: x D = 0.5501, p-value = 1.033e-14 alternative hypothesis: two-sided |
ks.test(x, "punif") |
La probabilité est ici de moins de 0,01 %, on rejette donc l'hypothèse (qui est fausse puisque x est généré selon une loi normale) que x suit une loi uniforme.
Voir aussi [modifier]
- Andreï Kolmogorov
- Vladimir Smirnov
- Tests de normalité
- Test de Jarque Bera
- Test de Kuiper
- Test de Shapiro-Wilk
- Test d'Anderson-Darling
- Critère de Cramér-von-Mises
Références [modifier]
- (en) Galen R. Shorack et Jon A. Wellner, Empirical Processes With Applications to Statistics, Philadelphie, Society for Industrial & Applied Mathematics, 4 septembre 2009, 998 p. (ISBN 978-0-89871-684-9) (LCCN 2009025143).
- (en) David Williams, Weighing the Odds: a Course in Probability and Statistics, Cambridge University Press, 2001, 548 p. (ISBN 0-521-80356-X).
Notes [modifier]
- (en) Donald E. Knuth, The Art of Computer Programming, vol. 2, 3e éd., Addison-Wesley Professional, 784 p. (ISBN 0-201-89684-2), p. 48–55.
Liens externes [modifier]
- Calcul de la table de Smirnov-Kolmogorov (en anglais) : http://www.octave.org/octave-lists/archive/octave-sources.2003/msg00031.html
- Exemple de table : http://www.eridlc.com/onlinetextbook/appendix/table7.htm
![\mathbb{P}\left[
\sup_{x} |F_n(x)-F(x)|>\frac{c}{\sqrt{n}}
\right]\xrightarrow[n\to\infty]{} \alpha(c)=
2\sum_{r=1}^{+\infty} (-1)^{r-1}\exp(-2r^2c^2)](http://upload.wikimedia.org/math/e/d/4/ed4fd45001d1ddb04073be8735139cf5.png)