Deux variables catégoriques
Le test d’indépendance de Chi-Squared permet de vérifier si deux variables catégorielles sont indépendantes.
Ceci est un test typique du chi carré : si nous supposons que deux variables sont indépendantes, les valeurs du tableau de contingence de ces variables doivent être distribuées de manière uniforme. Et ensuite, nous vérifions à quelle distance d'uniformité les valeurs réelles sont.
Il existe également un V de Crammer qui est une mesure de corrélation qui découle de ce test
Exemple
Supposons que nous ayons deux variables
- genre: homme et femme
- ville: Blois et Tours
Nous avons observé les données suivantes:
Le genre et la ville sont-ils indépendants? Faisons un test de Chi-Squred. Hypothèse nulle: ils sont indépendants, l'hypothèse alternative est qu'ils sont corrélés d'une manière ou d'une autre.
Dans l'hypothèse Null, nous supposons une distribution uniforme. Donc, nos valeurs attendues sont les suivantes
Nous effectuons donc le test du chi carré et la valeur p résultante peut être considérée ici comme une mesure de la corrélation entre ces deux variables.
Pour calculer le V de Crammer, nous trouvons d’abord le facteur de normalisation chi-carré-max qui correspond typiquement à la taille de l’échantillon, divisons le chi-carré par celui-ci et prenons une racine carrée.
R
tbl = matrix(data=c(55, 45, 20, 30), nrow=2, ncol=2, byrow=T)
dimnames(tbl) = list(City=c('B', 'T'), Gender=c('M', 'F'))
chi2 = chisq.test(tbl, correct=F)
c(chi2$statistic, chi2$p.value)
Ici, la valeur p est 0,08 - assez petite, mais pas encore suffisante pour rejeter l’hypothèse d’indépendance. On peut donc dire que la "corrélation" est ici 0.08
Nous calculons aussi V:
sqrt(chi2$statistic / sum(tbl))
Et obtenez 0,14 (plus le v est petit, plus la corrélation est faible)
Considérons un autre jeu de données
Gender
City M F
B 51 49
T 24 26
Pour cela, cela donnerait ce qui suit
tbl = matrix(data=c(51, 49, 24, 26), nrow=2, ncol=2, byrow=T)
dimnames(tbl) = list(City=c('B', 'T'), Gender=c('M', 'F'))
chi2 = chisq.test(tbl, correct=F)
c(chi2$statistic, chi2$p.value)
sqrt(chi2$statistic / sum(tbl))
La valeur p est 0,72, ce qui est beaucoup plus proche de 1 et v est 0,03 - très proche de 0
Variables catégoriques vs numériques
Pour ce type, nous effectuons généralement un test ANOVA unidirectionnel : nous calculons la variance intra-groupe et la variance intra-groupe, puis nous les comparons.
Exemple
Nous voulons étudier la relation entre la graisse absorbée par les beignets et le type de graisse utilisée pour produire des beignets (l'exemple est pris ici ).
Existe-t-il une dépendance entre les variables? Pour cela, nous effectuons un test ANOVA et constatons que la valeur p est juste de 0,007 - il n'y a pas de corrélation entre ces variables.
R
t1 = c(164, 172, 168, 177, 156, 195)
t2 = c(178, 191, 197, 182, 185, 177)
t3 = c(175, 193, 178, 171, 163, 176)
t4 = c(155, 166, 149, 164, 170, 168)
val = c(t1, t2, t3, t4)
fac = gl(n=4, k=6, labels=c('type1', 'type2', 'type3', 'type4'))
aov1 = aov(val ~ fac)
summary(aov1)
La sortie est
Df Sum Sq Mean Sq F value Pr(>F)
fac 3 1636 545.5 5.406 0.00688 **
Residuals 20 2018 100.9
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Nous pouvons donc aussi prendre la valeur p comme mesure de la corrélation.
Références