Le test G ou G-test est beaucoup plus pertinent que le test de Khi² mais moins usé car moins connu.
Contrairement au test de Khi², le test G peut fonctionner sur de petits effectifs. Il est basé sur une généralisation de la loi binomiale (multinomiale).
On notera que lorsqu'un lien a été établi entre deux variables, il reste à déterminer la nature du lien (est-ce les hommes qui ont un grand salaire ou les femmes), cela pourra être fait par l'AFC.
# Installer DescTools
install.packages("DescTools")
# Charger DescTools
library(DescTools)
Si j'ai deux variables catégorielles, je vais vouloir contrôler si elles sont liées.
Exemple :
# Sexes des employés
sexe <- c("F","F","F","F","M","M","M","M","M","F","F","F","F","F","M","F","F","M","F","F","F","F","M","M")
# Salaires des employés
salaires <- c("bas","moy","haut","bas","bas","haut","haut","haut","moy","bas","bas","bas","bas","moy","bas","moy","bas","moy","moy","bas","bas","bas","haut","haut")
Si je crée un contingent avec table(), je vois bien un déséquilibre entre les salaires en fonction du sexe. Est-il statistiquement significatif ?
table(sexe ,salaires )
salaires
sexe bas haut moy
F 10 1 4
M 2 5 2
On peut aussi afficher ce contingent en proportions avec prop.table(). Ici, je vais faire mes proportions par colonnes (argument 2) pour avoir les proportions de filles et garçons par type de salaires. Je pourrais aussi le faire par lignes (argument 1) pour avoir la répartitions des types de salaires par sexe.
prop.table(table(sexe ,salaires),2)
salaires
sexe bas haut moy
F 0.8333333 0.1666667 0.6666667
M 0.1666667 0.8333333 0.3333333
# (G-test) Test d'indépendance
GTest(table(sexe ,salaires ))
La p-value étant inférieure à 0.05, l'on va pouvoir considérérer qu'il existe un lien entre sexe et salaire.
Remarque importante : une fois que le test G a montré des différences entre mes conditions testées, il reste à prouver qui est différent de qui !
Si je souhaite comparer de simple propotions - un pourcentage différent par condition, je fais appel à pairwise.prop.table().
Si j'ai plusieurs modalités par variable, je me tourne vers l'AFC (Analyse factorielle de correspondance, suivre ce lien)
Pour pairiwise,prop.table(), reprenons l'exemple :
par_des_filles <- table(sexe ,salaires )[1,] # Je récupère les comptages des filles, ligne 1 du contingent
effectifs <- table(salaires) # Nombre d'individus pour chaque type de salaires
pairwise.prop.test(par_des_filles , effectifs, p.adjust.method = "bonferroni")
==> Cela me permet ainsi de voir si une proportions des filles diffère significativement des autres pour les différentes tranches salariales (ce n'est pas le cas ici car mon effectif est trop petit).
Un test de conformité permet de voir si des effectifs observés correspondent ou non aux proportions théoriques attendues : voir en gros si les observations entre théorie et pratique peuvent être attribuées au hasard ou non.
# (G-test) Test de conformité
J'ai trouvé 0 homozygote AA, 0 homozygote aa et 4 hétérozygotes Aa, cela correspond il aux proportions attendues de 25%, 50% et 25% ?
GTest(c(0,4,0), p=c(0.25,0.50,0.25))
Le graphique le plus adapté est un diagramme en barres avec intervalles de confiance sur proportions.