Begin'R
Les statistiques avec R
Navigation
[Retour au sommaire]
# Tests d'indépendance de deux variables qualitatives :Objectifs Tester l'indépendance de deux variables qualitatives à partir d'un tableau de contingence. Afin d'étudier la dépendance (ou l'indépendance) de deux variables qualitatives, une première étape peut être d'établir un tableau de contingence et d'en représenter le contenu à l'aide de graphiques adaptés (un diagramme en barres par exemple). Il est également possible de tester s'il y a une dépendance significative à l'aide de l'un des deux tests suivants. | Rôle | Commande R | Exemple | Exercice | |:------------:|:-------------:|:-------:|:-----------------------------:| | Khi-2 | `chisq.test()` | [ici](#exemple_khideux) | [ici](#exo_khideux) | | Fisher exact | `fisher.test()` | [ici](#exemple_test_fisher) | [ici](#exo_test_fisher) | :Exemple {#exemple_khideux, toggle = popup} L'exemple ci-dessous considère les données issues de l'étude i-Share associées aux données [DonneesIShare.csv](donnees/DonneesIShare.csv) pour tester l'hypothèse selon laquelle la situation économique de la famille dépend du niveau d'études des parents (variables `situations` et `etudes`). ```r donnees <- read.csv2("DonneesIShare.csv", header = TRUE, stringsAsFactors = TRUE) ``` Le tableau de contingence s'obtient en utilisant ```r tableau <- table(donnees[, c("situation", "etudes")]) ``` mais il est plus simple d'utiliser le code ci-dessous : ```r test <- chisq.test(donnees$situation, donnees$etudes) test ``` ``` ## ## Pearson's Chi-squared test ## ## data: donnees$situation and donnees$etudes ## X-squared = 1006.3, df = 2, p-value < 2.2e-16 ``` La valeur-$p$ est inférieure à `5 %` (voisine de `0`) donc, au vu de ces résultats, la situation économique de la famille dépend du niveau d'étude des deux parents. :Remarque : à propos des effectifs attendus (ou théoriques) {#Rq_expected,toggle=collapse} Il faut noter que l'utilisation du test du Khi2 exige la vérification de conditions d'applications. Outre l'indépendance des observations, une seconde condition permet d'assurer la convergence de la statistique de test vers une loi du Khi2. Cette condition porte sur les effectifs attendus ou théoriques, c'est à dire sur les effectifs auxquels on pourrait s'attendre sous l'hypothèse $\mathcal{H}_0$ d'indépendance entre les deux variables. Ils doivent être suffisamment grands (typiquement, supérieurs à `5`). Ces effectifs attendus peuvent être examinés après réalisation du test, à l'aide du champ `expected` de l'objet retourné par la fonction `chisq.test` : ```r test$expected ``` ``` ## donnees$etudes ## donnees$situation Au moins 1 etudes sup Autre ## Confortable 219.096 496.904 ## Correcte 1027.242 2329.758 ## Difficile 283.662 643.338 ``` Dans le cas traité, tous les effectifs attendus sont largement supérieurs à `5`. Le test du Khi2 peut être utilisé et interprété. :Exercice {#exo_khideux, toggle = popup} Cette étude porte sur le bien-être de canards d'élevage afin d'analyser l'effet éventuel du type de cage utilisé sur la formation de blessures. Les données relevées sont les suivantes : ```r tabCont <- matrix(data = c(69, 105, 46, 42, 5, 3), nrow = 3, byrow = TRUE) rownames(tabCont) <- c("Aucune blessure", "Blessure legère", "Blessure critique") colnames(tabCont) <- c("Cage metallique", "Cage plastique") print(tabCont) ``` ``` ## Cage metallique Cage plastique ## Aucune blessure 69 105 ## Blessure legère 46 42 ## Blessure critique 5 3 ``` Etablir si les différences observées sont significatives. :Corrigé {#corrige_khi2, toggle=collapse, title-display=show} ```r test <- chisq.test(tabCont) print(test) ``` ``` ## Warning in chisq.test(tabCont): Chi-squared approximation may be incorrect ``` ``` ## ## Pearson's Chi-squared test ## ## data: tabCont ## X-squared = 4.8567, df = 2, p-value = 0.08818 ``` Un avertissement est lancé par la fonction. Il indique que la convergence vers une loi du Khi2 n'est pas garantie. L'examen des effectifs attendus permet de constater qu'ils ne sont pas tous supérieurs à `5`. ```r test$expected ``` ``` ## Cage metallique Cage plastique ## Aucune blessure 77.333333 96.666667 ## Blessure legère 39.111111 48.888889 ## Blessure critique 3.555556 4.444444 ``` Il conviendrait dans ce cas, soit de regrouper des catégories (par exemple ici, les blessures légères et critiques) ou d'utiliser un autre test : le test exact de Fisher. :Exemple {#exemple_test_fisher, toggle = popup} Le test exact de Fisher, à la différence du test du Khi2, ne dispose pas de conditions d'application particulières sur les effectifs attendus (théoriques). Cet exemple s'intéresse à la présence d'un caractère qualitatif sur deux populations à partir d'observations sur deux échantillons de taille `50`. Les données observées sont les suivantes : | | Échantillon 1 | Échantillon 2 | |----------|---------------|---------------| | Présence | 20 | 26 | | Absence | 30 | 24 | Un test de Fisher est mis en place afin de déterminer si la fréquence d'apparition du caractère est différente selon la population. Pour cela, la fonction `fisher.test()` est appliquée sur le tableau de contingence : ```r tableau <- matrix(c(20, 30, 26, 24), nrow = 2, byrow = FALSE) fisher.test(tableau) ``` ``` ## ## Fisher's Exact Test for Count Data ## ## data: tableau ## p-value = 0.3158 ## alternative hypothesis: true odds ratio is not equal to 1 ## 95 percent confidence interval: ## 0.2582255 1.4615461 ## sample estimates: ## odds ratio ## 0.6184261 ``` La valeur-$p$ est supérieure à `5 %` (voisine de 0.32) donc, au vu de ces résultats, l’hypothèse nulle ne peut pas être rejetée. La fréquence de la présence du caractère ne diffère pas selon la population. Des informations complémentaires sont affichées ici comme la statistique `odds-ratio` car le tableau de contingence est de dimension $2\times 2$. Pour toute autre dimension, ces informations (non pertinentes) ne sont pas fournies. :Exercice {#exo_test_fisher, toggle = popup} Cette exercice reprend l'étude portant sur le bien-être de canards d'élevage afin d'analyser l'effet éventuel du type de cage utilisé sur la formation de blessures. Les données relevées sont les suivantes : ```r tabCont <- matrix(data = c(69, 105, 46, 42, 5, 3), nrow = 3, byrow = TRUE) rownames(tabCont) <- c("Aucune blessure", "Blessure legère", "Blessure critique") colnames(tabCont) <- c("Cage metallique", "Cage plastique") print(tabCont) ``` ``` ## Cage metallique Cage plastique ## Aucune blessure 69 105 ## Blessure legère 46 42 ## Blessure critique 5 3 ``` A l'aide du test de Fisher exact, établir si les différences observées sont significatives. :Corrigé {#corrige_test_fisher, toggle=collapse, title-display=show} ```r test <- fisher.test(tabCont) print(test) ``` ``` ## ## Fisher's Exact Test for Count Data ## ## data: tabCont ## p-value = 0.08647 ## alternative hypothesis: two.sided ``` La probabilité n'est pas suffisamment faible (`p-value = 0.08647`) pour pouvoir conclure à un effet significatif du type de cage sur le nombre de blessures. :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)