Begin'R
Les statistiques avec R
Navigation
[Retour au sommaire]
# Tests paramétriques d'homogénéité :Objectifs * Mettre en place un test paramétrique d'homogénéité. Le tableau ci-dessous donne, pour chaque test de comparaison, le nom de base à utiliser dans R ainsi que la liste des arguments associés. | Rôle | Commande R | Arguments | Exemple | Exercice | |-------------------|---------------|------------|--------------------------|--------------------| | Comparaison de 2 proportions | `prop.test()` | `x`, `y` | [ici](#compprop) | | | Comparaison de 2 variances | `var.test()` | `x`, `y` | [ici](#homoscedasticite) | [ici](#homosce) | | Comparaison des moyennes de 2 échantillons indépendants avec homoscédasticité | `t.test()` | `x`, `y`, `paired = FALSE`, `var.equal=TRUE` | [ici](#homoscedasticite2) | [ici](#comp_ind_student) | | Comparaison des moyennes de 2 échantillons indépendants avec hétéroscédasticité | `t.test()` | `x`, `y`, `paired = FALSE`, `var.equal=FALSE` | | [ ici ](#comp_ind_Welch) | | Comparaison des moyennes de 2 échantillons appariés | `t.test()` | `x`, `y`, `paired = TRUE` | | [ ici ](#comp_app) | :Remarque Le test de comparaison de deux proportions ne s'applique que dans le cas des grands échantillons. Concernant les différents tests obtenus avec `t.test()`, il est à noter que : - L'argument `paired` doit être associé à une valeur booléenne (`FALSE` par défaut, `TRUE` si les échantillons sont appariés). - L'argument `var.equal` doit lui aussi être associé à une valeur booléenne (`FALSE` par défaut, `TRUE` si les variances des populations dont sont extraits les échantillons peuvent être considérées comme égales). - Lorsque les variances ne sont pas égales (`var.equal = FALSE`), R effectue alors le test de Welch. :Exemple {#compprop, toggle = popup} Sous réserve de validité, on peut utiliser une nouvelle fois la fonction `prop.test()` [présentée lors du test de conformité d'une proportion](caps_7_2_conformite_para.html). Les deux premiers arguments à compléter correspondent respectivement aux effectifs observés (pour chaque échantillon) et aux tailles d'échantillons (sous la forme de vecteurs). Sur un échantillon de 100 produits extraits d'une production $A$, on relève 5 éléments défectueux. Sur un échantillon de 80 produits extraits d'une production $B$, on relève également 10 éléments défectueux. Peut-on considérer qu'une des deux productions est moins fiable que l'autre ? On teste $\mathcal{H}_0:p_1=p_2$ contre $\mathcal{H}_1:p_1 \ne p_2$ où $p_1$ et $p_2$ sont les proportions de produits défectueux respectivement dans les productions $A$ et $B$. Pour utiliser la commande `prop.test()`, on introduit deux vecteurs liés respectivement aux nombres de défectueux et aux tailles d'échantillons. L'utilisation du paramètre `correct=FALSE` nous ramène implicitement aux résultats obtenus avec : $F_1-F_2$ suit la loi $\mathcal{N} \left( 0; \sqrt{\widehat{p}(1-\widehat{p}) (\frac{1}{n_1} + \frac{1}{n_2})} \right) $ où $\widehat{p}$ est une estimation de la proportion d'éléments présentant le caractère étudié dans les deux productions (sous $\mathcal{H}_0:p_1=p_2$). ```r prop.test(c(5, 10), c(100, 80), alternative = "two.sided", correct = FALSE) ``` ``` ## ## 2-sample test for equality of proportions without continuity ## correction ## ## data: c(5, 10) out of c(100, 80) ## X-squared = 3.2727, df = 1, p-value = 0.07044 ## alternative hypothesis: two.sided ## 95 percent confidence interval: ## -0.159123049 0.009123049 ## sample estimates: ## prop 1 prop 2 ## 0.050 0.125 ``` D'après la valeur-$p$ (supérieure à $5 \%$), on ne peut pas conclure que les proportions d'éléments défectueux observées sur ces échantillons sont significativement différentes. La conclusion est la même avec la correction de continuité (présente par défaut). ```r prop.test(c(5, 10), c(100, 80), alternative = "two.sided") ``` ``` ## ## 2-sample test for equality of proportions with continuity correction ## ## data: c(5, 10) out of c(100, 80) ## X-squared = 2.3645, df = 1, p-value = 0.1241 ## alternative hypothesis: two.sided ## 95 percent confidence interval: ## -0.17037305 0.02037305 ## sample estimates: ## prop 1 prop 2 ## 0.050 0.125 ``` :Remarque On peut constater que, par défaut, le test est mis en place avec une correction de continuité. :Exemple {#homoscedasticite, toggle = popup} Pour comparer deux variances, on utilise la fonction R suivante : `var.test(x, y, alternative, conf.level)`. Les deux premiers paramètres correspondent aux données des deux échantillons introduites à l'aide d'un vecteur. On considère deux échantillons d'observations respectives : 5 ; 6 ; 7 ; 8 ; 10 ; 11 et 6 ; 7 ; 9 ; 9 ; 12. Pour tester si les variances sont significativement différentes, on utilise : ```r e <- c(5, 6, 7, 8, 10, 11) f <- c(6, 7, 9, 9, 12) var.test(x = e, y = f, alternative = "two.sided" ) ``` ``` ## ## F test to compare two variances ## ## data: e and f ## F = 1.0126, num df = 5, denom df = 4, p-value = 0.9813 ## alternative hypothesis: true ratio of variances is not equal to 1 ## 95 percent confidence interval: ## 0.1081298 7.4808151 ## sample estimates: ## ratio of variances ## 1.012579 ``` La première ligne de résultats numériques renvoie la réalisation de la statistique de test (ratio des variances estimées que l'on retrouve également en dernière ligne), les degrés de liberté de la loi de Fisher considérée ainsi que la p-value. Comme dans les autres tests, on retrouve également un intervalle de confiance lié au ratio des variances. D'après la valeur-p (supérieure à 5%), on ne rejette pas l'hypothèse selon laquelle les variances sont égales (hypothèse d'homoscédasticité vérifiée). Ce test se réalise sous réserve de [normalité des distributions](caps_6_3_normalite_graphique_quantile_quantile.html) dont sont extraits les échantillons. :Exercice {#homosce, toggle = popup} On souhaite comparer la teneur en eau de la viande de veau pour des animaux ayant suivi des régimes alimentaires différents. Pour chaque série d’animaux, on assimile la teneur en eau (en g pour 100 g de viande) à une variable aléatoire gaussienne. Six animaux ont été livrés en boucherie pour la première série et huit pour la deuxième série. Les valeurs suivantes ont été relevées : - Série I : 68, 70, 70, 72, 72, 74. - Série II : 66, 66, 68, 68, 68, 70, 72, 74. Peut-on considérer que les variances des teneurs en eau des animaux ayant suivi ces deux régimes alimentaires sont différentes ? :Corrigé {#rep_noname4, toggle=collapse, title-display=show} On pose : $\mathcal{H}_0:\sigma^2_1=\sigma^2_2$ contre $\mathcal{H}_1:\sigma^2_1 \ne \sigma^2_2$. ```r S1 <- c(68, 70, 70, 72, 72, 74) S2 <- c(66, 66, 68, 68, 68, 70, 72, 74) var.test(S1, S2, alternative = "two.sided") ``` ``` ## ## F test to compare two variances ## ## data: S1 and S2 ## F = 0.55, num df = 5, denom df = 7, p-value = 0.5287 ## alternative hypothesis: true ratio of variances is not equal to 1 ## 95 percent confidence interval: ## 0.1040635 3.7691916 ## sample estimates: ## ratio of variances ## 0.55 ``` D'après la valeur-$p$ (supérieure à 5%), on ne rejette pas l'hypothèse selon laquelle les variances des teneurs en eau des animaux soumis aux deux régimes alimentaires sont égales (hypothèse d'homoscédasticité vérifiée). :Exemple {#homoscedasticite2, toggle = popup} On considère deux échantillons d'observations respectives : ``` ## [1] 5 6 7 8 10 11 ``` ``` ## [1] 6 7 9 9 12 ``` On admet que les distributions dans les populations dont sont extraits ces échantillons sont gaussiennes et de même variance. Pour tester si les moyennes sont significativement différentes, on est confronté à un test de comparaison de deux moyennes avec des échantillons indépendants et des variances de population égales. On va donc utiliser : ```r ech1 <- c(5, 6, 7, 8, 10, 11) ech2 <- c(6, 7, 9, 9, 12) t.test(x = ech1, y = ech2, alternative = "two.sided", var.equal = TRUE) ``` ``` ## ## Two Sample t-test ## ## data: ech1 and ech2 ## t = -0.54805, df = 9, p-value = 0.597 ## alternative hypothesis: true difference in means is not equal to 0 ## 95 percent confidence interval: ## -3.931192 2.397859 ## sample estimates: ## mean of x mean of y ## 7.833333 8.600000 ``` Il n'est pas nécessaire de compléter l'argument `paired` car, il vaut `FALSE` par défaut. La première ligne de résultats numériques renvoie la réalisation de la statistique du test, le degré de liberté de la loi de Student considérée ainsi que la valeur-$p$. Comme dans les autres tests, on retrouve également un intervalle de confiance lié à la différence des moyennes. Enfin, en dernière ligne sont données les moyennes observées associées aux deux échantillons. D'après la valeur-p (supérieure à 5%), on ne rejette pas l'hypothèse selon laquelle les moyennes sont égales. :Exercice {#comp_ind_student, toggle = popup} On souhaite comparer la teneur en eau de la viande de veau pour des d’animaux ayant suivi des régimes alimentaires différents. Pour chaque série d’animaux, on assimile la teneur en eau (en g pour 100 g de viande) à une variable aléatoire normale. Six animaux ont été livrés en boucherie pour la première série et huit pour la deuxième série. Les valeurs suivantes ont été relevées : - Série I : 68, 70, 70, 72, 72, 74. - Série II : 66, 66, 68, 68, 68, 70, 72, 74. Peut-on considérer les teneurs moyennes en eau différentes ? :Corrigé {#rep_noname5, toggle=collapse, title-display=show} On pose : $\mathcal{H}_0:\mu_1=\mu_2$ contre $\mathcal{H}_1:\mu_1 \ne \mu_2$. D'après l'exercice précédent sur la comparaison de deux variances, on peut considérer les variances égales. L'argument `var.equal` prend donc la valeur `TRUE`. ```r S1 <- c(68, 70, 70, 72, 72, 74) S2 <- c(66, 66, 68, 68, 68, 70, 72, 74) t.test(S1, S2, alternative = "two.sided", var.equal = TRUE) ``` ``` ## ## Two Sample t-test ## ## data: S1 and S2 ## t = 1.4525, df = 12, p-value = 0.172 ## alternative hypothesis: true difference in means is not equal to 0 ## 95 percent confidence interval: ## -0.9999913 4.9999913 ## sample estimates: ## mean of x mean of y ## 71 69 ``` D'après la valeur-$p$ (supérieure à 5%), on ne rejette pas l'hypothèse selon laquelle les teneurs moyennes en eau des animaux soumis aux deux régimes alimentaires sont égales. :Exercice {#comp_ind_Welch, toggle = popup} En admettant que les distributions sont gaussiennes, comparer les notes de deux vins soumis à deux groupes indépendants de dégustateurs sachant que : - le premier vin a obtenu : 13, 13, 14, 15, 15, 15. - le second vin a obtenu : 11, 13, 16, 16, 19. :Corrigé {#rep_noname6, toggle=collapse, title-display=show} ```r vin1 <- c(13, 13, 14, 15, 15, 15) vin2 <- c(11, 13, 16, 16, 19) var.test(vin1, vin2, alternative = "two.sided") ``` ``` ## ## F test to compare two variances ## ## data: vin1 and vin2 ## F = 0.10175, num df = 5, denom df = 4, p-value = 0.02753 ## alternative hypothesis: true ratio of variances is not equal to 1 ## 95 percent confidence interval: ## 0.0108660 0.7517498 ## sample estimates: ## ratio of variances ## 0.1017544 ``` D'après les résultats ci-dessus (valeur-$p$ < 5%), les variances associées à ces deux séries sont significativement différentes. On doit donc effectuer un test de Welch pour comparer les moyennes. On pose : $\mathcal{H}_0: \mu_1 = \mu_2$ et $\mathcal{H}_1: \mu_1 \ne \mu_2$. ```r t.test(vin1, vin2, alternative = "two.sided") ``` ``` ## ## Welch Two Sample t-test ## ## data: vin1 and vin2 ## t = -0.58045, df = 4.6802, p-value = 0.5884 ## alternative hypothesis: true difference in means is not equal to 0 ## 95 percent confidence interval: ## -4.600960 2.934293 ## sample estimates: ## mean of x mean of y ## 14.16667 15.00000 ``` On rappelle que, par défaut, `var.equal` est égale à `FALSE` (variances supposées différentes). D'après les résultats ci-dessus (p-value > 5%), les notes moyennes associées à ces deux séries ne peuvent pas être considérées comme différentes. :Exercice {#comp_app, toggle = popup} Comparer les résultats de deux vins soumis à 5 experts (chaque expert note les deux vins) sachant que : - le premier vin a obtenu : 13, 13, 14, 15, 15. - le second vin a obtenu : 10, 12, 14, 15, 17. :Corrigé {#rep_noname7, toggle=collapse, title-display=show} Dans un tel cas, les échantillons sont appariés (non indépendants). En admettant la [normalité de la distribution des différences](caps_6_3_normalite_graphique_quantile_quantile.html) (entre les deux notes), on est amené à mettre en place un test de Student par paires. Il faut donc préciser `paired = TRUE`. ```r Notes1 <- c(13, 13, 14, 15, 15) Notes2 <- c(10, 12, 14, 15, 17) t.test(Notes1, Notes2, alternative = "two.sided", paired = TRUE) ``` ``` ## ## Paired t-test ## ## data: Notes1 and Notes2 ## t = 0.49237, df = 4, p-value = 0.6483 ## alternative hypothesis: true difference in means is not equal to 0 ## 95 percent confidence interval: ## -1.855595 2.655595 ## sample estimates: ## mean of the differences ## 0.4 ``` D'après les résultats ci-dessus (valeur-$p$ > 5%), les notes moyennes associées à ces deux séries ne sont pas significativement différentes. :Compléments {#complement_student_apparie, toggle = collapse} Le test de Student sur échantillons appariés est équivalent à un [test de Student de conformité sur la moyenne](caps_7_2_conformite_para.html) lorsque l'on travaille sur la différence des deux séries de données. Sous réserve de la [normalité de la différence](caps_6_3_normalite_graphique_quantile_quantile.html), les instructions suivantes permettent de tester l'hypothèse $\mathcal{H}_0 : \mu_d = 0$ contre l'hypothèse $\mathcal{H}_1 : \mu_d \ne 0$, où $\mu_d$ est la moyenne de la différence. ```r Notes1 <- c(13, 13, 14, 15, 15) Notes2 <- c(10, 12, 14, 15, 17) t.test(Notes1 - Notes2, mu = 0, alternative = "two.sided") ``` ``` ## ## One Sample t-test ## ## data: Notes1 - Notes2 ## t = 0.49237, df = 4, p-value = 0.6483 ## alternative hypothesis: true mean is not equal to 0 ## 95 percent confidence interval: ## -1.855595 2.655595 ## sample estimates: ## mean of x ## 0.4 ``` On obtient bien les mêmes résultats que précédemment. :Exercice : Une autre façon de réaliser des tests de comparaisons de variances et moyennes {#exercise_normal, toggle = collapse} On considère les données sur les vins Rouge et Blanc associées aux données du fichier `DonneesVins.csv`. | Jeu de données | Excel | CSV | Présentation | |-----------------|--------|-------------|----------------| | DonneesVins | [](donnees/DonneesVins.xlsx) | [](donnees/DonneesVins.csv) | [](video/DonneesVins.html) | On admet que les deux distributions d'alcool suivent des lois normales. Peut-on considérer que les taux d'alcool moyens observés sur ces deux catégories de vin sont significativement différents ? :Aide {toggle=collapse} On peut constater que, lorsque les données sont organisées dans un fichier tel que `DonneesVins.csv`, il est pratique d'utiliser une formule: **`t.test(variable ~ facteur, data)`** ou **`var.test(variable ~ facteur, data)`**. :Corrigé {#rep_comp_Robin, toggle=collapse, title-display=show} Testons l'égalité des variances en utilisant la fonction `var.test(formula, data, ...)` avec, pour premier argument, une formule du type **` variable ~ facteur `**. ```r donnees = read.csv2("DonneesVins.csv", header = TRUE, stringsAsFactors = TRUE) var.test(Alcool~Couleur, data = donnees, alternative = "two.sided") ``` ``` ## ## F test to compare two variances ## ## data: Alcool by Couleur ## F = 1.4638, num df = 17, denom df = 17, p-value = 0.4402 ## alternative hypothesis: true ratio of variances is not equal to 1 ## 95 percent confidence interval: ## 0.5475802 3.9133009 ## sample estimates: ## ratio of variances ## 1.463846 ``` D'après les résultats ci-dessus (valeur-$p$ voisine de 0.44 > 5%), l'hypothèse d'homoscédasticité des deux populations associées n'est pas rejetée. On peut donc utiliser un test de Student en utilisant, une nouvelle fois, une formule du type **` variable ~ facteur `**. ```r t.test(Alcool~Couleur, data = donnees, alternative = "two.sided", var.equal = TRUE) ``` ``` ## ## Two Sample t-test ## ## data: Alcool by Couleur ## t = 0.33502, df = 34, p-value = 0.7397 ## alternative hypothesis: true difference in means between group Blanc and group Rouge is not equal to 0 ## 95 percent confidence interval: ## -0.7880615 1.0991727 ## sample estimates: ## mean in group Blanc mean in group Rouge ## 12.42778 12.27222 ``` D'après les résultats ci-dessus (valeur-$p$ > 5%), les taux moyens d'alcool observés ne sont pas significativement différents. :Suite des Tests {#tests, toggle=collapse, title-display=hidden} [Introduction : exemple du Khi-deux](caps_7_1_objectifs&intro_chi-deux.html) [Tests de conformité et intervalles de confiance](caps_7_2_conformite_para.html) [Tests d'ajustement à une distribution théorique](caps_7_3_conformite_distrib.html) [Tests paramétriques d'homogénéité](caps_7_4_homogeneite_para.html) [Tests non-paramétriques d'homogénéité](caps_7_5_homogeneite_non_para.html) [Tests d'indépendance de deux variables qualitatives](caps_7_6_indep.html) [Tests de corrélation de deux variables quantitatives](caps_7_7_corr.html) [Résumé](caps_7_8_resume.html)