Test de Kolmogorov-Smirnov

{{#ifeq:||Un article de Ziki, l'encyclopédie libre.|Une page de Ziki, l'encyclopédie libre.}}

Modèle:Voir homonymes {{#invoke:Bandeau|ébauche}} Modèle:Infobox Méthode scientifique

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. Le test de Kolmogorov-Smirnov est par exemple utilisé pour tester la qualité d'un générateur de nombres aléatoires<ref>{{#invoke:Langue|indicationDeLangue}} Donald E. Knuth, The Art of Computer Programming, vol. 2, Modèle:3e, Modèle:Langue, 784 p. Modèle:ISBN, p. 48–55.</ref>.

Principe

Fichier:KS Example.png
Fonction de répartition empirique Fn (en bleu) et fonction de répartition théorique F (rouge).

On modélise une loi donnée par sa fonction de répartition F (voir courbe rouge sur la figure). La fonction de répartition associe à tout x (en abscisses), la probabilité qu'une variable suivant cette loi soit plus petite que x (en ordonnées). Le test consiste alors à comparer la fonction de répartition de la loi (fonction de répartition théorique) à la fonction de répartition empirique Fn (en bleu). Cette dernière est une fonction de répartition obtenue en attribuant la probabilité 1/n à chacun des n éléments de l'échantillon. On mesure alors la différence entre les deux courbes. Si cette différence est inférieure un seuil, alors on décide que l'échantillon provient bien de cette loi donnée. Plus précisément, on rejette l'hypothèse que l'échantillon provienne de la loi s'il y a une valeur de x pour laquelle |Fn(x) - F(x)| est grande.

Définition formelle

Soit <math>X_1,\ldots,X_n</math> n variables iid définies sur un espace de probabilité <math>(\Omega, \mathcal A, \mathbb P)</math>, à valeurs dans <math>\mathbb{R}</math>, avec pour fonction de répartition F. La fonction de répartition empirique <math> F_n </math> de l'échantillon <math> X_1,\ldots,X_n</math> est définie par :

<math>\forall x \in \mathbb R, F_n(x) = \frac{\mathrm{nombre~d'\acute el \acute ements}\,\leq x\,\mathrm{dans~l'\acute echantillon}}{n} = \frac{1}{n} \sum_{i=1}^n \mathbf{1}_{X_i \le x}</math>

où <math>\mathbf{1}_A</math> est la fonction indicatrice de l'événement A.

Notons bien que <math>F_n(x)</math> est une variable aléatoire, car elle dépend des valeurs de l'échantillon <math>X_1,\ldots,X_n</math>. On a la convergence suivante :

<math>

\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(-2c^2r^2)</math> pour toute constante Modèle:Formule. Le terme α(c) vaut 0,05 pour Modèle:Formule.

Remarquons que la limite à droite ne dépend pas de F. Cela découle du fait que <math>\sqrt{n}(F_n(x)-F(x))</math> converge en loi vers un pont brownien changé de temps par l'inverse FModèle:-1 de F. La série α(c) 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 fonctions de répartitions sont continues.

On peut aussi considérer <math>\max_x (F_n(x)-F(x))</math> et <math>\max_x (F(x)-F_n(x))</math>.

Mise en œuvre

  • ks.test avec R.
  • scipy.stats.kstest avec Python pour déterminer si un échantillon suit une loi donnée
  • scipy.stats.ks_2samp avec Python pour déterminer si deux échantillons suivent la même loi de distributions
  • ksmirnov avec Stata

Voir aussi

Références

Notes et références

Modèle:Références

Liens externes

  • Modèle:Lien web
  • Exemple de table : http://dlc.erieri.com/onlinetextbook/index.cfm?fuseaction=textbook.appendix&FileName=Table7

Modèle:Palette Modèle:Portail