Référence : l’excellent site d’Antoine Massé https://sites.google.com/site/rgraphiques
Le \(\chi^{2}\) (synonymes X², Chi2, Khi2, Chi², Khi²) permet de comparer des répartitions d’effectifs. On distingue :
le \(\chi^{2}\) de conformité qui permet de comparer un effectif (ou une fréquence) à une valeur théorique attendue.
les \(\chi^{2}\) d’homogénéité et d’indépendance qui permettent de voir si un effectif peut être dû au seul hasard.
Définition du \(\chi^{2}\) de conformité
Le \(\chi^{2}\) de conformité permet de savoir s’il y a correspondance entre la théorie et une répartition observée. Le test du \(\chi^{2}\) permet donc de voir si un échantillon est conforme à la théorie ou s’il en diffère significativement.
L’hypothèse nulle (\(H_{0}\)) est : La distribution observée est conforme à la distribution théorique choisie. Le résultat du Chi² de conformité permet de rejeter ou non \(H_{0}\) au risque \(\alpha\).
Résultats
La p-value c’est la probabilité pour un modèle statistique donné sous l’hypothèse nulle d’obtenir la même valeur ou une valeur encore plus extrême que celle observée.
La p-value donne la probabilité de non-validation de \(H_{0}\) plus la p-value est petite, plus la théorie et l’observation diffèrent.Source
X-square, cette valeur classique renvoyée par un test de Khi2 permet de retrouver manuellement la p-value en s’aidant d’un tableau disponible dans tout bon livre de statistiques (ou outil électronique).
Exemple de \(\chi²\) de conformité
On lance 60 fois un dé cubique, d’un point de vue théorique nous devrions obtenir en moyenne 10 “Six” or nous en avons 19 le dé est-il bien équilibré ?
# Descendance observée
observation <- c(19,41)
# probabilités théoriques : d'un point de vue théorique, on devrait avoir 3/4 et 1/4 soit 75 et 25%
proba <- c(1/6,5/6)
# Réalisation du test de khi-deux
test<-chisq.test(observation,p=proba)
test
##
## Chi-squared test for given probabilities
##
## data: observation
## X-squared = 9.72, df = 1, p-value = 0.001823
Ainsi, la p-value ici nous permet d’en déduire que les résultats observés ne sont pas conformes à la théorie au risque \(\alpha\)
Voici en détail ce que donne le résultat du test :
test$statistic #: la statistique du Chi2.
## X-squared
## 9.72
test$parameter #: le nombre de degrés de libertés.
## df
## 1
test$p.value #: la p-value.
## [1] 0.001822735
test$observed #: la matrice observée de départ.
## [1] 19 41
test$expected #: la matrice attendue sous l'hypothèse nulle d'absence de biais.
## [1] 10 50
Définition du \(\chi^{2}\) d’indépendance
Le \(\chi^{2}\) d’indépendance permet de savoir si il y a indépendance entre 2 critères susceptibles de créer une différence de répartition.
L’hypothèse nulle (\(H_{0}\)) est : le fait de connaître l’appartenance d’un individu à une population (selon un critère) ne donne aucun indice sur la caractéristique qui le défini selon l’autre critère.
Par exemple : est-ce que le fait de connaître la couleur des yeux de quelqu’un me permet de supposer sur son sexe ?
Rèponse : non.
Par exemple : est-ce que le fait de connaître la taille de quelqu’un permet de supposer sur son sexe ? Réponse : oui, plus un individu est petit, plus il y a des chances que ce soit une femme.
Résultats La p-value donne la probabilité de validation de \(H_{0}\)
Plus la p-value est petite, plus il y a un lien entre les critères (et donc pas d’indépendance).
# Créations des vecteurs correspondant à 2 catégories et pour chaque catégories 4 tranches salariales :
hommes = c(50,70,110,60)
femmes = c(80,75,100,30)
# Création d'une matrice des effectifs comparative :
tableau = matrix(c(hommes, femmes),2,4,byrow=T) # (2 : nombre de lignes et 4 nombres de colonnes (tranches salariales))
tableau
## [,1] [,2] [,3] [,4]
## [1,] 50 70 110 60
## [2,] 80 75 100 30
# Réalisation du test khi-deux - les résultats sont sauvegardés dans "khi_test"
test = chisq.test(tableau)
test # affiche le résultat du test
##
## Pearson's Chi-squared test
##
## data: tableau
## X-squared = 17.53, df = 3, p-value = 0.0005499
Ainsi, la p-value ici est de 0.0005 : il y a donc un lien statistique entre le sexe et la tranche salariale car la p-value est très petite.
De même nous avons :
test$statistic #: la statistique du Chi2.
## X-squared
## 17.52953
test$parameter #: le nombre de degrés de libertés.
## df
## 3
test$p.value #: la p-value.
## [1] 0.0005498866
test$observed #: la matrice observée de départ.
## [,1] [,2] [,3] [,4]
## [1,] 50 70 110 60
## [2,] 80 75 100 30
test$expected #: la matrice attendue sous l'hypothèse nulle d'absence de biais.
## [,1] [,2] [,3] [,4]
## [1,] 65.56522 73.13043 105.913 45.3913
## [2,] 64.43478 71.86957 104.087 44.6087
Le \(\chi^{2}\) d’homogénéité est un \(\chi^{2}\) d’indépendance. Il est seulement réalisé dans un but différent.
Le \(\chi^{2}\) d’homogénéité permet de vérifier que les répartitions de différents effectifs sont équivalentes.
Ce test repose ainsi sur 2 hypothèses :
\(H_{0}\) : il n’y a pas de différence significative dans la répartition des groupes étudiés
\(H_{1}\) : il y a une différence - cette hypothèse est a affiner en fonction du cas étudié (cf. exemple ci-dessous)
# Créations des vecteurs correspondant aux 2 catégories :
pedago1 = c(51, 29)
pedago2 = c(38, 12)
pedago3 = c(86, 34)
# Création d'une matrice comparative :
tableau = matrix(c(pedago1,pedago2,pedago3),3,2,byrow=T)
colnames(tableau)<-c("Reçus","recalés")
tableau
## Reçus recalés
## [1,] 51 29
## [2,] 38 12
## [3,] 86 34
# (3 : nombre de lignes et 2 nombres de colonnes)
# autre méthode
tableau = rbind(pedago1,pedago2,pedago3)
colnames(tableau)<-c("Reçus","recalés")
tableau
## Reçus recalés
## pedago1 51 29
## pedago2 38 12
## pedago3 86 34
# Réalisation du test khi-deux - les résultats sont sauvegardés dans "khi_test"
test = chisq.test(tableau)
test # affiche le r?sultat du test
##
## Pearson's Chi-squared test
##
## data: tableau
## X-squared = 2.504, df = 2, p-value = 0.2859
La p-value n’est pas suffisament petite on ne peut rejeter \(H_{0}\)
test$statistic #: la statistique du Chi2.
## X-squared
## 2.503968
test$parameter #: le nombre de degrés de libertés.
## df
## 2
test$p.value #: la p-value.
## [1] 0.2859369
test$observed #: la matrice observée de départ.
## Reçus recalés
## pedago1 51 29
## pedago2 38 12
## pedago3 86 34
test$expected #: la matrice attendue sous l'hypothèse nulle d'absence de biais.
## Reçus recalés
## pedago1 56 24
## pedago2 35 15
## pedago3 84 36
un exemple avec un tableau de contingence
###########################################################################################
#Tableau de Contingence
tableau<-matrix(c(1768,807,189,47,946,1387,746,53,115,438,288,16),ncol = 4,byrow = T)
tableau
## [,1] [,2] [,3] [,4]
## [1,] 1768 807 189 47
## [2,] 946 1387 746 53
## [3,] 115 438 288 16
rownames(tableau)<-c("bleu","gris ou vert","marron")
colnames(tableau)<-c("blond","chatain","noir","roux")
tableau
## blond chatain noir roux
## bleu 1768 807 189 47
## gris ou vert 946 1387 746 53
## marron 115 438 288 16
ni.<-margin.table(tableau,1)
ni.
## bleu gris ou vert marron
## 2811 3132 857
n.j<-margin.table(tableau,2)
n.j
## blond chatain noir roux
## 2829 2632 1223 116
sum(ni.)
## [1] 6800
sum(n.j)
## [1] 6800
n..<-sum(ni.)
n..
## [1] 6800
addmargins(tableau)
## blond chatain noir roux Sum
## bleu 1768 807 189 47 2811
## gris ou vert 946 1387 746 53 3132
## marron 115 438 288 16 857
## Sum 2829 2632 1223 116 6800
(freqabs<-round(tableau/n..*100,2))
## blond chatain noir roux
## bleu 26.00 11.87 2.78 0.69
## gris ou vert 13.91 20.40 10.97 0.78
## marron 1.69 6.44 4.24 0.24
test<-chisq.test(tableau)
test$statistic #: la statistique du Chi2.
## X-squared
## 1073.508
test$parameter #: le nombre de degrés de libertés.
## df
## 6
test$p.value #: la p-value.
## [1] 1.124431e-228
addmargins(test$observed) #: la matrice observée de départ.
## blond chatain noir roux Sum
## bleu 1768 807 189 47 2811
## gris ou vert 946 1387 746 53 3132
## marron 115 438 288 16 857
## Sum 2829 2632 1223 116 6800
addmargins(test$expected) #: la matrice attendue sous l'hypothèse nulle d'absence de biais.
## blond chatain noir roux Sum
## bleu 1169.4587 1088.0224 505.5666 47.95235 2811
## gris ou vert 1303.0041 1212.2682 563.2994 53.42824 3132
## marron 356.5372 331.7094 154.1340 14.61941 857
## Sum 2829.0000 2632.0000 1223.0000 116.00000 6800
par(mfrow=c(1,3))
mosaicplot(test$expected, main="Situation d'indépendance", col="orange3")
mosaicplot(tableau, main="Situation Observée")
mosaicplot(tableau, shade=TRUE, main="Etude de l'écart")