• 15 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 04/11/2019

Analysez deux variables qualitatives avec le Chi-2

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Bon... il ne nous reste plus qu'à étudier le cas de 2 variables qualitatives. Je vous rassure, vous avez déjà fait la moitié du travail dans ce chapitre sur le tableau de contingence : si vous avez compris ce principe, c'est déjà très bien.

Quelles questions nous posons-nous ?

La méthode d'analyse sera la même pour répondre à toutes les question suivantes. La seule chose qui change, ce sont les 2 variables étudiées :

  • Avez-vous les mêmes catégories de dépenses le weekend et en semaine ? (variables categ et weekend)

  • Avez-vous plus d'entrées d'argent en début de mois ou en fin de mois ? (sens et quart_mois)

  • Vos dépenses sont-elles plus grandes en début de mois qu'en fin de mois ? (tranche_depense et quart_mois)

  • Le montant d'une opération est-il différent d'une catégorie de dépense à l'autre ? (tranche_depense et categ)

  • Vos paiements en carte bancaire sont-ils toujours petits et vos virements importants ? (type et tranche_depense)

  • Y a-t-il des catégories d'opérations qui arrivent toujours au même moment du mois, comme votre loyer par exemple ? (categ et quart_mois)

  • Y a-t-il certaines catégories d'opérations qui s'effectuent toujours selon le même mode de paiement, par exemple par virement bancaire ? (type et categ)

Représentation

Pour répondre à ces questions, vous pouvez afficher le tableau de contingence comme ceci :

X = "quart_mois"
Y = "categ"

cont = data[[X,Y]].pivot_table(index=X,columns=Y,aggfunc=len,margins=True,margins_name="Total")
cont

Adaptez les 2 variables qualitatives que vous souhaitez étudier en  lignes 1 et 2. Le tableau de contingence se calcule grâce à la méthode  pivot_table  . Chaque case du tableau de contingence compte un nombre d'individus. Ce comptage se fait grâce à la fonction  len  .

Résultat du code ci-dessus : le tableau de contingence
Résultat du code ci-dessus : le tableau de contingence

Des statistiques !

Malheureusement, il ne nous sera ici pas possible de proposer un modèle comme dans les 2 derniers chapitres. Mais ce n'est pas grave ! On se rattrapera grâce à une mesure statistique.

Reprenez le chapitre sur le tableau de contingence, et remettez-vous en tête ce petit encadré que nous avions écrit :

