L'objectif
Dans les travaux de modélisation que le data analyst sera amené à traiter, il y a aura régulièrement des hypothèses sur des lois de probabilité qu'il lui faudra vérifier.
Il existe de nombreux tests pour vérifier qu'un échantillon suit ou non une loi de probabilité donnée, on en donne ici deux représentants, un dans le cas discret, le test dit du Khi-deux, et un dans le cas continu, le test de Kolmogorov Smirnov.
Si on reprend nos deux exemples introductifs, la loi de probabilité était acquise dans le premier cas (loi de Bernoulli) tandis que dans le second cas on a supposé que l'échantillon était potentiellement gaussien. Cette dernière hypothèse peut tout à fait être testée ; si Kolmogorov-Smirnov est utilisable (et présenté ici car plutôt intuitif), il nous faut reconnaître que l'on utilise souvent d'autres tests comme celui de Shapiro-Wilk (non présenté ici).
Le test du Khi-deux
L'idée
On considère un échantillon dont la loi de probabilité est discrète, avec un nombre de valeurs potentielles finies (si la loi n'est pas de support borné, il suffit de regrouper les valeurs en queue, de probabilité plus faible).
Prenons un exemple simple, le lancer d'un dé à 6 faces. Pour savoir s'il est équilibré, il nous faudrait idéalement vérifier que la probabilité d'obtenir la face 1 vaut 16, ... , la probabilité d'obtenir la face 6 vaut 16. Le test du Khi-deux nous simplifie la tâche car il permet de regrouper ces six tests élémentaires. Pour cela on considère une (pseudo-)distance entre les probabilités estimées (que sont les fréquences empiriques) et les valeurs testées : plus cette quantité sera grande, plus on sera enclin à rejeter l'hypothèse que le dé est équilibré.
Le test
On suppose qu'on dispose de n variables aléatoires Xi discrètes, à valeurs dans {a1,…,ak}, indépendantes et de même loi caractérisée par p=(p1,…,pk) où pi=P(X=ai).
On souhaite tester :
où p0=(p01,…,p0k) est connue.
On utilise à cet effet le test du Khi-deux avec comme statistique :
.
ˆpi est égal à la fréquence empirique de la valeur ai.
La loi asymptotique de ξn sous H0 est connue, il s'agit d'une loi du Khi-deux à k−1 degrés de liberté. On prend donc comme décision, pour un niveau de test α :
le rejet de H0 si ξn>χ2k−1,1−α ,
le non-rejet de H0 si ξn≤χ2k−1,1−α .
Le coin R : exemple des dés de Weldon
Weldon a réalisé n=26306 lancers de 12 dés à 6 faces et a comptabilisé, à chaque lancer, le nombre de dés indiquant soit 5 soit 6. Il a obtenu les résultats suivants :
Nb de 5 ou 6 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
Effectif | 185 | 1149 | 3265 | 5475 | 6114 | 5194 | 3067 | 1331 | 403 | 105 | 14 | 4 | 0 |
Soit Xi la v.a.r. à valeurs dans {0,…,12} désignant le nombre de faces comportant un cinq ou un six lors du i -ème lancer.
Dans le cas où les dés sont équilibrés : Xi∼B(13) .
On teste si les dés sont équilibrés :
n <- c(185,1149,3265,5475,6114,5194,3067,1331,403,105,14,4,0)
p0 <- dbinom(0:12,12,1/3)
chisq.test(n,p=p0)
## Warning in chisq.test(n, p = p0): Chi-squared approximation may be ## incorrect ## ## Results of Hypothesis Test ## -------------------------- ## ## Alternative Hypothesis: ## ## Test Name: Chi-squared test for given probabilities ## ## Data: n ## ## Test Statistic: X-squared = 41.31222 ## ## Test Statistic Parameter: df = 12 ## ## P-value: 4.344864e-05
Le test n’est pas valide car les effectifs ne sont pas suffisants pour les valeurs 10, 11 et 12. On agrège ces modalités et on relance les calculs :
n <- c(185,1149,3265,5475,6114,5194,3067,1331,403,105,18)
p0 <- c(dbinom(0:9,12,1/3),sum(dbinom(10:12,12,1/3)))
chisq.test(n,p=p0)
## ## Results of Hypothesis Test ## -------------------------- ## ## Alternative Hypothesis: ## ## Test Name: Chi-squared test for given probabilities ## ## Data: n ## ## Test Statistic: X-squared = 35.4943 ## ## Test Statistic Parameter: df = 10 ## ## P-value: 0.0001027878
On rejette très largement l’hypothèse de dés équilibrés au niveau de test 5%.
Le test de Kolmogorov Smirnov
L'idée
On considère un échantillon dont la loi de probabilité est continue.
Revenons à notre exemple de la consommation d'essence. Pour évaluer si cet échantillon peut être considéré comme gaussien, on peut étudier l'écart entre la fonction de répartition d'une loi normale et celle estimée de notre échantillon : la fonction de répartition empirique !
Plus cette quantité est grande, plus on est enclin à rejeter l'hypothèse comme quoi l'échantillon est gaussien. Le test du Kolmogorov-Smirnov, qui permet de tester toute loi de probabilité, repose sur l'écart maximum observé entre les deux fonctions de répartition, l'empirique et la théorique testée. La loi de cette statistique est toujours la même quelle que soit la loi testée, et est connue asymptotiquement : on peut donc réaliser sans souci un test d'adéquation.
Le test
Soit (X1,…,Xn) un échantillon i.i.d de même loi que X admettant F comme fonction de répartition.
On souhaite tester :
où F0 est connue.
On utilise à cet effet le test de Kolmogorov-Smirnov avec comme statistique :
où Femp est la fonction de répartition empirique de l'échantillon :
La statistique de test Dn est basée sur la distance maximale entre la fonction de répartition empirique de l'échantillon, estimation de sa fonction de répartition, et F0.
La loi asymptotique de Dn sous H0 est connue. Son équation, pas très explicite, n'est pas donnée ici ; elle est néanmoins implémentée dans les logiciels et permet de déterminer la p-valeur, utilisée en pratique pour la prise de décision.
Le coin R : exemple de la consommation d'essence
On peut tester l’adéquation de la consommation d’essence à une loi normale à l’aide de Kolmogorov-Smirnov :
ks.test(essence$conso,"pnorm",mean=mean(essence$conso),sd=sd(essence$conso))
## Warning in ks.test(essence$conso, "pnorm", mean = mean(essence$conso), sd ## = sd(essence$conso)): ties should not be present for the Kolmogorov-Smirnov ## test ## ## Results of Hypothesis Test ## -------------------------- ## ## Alternative Hypothesis: two-sided ## ## Test Name: One-sample Kolmogorov-Smirnov test ## ## Data: essence$conso ## ## Test Statistic: D = 0.04830966 ## ## P-value: 0.9262283
On ne peut donc pas rejeter l’hypothèse de normalité au niveau de test 5%.
On aurait également pu lancer un test de Shapiro-Wilk :
shapiro.test(essence$conso)
## ## Results of Hypothesis Test ## -------------------------- ## ## Alternative Hypothesis: ## ## Test Name: Shapiro-Wilk normality test ## ## Data: essence$conso ## ## Test Statistic: W = 0.9871523 ## ## P-value: 0.2743285
Résumons !
Au cours de cette partie 4, nous avons vu beaucoup de tests statistiques différents. Voici un petit résumé des différents types de tests que nous avons vu :
Tests sur les paramètres de la loi d'un échantillon :
sur une proportion,
sur une moyenne,
sur une variance.
Test de comparaison de deux échantillons (gaussiens).
Tests d'adéquation à une loi :
dans le cas discret : test du Khi-deux.
dans le cas continu : test de Kolmogorov-Smirnov.