Si deux événements $\(I\)$ et $\(J\)$ sont indépendants, alors on s'attend à ce que le nombre d'individus qui satisfont à la fois $\(I\)$ et $\(J\)$ (appelons ce nombre $\(n_{ij}\)$ ) soit égal à $\(f_i\times n_j\)$ (c'est le calcul que vous aviez fait en entrant dans le bar : 30%*10=3). Au contraire, plus $\(n_{ij}\)$ sera différent de $\(f_i\times n_j\)$ , plus on aura de raison de penser que $\(I\)$ et $\(J\)$ ne sont pas indépendants.

Etudier une corrélation entre deux variables qualitatives revient donc à comparer les  $\(n_{ij}\)$  avec les $\(f_i\times n_j\)$ . Les $\(n_{ij}\)$ , ce sont les nombres qui sont dans le tableau de contingence (en dehors des 2 lignes et colonnes TOTAL). On pourrait donc créer un autre tableau qui aurait la même forme que le tableau de contingence, mais qui contiendrait plutôt les $\(f_i\times n_j\)$ . Voici donc à gauche le tableau de contingence que nous avions, et à droite le tableau des $\(f_i\times n_j\)$ :

Le tableau de droite est ce à quoi on s'attend en cas d'indépendance des 2 variables. Il nous faudrait donc une statistique qui puisse comparer les valeurs de ces 2 tableaux deux-à-deux, et qui nous permettrait aussi de trouver les cases pour lesquelles les valeurs sont très différentes. Ces cases seront des valeurs dignes d'intérêt, et qui seront source de non-indépendance des 2 variables.

Allez hop ! Si vous voulez comparer deux nombres, je vous conseille de faire leur différence ! Et pour avoir des différences toujours positives (pour éviter qu'elles ne s'annulent en les sommant), passons-les au carré. Ce n'est pas la première fois que l'on utilise ce petit stratagème :

$\[(n_{ij} - f_{i}.n_j)^2\]$

Oui mais là, si j'ai un $\(n_{ij} = 2\)$ et un $\(f_i.n_j = 4\)$ , l'écart au carré sera de 4. Si j'ai un $\(n_{ij}=1000\)$ et un   $\(f_i.n_j = 1002\)$ , l'écart au carré sera aussi de 4. Or une erreur de 4 quand $\(f_i.n_j\)$ vaut 4, c'est une erreur bien plus importante que si $\(f_i.n_j = 1002\)$ .

C'est vrai. On peut alors normaliser cet écart au carré en le divisant par $\(f_i.n_j\)$ . On obtient donc la formule suivante, en sachant que $\(f_i = \frac{n_i}{n}\)$ :

$\[\xi_{ij}=\frac{(n_{ij}-\frac{n_i.n_j}{n})^2}{\frac{n_i.n_j}{n}}\]$

Cette mesure est calculable pour chacune des cases du tableau de contingence. Il peut être intéressant de colorer ce dernier en fonction de cette mesure : foncé quand la mesure est grande, clair quand elle est proche de 0. Ainsi, on détecte facilement les cases qui sont source de non-indépendance :

Tableau de contingence coloré
Tableau de contingence coloré

Enfin, si on somme toutes ces mesures $\(\xi_{ij}\)$ pour chaque case du tableau (de la colonne j=1 à la colonne j=l, puis de la ligne i=1 à la ligne i=k), on obtient la statistique $\(\xi_n\)$ ( $\(\xi\)$ se prononce "xi"):

$\[\xi_n = \sum_{i=1}^k\sum_{j=1}^l\frac{(n_{ij}-\frac{n_i.n_j}{n})^2}{\frac{n_i.n_j}{n}}\]$

Normalement, on applique à cette mesure un seuil au delà duquel on dira que les 2 variables sont corrélées. C'est un peu compliqué, mais pour en savoir plus, vous pouvez regarder cet article Wikipedia. Retenons juste ici que plus $\(\xi_n\)$ est grand, moins l'hypothèse d'indépendance est valide.

Comme nous l'avons vu, on peut associer à chaque case du tableau un $\(\xi_{ij}\)$ . On peut ensuite normaliser chaque $\(\xi_{ij}\)$ en le divisant par $\( \xi_n\)$ . On obtient ainsi pour chaque case une valeur comprise entre 0 et 1.

On peut considérer cette valeur comme une contribution à la non indépendance. Elle est optionnellement exprimable en pourcentage si on la multiplie par 100. Plus cette contribution sera proche de 100%, plus la case en question sera source de non-indépendance. La somme de toutes les contributions vaut 100%.

Voici le code affichant le tableau de contingence coloré :

import seaborn as sns

tx = cont.loc[:,["Total"]]
ty = cont.loc[["Total"],:]
n = len(data)
indep = tx.dot(ty) / n

c = cont.fillna(0) # On remplace les valeurs nulles par 0
measure = (c-indep)**2/indep
xi_n = measure.sum().sum()
table = measure/xi_n
sns.heatmap(table.iloc[:-1,:-1],annot=c.iloc[:-1,:-1])
plt.show()

Les lignes 1 à 6 calculent le tableau  indep  , qui est le tableau représentant le cas d'indépendance. Il fait intervenir le produit matriciel (avec  .dot()  ), que vous n'avez pas à connaître à ce niveau.

En ligne 9,  measure  contient tous les $\(\xi_{ij}\)$ pour chaque case du tableau. On peut ensuite calculer les contributions (que nous avons définies plus haut) en divisant chaque $\(\xi_{ij}\)$ par $\( \xi_n\)$ (placé dans la variable xi_n  ). On fait ceci en ligne 11 par  measure/xi_n  . On obtient ainsi pour chaque case une valeur comprise entre 0 et 1.

Aller plus loin : "C'est un peu corrélé mais pas trop...!"

En fait, il existe des seuils que l'on peut calculer. En dessous du seuil, on dira "Les variables ne sont pas corrélées", et au dessus, on dira l'inverse.

C'est bien plus pratique ! Mais pour être tout à fait précis, il faut donner une précision supplémentaire, qui est une sorte de "niveau de certitude", que l'on appelle degré de significativité. On utilise pour cela la p-value, exprimée en pourcentage.

C'est grâce à elle que l'on peut dire si un test statistique est significatif ou pas.

Exemple de certificat de réussite
Exemple de certificat de réussite