A ajouter au cours (non abordés actuellement ou de façon partielle)

Visualisation

  • Mosaic plot
  • Heatmaps du tableau contingence
  • Correspondance maps

Mesure de force d’association

  • Phi = force d’association pour les tableaux 2*2 (avant V de cramer)
  • peut-être coefficient de contingence
  • odds ratio pour tableaux 2*2
  • risque relatif

Analyse des résidus

  • bruts
  • standardisés
  • ajustés

–> quelles cellules contribuent au khi 2 (déjà abordé mais partiellement)

Cas particuliers et alternatives

  • Si conditions khi 2 non respectés : Test exact de Ronald Fisher
  • Méthodes par permutation ?
  • Variables ordinales : tests de tendance, gamma de Goodman-Kruskal
  • Tau de Kendall
  • Spearman

Initiation à l’analyse statistique

ED de l’Université de Bordeaux

2026

Séance 2 : Explorer et investiguer des variables qualitatives

Claire Kersuzan

PUD-Bx / Progedo · LifeObs / Ined · COMPTRASEC / UB

Karine Onfroy

Bordeaux School Economics (BxSE) / UB

Objectifs de la séance

Aujourd’hui, on va apprendre à :

  • analyser une relation entre deux variables qualitatives
  • lire et interpréter un tableau croisé
  • comprendre la logique des tests d’hypothèse
  • utiliser et interpréter le test du khi²
  • discuter les résultats avec rigueur et nuance

Rappel — Ce que l’on a vu en séance 1

On a appris à :

  • comprendre d’où viennent les données
  • identifier les variables
  • décrire une variable
  • repérer des problèmes : NA, valeurs extrêmes, codages…

On a travaillé variable par variable.

Nouvelle étape

On ne s’intéresse plus à une variable seule…

mais à une relation entre deux variables.

Questions typiques

La répartition des tâches varie-t-elle selon l’âge ?

selon le type de ménage ?

selon le diplôme ?

selon d’autres caractéristiques ?

Variables qualitatives : rappel

Une variable qualitative décrit des catégories.

Exemples dans ERFI :

  • MA_SEXE : sexe du répondant ;
  • diplome : niveau de diplôme ;
  • age_cat : groupe d’âge ;
  • repas_genre : répartition recodée de la préparation des repas.

On peut étudier :

  • la distribution d’une variable ;
  • ou la relation entre deux variables.

D’une variable à deux variables

Décrire une variable :

Quelle est la répartition de la préparation des repas ?

Analyser deux variables :

Cette répartition varie-t-elle selon le groupe d’âge ?

Ou encore :

Le type de tâche réalisée varie-t-il selon le niveau de diplôme ?

Exemple de question statistique

Question générale :

Les tâches domestiques sont-elles partagées de la même manière selon les groupes d’âge ?

Question statistique :

La distribution de repas_genre est-elle la même selon age_cat ?

Variables mobilisées :

  • repas_genre : variable qualitative ;
  • age_cat : variable qualitative.

Méthode pour répondre à la question

  • tableau croisé ;
  • proportions ;
  • graphique ;
  • éventuellement test du khi².

Première étape : observer

Avant de tester, on commence toujours par observer.

On va construire un tableau croisé :

age_cat × repas_genre

La répartition des repas dans le couple varie-t-elle selon le groupe d’âge ?

table(ERFI_couple$age_cat, ERFI_couple$repas_genre)
                
                 Partagé Plutôt femme Plutôt homme
  18-29 ans          166          384           76
  30-44 ans          374         1441          206
  45-59 ans          289         1474          147
  60 ans et plus     139         1235          107

Lire le tableau

Questions

  • Que représentent les lignes ?
  • Que représentent les colonnes ?
  • Que signifie une case du tableau ?

Correction — Lire le tableau

  • Les lignes représentent les groupes d’âge.
  • Les colonnes représentent les modalités de répartition des repas.
  • Une case correspond au nombre d’individus dans une situation donnée.

Exemple :

une case indique combien d’individus d’un groupe d’âge donné sont dans une modalité donnée de répartition des repas.

Passer aux proportions

Pour comparer les groupes, on transforme les effectifs en pourcentages.

Mais attention :

Il faut choisir le bon sens de calcul.

Pourcentages par ligne

On calcule ici les proportions par groupe d’âge.

prop.table(
  table(ERFI_couple$age_cat, ERFI_couple$repas_genre),
  margin = 1
) * 100
                
                   Partagé Plutôt femme Plutôt homme
  18-29 ans      26.517572    61.341853    12.140575
  30-44 ans      18.505690    71.301336    10.192974
  45-59 ans      15.130890    77.172775     7.696335
  60 ans et plus  9.385550    83.389602     7.224848

Interpréter

Chaque ligne = 100 %

On peut maintenant comparer :

  • la part de “Plutôt femme” selon l’âge ;
  • la part de “Partagé” selon l’âge.

Questions

  • Observe-t-on des différences ?
  • Quels groupes semblent les plus égalitaires ?

Correction — Interpréter

Les pourcentages par ligne permettent de comparer les groupes d’âge.

On peut lire par exemple :

  • chez les plus jeunes, la part de situations “Partagé” est plus élevée ;
  • chez les plus âgés, la part de situations “Plutôt femme” est plus élevée ;
  • les repas semblent donc moins souvent partagés dans les groupes d’âge plus élevés.

On observe une relation apparente entre l’âge et la répartition des repas.

Attention au sens de lecture

On aurait aussi pu calculer des pourcentages par colonne.

prop.table(
  table(ERFI_couple$age_cat, ERFI_couple$repas_genre),
  margin = 2
) * 100
                
                   Partagé Plutôt femme Plutôt homme
  18-29 ans      17.148760     8.469343    14.179104
  30-44 ans      38.636364    31.782091    38.432836
  45-59 ans      29.855372    32.509925    27.425373
  60 ans et plus 14.359504    27.238641    19.962687

Question

Que change ce calcul ?

Correction — Pourcentages par colonne

Ici, chaque colonne = 100 %.

On répond à une autre question :

Dans chaque type de répartition, quelle est la composition par âge ?

Ce n’est pas la même logique.

On ne compare plus directement les groupes d’âge entre eux.

On décrit la composition des modalités de repas_genre.

Point clé

  • margin = 1 → base de 100 % pour les lignes
    → comparer les groupes

  • margin = 2 → base de 100 % pour les colonnes
    → décrire la composition des modalités

Le choix dépend toujours de la question posée.

Exercice — À vous

On change maintenant de variables.

Objectif :

Construire le tableau croisé de diplome × linge_genre.

À faire :

  1. tableau des effectifs ;
  2. pourcentages adaptés ;
  3. interprétation.

Étape 1 — Effectifs

Construire le tableau croisé :

diplome × linge_genre

table(ERFI_couple$diplome, ERFI_couple$linge_genre)
                
                 Partagé Plutôt femme Plutôt homme
  Au plus brevet     115         1740           56
  CAP/Bac pro        173         1903           65
  Bac à Bac+2        128          715           47
  Bac+3 ou plus      257          677           49

Étape 2 — Avant de coder

Questions

  • Quelle est la question ?
  • Que veut-on comparer ?
  • Quelle variable sert de groupe de comparaison ?
  • Quel pourcentage faut-il calculer ?

Correction — Choisir le bon pourcentage

Ici, on veut comparer la répartition du linge selon le niveau de diplôme.

La variable de comparaison est donc :

diplome

On veut que chaque niveau de diplôme fasse 100 %.

Il faut donc calculer des pourcentages par ligne.

Étape 2 — Code de correction

prop.table(
  table(ERFI_couple$diplome, ERFI_couple$linge_genre),
  margin = 1
) * 100
                
                   Partagé Plutôt femme Plutôt homme
  Au plus brevet  6.017792    91.051805     2.930403
  CAP/Bac pro     8.080336    88.883699     3.035965
  Bac à Bac+2    14.382022    80.337079     5.280899
  Bac+3 ou plus  26.144456    68.870804     4.984741

Étape 3 — Interpréter

Questions

  • La répartition est-elle la même selon le niveau de diplôme ?
  • Observe-t-on des écarts ?
  • Quelle modalité semble varier le plus ?
  • Les écarts sont-ils importants ou modestes ?

Correction — Interprétation

On observe une variation selon le niveau de diplôme.

La part de situations “Partagé” augmente avec le diplôme.

À l’inverse, la part de situations “Plutôt femme” diminue lorsque le niveau de diplôme augmente.

La répartition du linge semble donc plus souvent partagée parmi les personnes les plus diplômées.

Représenter une relation entre deux variables

Tableau croisé → lecture précise effectifs ou pourcentages.

Mais difficile à interpréter rapidement.

Représenter la relation avec un graphique.

Objectif : voir si la distribution de repas_genre varie selon age_cat.

Diagramme en barres juxtaposées

ggplot(ERFI_couple, aes(x = age_cat, fill = repas_genre)) +
  geom_bar(position = "dodge") +
  labs(
    x = "Groupe d'âge",
    y = "Effectifs",
    fill = "Répartition des repas"
  )

Lire le code ggplot

Dans ce code :

  • ggplot(ERFI_couple, ...) indique le tableau de données utilisé ;
  • aes(x = age_cat, fill = repas_genre) indique les variables représentées ;
  • x = age_cat place les groupes d’âge sur l’axe horizontal ;
  • fill = repas_genre colore les barres selon la répartition des repas ;
  • geom_bar() produit un diagramme en barres ;
  • position = "dodge" place les barres côte à côte.

Ici, on compare des effectifs.

Question

À partir du graphique :

  • observe-t-on des différences entre groupes d’âge ?
  • quel groupe semble avoir la part la plus forte de situations “Partagé” ?
  • est-ce facile de comparer les proportions ?

Correction — Barres juxtaposées

Représentation des effectifs → difficile de comparer les groupes :

si les groupes d’âge n’ont pas la même taille, les barres ne sont pas directement comparables.

Raisonner en proportions.

Diagramme en barres empilées à 100 %

ggplot(ERFI_couple, aes(x = age_cat, fill = repas_genre)) +
  geom_bar(position = "fill") +
  labs(
    x = "Groupe d'âge",
    y = "Proportion",
    fill = "Répartition des repas"
  )

Lire le code ggplot

  • on utilise les données ERFI_couple ;
  • on place age_cat sur l’axe horizontal ;
  • on distingue les modalités de repas_genre par couleur.

Ce qui change :

geom_bar(position = "fill")

position = "fill" transforme chaque barre en barre de même hauteur.

Chaque barre représente 100 % du groupe d’âge.

Interpréter le graphique

Barres empilées à 100 % → comparer la composition de chaque groupe d’âge.

Questions

  • Part de “Partagé” est-elle la même dans tous les groupes ?
  • Part de “Plutôt femme” varie-t-elle selon l’âge ?
  • Quel graphique est le plus adapté à notre question ?

Correction — Graphiques

  • Barres juxtaposées : comparer des effectifs.
  • Barres empilées à 100 % : comparer des proportions.

Pour notre question :

La répartition des repas varie-t-elle selon l’âge ?

→ Graphique empilé à 100 % plus adapté

Ce que l’on observe

Des différences entre groupes d’âge :

  • part de situations “Partagé” → plus élevée chez les jeunes ;
  • part de situations “Plutôt femme” → plus élevée chez les plus âgés.

Mais une question reste ouverte :

ces écarts sont-ils suffisamment importants pour conclure à une association ?

Autres visualisations possibles

Le diagramme en barres empilées à 100 % est souvent le plus lisible.

Mais d’autres représentations peuvent aider à explorer une relation entre deux variables qualitatives :

  • mosaic plot
    → visualiser les écarts à l’indépendance

  • heatmap du tableau croisé
    → repérer rapidement les combinaisons de modalités les plus fréquentes

Le choix du graphique dépend de ce que l’on veut montrer.

Visualiser un tableau croisé avec une heatmap

Une heatmap permet de représenter les cases du tableau croisé par une intensité visuelle.

Plus une combinaison de modalités est fréquente, plus elle ressort graphiquement.

tab_repas <- table(
  ERFI_couple$age_cat,
  ERFI_couple$repas_genre
)

tab_repas_df <- as.data.frame(tab_repas)

ggplot(tab_repas_df, aes(x = Var2, y = Var1, fill = Freq)) +
  geom_tile() +
  geom_text(aes(label = Freq)) +
  labs(
    x = "Répartition des repas",
    y = "Groupe d'âge",
    fill = "Effectif"
  )

Attention : effectifs ou proportions ?

La heatmap précédente représente les effectifs.

Utile pour repérer les cellules les plus nombreuses.

Mais trompeuse si groupes de taille ≠.

Représentation des pourcentages par ligne.

tab_repas_prop <- prop.table(tab_repas, margin = 1) * 100

tab_repas_prop_df <- as.data.frame(tab_repas_prop)

ggplot(tab_repas_prop_df, aes(x = Var2, y = Var1, fill = Freq)) +
  geom_tile() +
  geom_text(aes(label = round(Freq, 1))) +
  labs(
    x = "Répartition des repas",
    y = "Groupe d'âge",
    fill = "%"
  )

Limite de l’observation

Observer des différences ne suffit pas toujours.

Dans un échantillon → toujours une part de hasard :

  • individus enquêtés ≠ toute la population ;
  • résultats peuvent varier d’un échantillon à l’autre ;
  • petits écarts possibles même si pas de relation dans la population.

Tests statistiques.

Pourquoi faire un test statistique ?

Répondre à une question du type :

Les différences observées sont-elles suffisamment nettes pour être interprétées comme autre chose que du hasard ?

Données d’enquête :

Est-ce que les différences observées peuvent être attribuées au hasard d’échantillonnage ?

Données expérimentales :

Différence avec groupe témoin est-elle compatible avec le hasard, ou suggère-t-elle un effet de l’intervention ?

La logique générale d’un test

Un test statistique commence par une hypothèse de départ :

Et si, dans la population, il n’y avait pas de différence ? Et s’il n’y avait pas de relation ?

On appelle cette hypothèse :

l’hypothèse nulle, notée H0

L’hypothèse nulle : H0

Hypothèse nulle → l’idée qu’il ne se passe rien.

Dans notre exemple :

H0 : la répartition des repas ne varie pas selon l’âge.

age_cat et repas_genre sont indépendantes.

L’hypothèse alternative : H1

Hypothèse alternative → l’idée qu’il existe une différence/relation.

Dans notre exemple :

H1 : la répartition des repas varie selon l’âge. age_cat et repas_genre ne sont pas indépendantes.

Question

À votre avis, que fait un test statistique ?

  1. Il prouve que H0 est vraie.
  2. Il prouve que H1 est vraie.
  3. Il évalue si les données sont compatibles avec H0.

Correction

Test statistique ne prouve pas qu’une hypothèse est vraie.

Il évalue plutôt :

si données observées sont compatibles avec l’hypothèse nulle.

Si données sont très peu compatibles avec H0, on peut rejeter H0.

La p-value

La p-value correspond à :

la probabilité d’observer des écarts au moins aussi importants que ceux observés, si l’hypothèse nulle était vraie.

Autrement dit :

On fait comme si le hasard était la seule explication… et on regarde si ce qu’on observe est plausible.

Interpréter une p-value

Si p-value faible :

écarts observés peu compatibles avec l’hypothèse du hasard.

→ On peut alors rejeter H0.

Si p-value élevée :

les écarts observés restent compatibles avec l’hypothèse du hasard.

→ On ne rejette pas H0.

Le seuil de 5 %

En SHS → souvent un seuil de 5 %
(seuil variable selon disciplines et contextes).

Ce seuil correspond :

au risque que l’on accepte de rejeter à tort l’hypothèse du hasard (H0)

Si p-value < 0.05 → résultat statistiquement significatif au seuil de 5 %.

Cela signifie :

les écarts observés seraient peu probables si l’hypothèse du hasard (H0) était vraie.

Attention à l’interprétation

Une p-value ne dit pas :

  • que la relation est forte ;
  • que la relation est causale ;
  • que H1 est “vraie”.

Elle indique seulement si les écarts observés sont compatibles ou non avec H0.

Petit exercice

→ Différence entre deux groupes.

Test donne :

p-value = 0.03

Questions

  • Peut-on rejeter H0 au seuil de 5 % ?
  • Peut-on dire que la relation est forte ?
  • Peut-on conclure à une relation causale ?

Correction

Avec une p-value de 0.03 : → rejet H0 au seuil de 5 % ; > écarts observés peu compatibles avec l’hypothèse du hasard ;

Mais :

  • pas si effet est fort ;
  • pas conclure automatiquement à une relation causale.

Nuance importante

Dans des données observationnelles (comme ici) :

on identifie des associations, pas des causalités.

Dans des données expérimentales :

une interprétation causale peut être discutée si le protocole le permet (randomisation, contrôle, etc.)

Retour à notre exemple

Dans notre exemple → tester si 2 variables qualitatives sont associées : →age_cat et repas_genre.

Question :

les écarts observés dans le tableau croisé sont-ils compatibles avec l’hypothèse d’indépendance ?

Le test du khi² d’indépendance

Pour répondre :

test du khi² d’indépendance.

Mais avant de lancer le test khi² → comprendre son principe :

comparer ce que l’on observe avec ce que l’on aurait attendu s’il n’y avait pas de relation.

Un peu d’histoire : le khi²

Le test du khi² est proposé par : Pearson, K. (1900). Philosophical Magazine, 50(302), 157–175.

Contexte

  • développement de la statistique moderne
  • accumulation de données (biologie, hérédité…)
  • besoin de comparer observations et théorie

Les chercheurs observent des écarts… mais sont-ils dus au hasard ?

Idée du test du khi²

Le test du khi² consiste à comparer :

  • ce que l’on observe dans les données
  • ce que l’on attendrait si les deux variables étaient indépendantes.

Autrement dit : si les variables étaient indépendantes

Étape 1 — Les effectifs observés

les valeurs du tableau croisé

table(ERFI_couple$age_cat, ERFI_couple$repas_genre)
                
                 Partagé Plutôt femme Plutôt homme
  18-29 ans          166          384           76
  30-44 ans          374         1441          206
  45-59 ans          289         1474          147
  60 ans et plus     139         1235          107

Question

Si les variables étaient indépendantes :

à quoi ressemblerait le tableau ?

Étape 2 — Les effectifs attendus

Si tout était indépendant :

chaque groupe aurait la même répartition

→ on “reproduit” la structure globale dans chaque ligne

Formule des effectifs attendus

Pour chaque case :

effectif attendu = (total ligne × total colonne) / total

Mini-exemple

A B Total
Groupe 1 40 60 100
Groupe 2 20 80 100
Total 60 140 200

Question

Quel serait l’effectif attendu en (Groupe 1, A) ?

Correction

(100 * 60) / 200
[1] 30

→ attendu = 30
→ observé = 40

Il y a un écart

khi² mesure écart entre observé et attendu

Étape 3 — Mesurer les écarts

Pour chaque case :

→ on fait ça pour toutes les cases
→ puis on additionne

Question

Pourquoi :

  • mettre au carré ?
  • diviser par l’attendu ?

Correction

  • carré → éviter que les écarts s’annulent
  • division → tenir compte de la taille attendue

on mesure des écarts “comparables”

Le χ²

→ plus χ² est grand : > plus les données s’éloignent du hasard

Interprétation

  • petits écarts → compatible avec le hasard
  • grands écarts → peu probable sous H0

Décider avec le χ²

On a calculé une valeur de χ².

Cette valeur est-elle “grande” ou “petite” ?

Pour répondre, il faut savoir que :

la valeur du χ² ne s’interprète jamais seule.

Elle dépend de :

  • la taille du tableau ;
  • le nombre de modalités ;
  • donc des degrés de liberté (ddl).

Les degrés de liberté (ddl)

Les ddl dépendent de la structure du tableau :

ddl = (nombre de lignes - 1) × (nombre de colonnes - 1)

Ils indiquent :

le nombre de valeurs “libres” dans le tableau.

Pourquoi c’est important ?

Parce que la distribution du χ² dépend des ddl.

→ Un χ² de 20 peut être grand… ou pas… selon les ddl.

Idée clé

On ne compare pas directement χ² à un seuil fixe.

On compare :

χ² observé
à ce qu’on attendrait sous H0 pour ces ddl (χ² critique)

on compare donc à une distribution de référence.

Idée visuelle

Pour un nombre de ddl donné, on peut représenter toutes les valeurs possibles de χ² :

  • petites valeurs → fréquentes sous H0
  • grandes valeurs → rares sous H0

→ On définit une zone de rejet

Schéma

        Zone compatible avec H0        |   Zone de rejet
                                      |
   -------------------------------|-------------------->
                                 ^
                             χ² critique
                                      ^
                                  χ² observé

Lecture

  • si χ² observé est dans la zone de gauche → on ne rejette pas H0
  • s’il est dans la zone de droite → on rejette H0

Lien avec la p-value

Plutôt que de comparer à un seuil critique, on utilise la p-value.

p-value correspond à :

la probabilité d’obtenir une valeur de χ² au moins aussi grande que celle observée, si H0 est vraie

Autrement dit :

la probabilité d’être dans la zone de droite.

Étape 4 — Décision

On ne raisonne donc pas directement avec χ².

On passe par la p-value :

Résumé du test

  1. On suppose : pas de lien (H0)
  2. On calcule les effectifs attendus
  3. On mesure les écarts
  4. On obtient χ²
  5. On décide avec la p-value

Ce qu’il faut vérifier

Avant un khi² :

  • variables qualitatives
  • observations indépendantes (sinon McNemar test ou Stuart-Maxwell test)
  • effectifs attendus suffisants (au moins 80 % des cases doivent avoir un effectif attendu ≥ 5)

→ en pratique : pas trop de cases avec effectifs faibles

Réaliser le test du khi² sur notre exemple

On teste maintenant l’association entre : - age_cat (groupe d’âge) et repas_genre (répartition recodée de la préparation des repas).

La répartition des repas varie-t-elle selon le groupe d’âge ?

test_khi2 <- chisq.test(
  table(ERFI_couple$age_cat, ERFI_couple$repas_genre)
)

test_khi2

    Pearson's Chi-squared test

data:  table(ERFI_couple$age_cat, ERFI_couple$repas_genre)
X-squared = 145.74, df = 6, p-value < 2.2e-16

Lire le résultat du test

Test donne 3 informations principales :

  • X-squared : la valeur du khi² ;
  • df : les degrés de liberté ;
  • p-value : la probabilité associée au test.

Questions

  • Quelle est la p-value ?
  • Est-elle inférieure à 0,05 ?
  • Peut-on rejeter l’hypothèse d’indépendance ?

Correction — Lire le résultat

On obtient :

  • khi² = 145,74
  • degrés de liberté = 6
  • p-value < 2,2e-16

La p-value est très inférieure à 0,05. Rejet de l’hypothèse nulle d’indépendance (H0)

Il existe une association statistiquement significative entre le groupe d’âge et la répartition des repas.

Mais avant d’interpréter…

Test du khi² repose sur une condition importante :

les effectifs attendus ne doivent pas être trop faibles.

On vérifie donc les effectifs attendus.

test_khi2$expected
                
                  Partagé Plutôt femme Plutôt homme
  18-29 ans      100.3591     470.0702     55.57072
  30-44 ans      324.0026    1517.5909    179.40643
  45-59 ans      306.2074    1434.2398    169.55283
  60 ans et plus 237.4309    1112.0990    131.47002

Questions

  • Les effectifs attendus sont-ils suffisamment grands ?
  • Certaines cases posent-elles problème ?
  • Le test du khi² semble-t-il utilisable ici ?

Correction — Effectifs attendus

Les effectifs attendus sont tous supérieurs à 5.

Le test du khi² est donc utilisable ici.

On peut interpréter le résultat du test avec confiance du point de vue des conditions d’application.

Que faire lorsque les effectifs sont trop faibles ?

  • Regrouper la modalité rare avec une autre modalité (si cela est cohérent)
  • Utiliser le test exact de Fisher.

Ce test :

  • est particulièrement adapté aux petits effectifs ;
  • est utilisé pour les tableaux 2×2 ;
  • calcule directement la probabilité d’obtenir un tableau au moins aussi extrême que celui observé, si les variables étaient indépendantes (H0 vraie).
fisher.test(
  table(variable1, variable2)
)

Où se situent les écarts ?

Le test du khi² indique qu’il existe une association.

Mais il ne dit pas :

quelles cases du tableau expliquent cette association.

Pour cela, on regarde les résidus.

test_khi2$residuals
                
                    Partagé Plutôt femme Plutôt homme
  18-29 ans       6.5523412   -3.9698267    2.7405017
  30-44 ans       2.7776192   -1.9660744    1.9854443
  45-59 ans      -0.9833458    1.0498748   -1.7320027
  60 ans et plus -6.3879715    3.6853908   -2.1341307

Que sont les résidus ?

Un résidu compare :

  • l’effectif observé
  • à l’effectif attendu si les variables étaient indépendantes.

Autrement dit :

  • résidu positif → il y a plus d’individus observés que prévu ;
  • résidu négatif → il y a moins d’individus observés que prévu.

Plus le résidu est éloigné de 0, plus la case contribue à l’association.

Lire les résidus

Questions

  • Dans quelles cases les résidus sont-ils les plus élevés ?
  • Où observe-t-on plus de cas que prévu ?
  • Où observe-t-on moins de cas que prévu ?

Correction — Lire les résidus

Les écarts les plus marqués concernent :

  • 18-29 ans / Partagé : résidu positif important (≈ 6,55)
    → les jeunes déclarent plus souvent une situation partagée que ce qui serait attendu en cas d’indépendance ;
  • 60 ans et plus / Partagé : résidu négatif important (≈ -6,39)
    → les plus âgés déclarent moins souvent une situation partagée que prévu ;
  • 60 ans et plus / Plutôt femme : résidu positif (≈ 3,69)
    → les plus âgés déclarent plus souvent une situation “Plutôt femme” que prévu.

Les résidus permettent donc de comprendre où se situe l’association.

Comment commenter ?

On peut écrire :

On observe une association statistiquement significative entre le groupe d’âge et la répartition des repas. Les plus jeunes déclarent plus souvent une répartition partagée que ce qui serait attendu en cas d’indépendance, tandis que les personnes de 60 ans et plus déclarent moins souvent une répartition partagée et plus souvent une répartition plutôt féminine. Cette association ne permet pas de conclure à un effet causal de l’âge. {.blockquote}

Différents types de résidus

Le tableau affiché par chisq.test() correspond à des résidus standardisés.

Mais plusieurs types de résidus existent :

  • résidus bruts : écart entre observé et attendu ;
  • résidus standardisés : (observé - attendu) / attendu (tiennent compte de la taille attendue des effectifs)
  • résidus ajustés : prennent aussi en compte la structure des lignes et colonnes

En pratique, les résidus standardisés ou ajustés sont les plus utilisés pour interpréter un khi².

Visualiser les résidus

Représenter les résidus sous forme de heatmap. > repérer rapidement quelles cases contribuent le plus à l’association.
Lecture

  • résidu positif → plus de cas observés que prévu ;
  • résidu négatif → moins de cas observés que prévu ;
  • plus la couleur est intense, plus la case contribue au χ².
residus <- as.data.frame(test_khi2$residuals)

ggplot(residus, aes(x = Var2, y = Var1, fill = Freq)) +
  geom_tile() +
  geom_text(aes(label = round(Freq, 2))) +
  labs(
    x = "Répartition des repas",
    y = "Groupe d'âge",
    fill = "Résidu"
  )

À vous — Appliquer le test du khi²

On reprend l’exercice précédent :

La répartition du linge varie-t-elle selon le niveau de diplôme ?

Variables : diplome et linge_genre

Test du khi2

table(ERFI_couple$diplome, ERFI_couple$linge_genre) 
                
                 Partagé Plutôt femme Plutôt homme
  Au plus brevet     115         1740           56
  CAP/Bac pro        173         1903           65
  Bac à Bac+2        128          715           47
  Bac+3 ou plus      257          677           49
test_khi2_linge <- chisq.test(
  table(ERFI_couple$diplome, ERFI_couple$linge_genre)
)

test_khi2_linge

    Pearson's Chi-squared test

data:  table(ERFI_couple$diplome, ERFI_couple$linge_genre)
X-squared = 325.16, df = 6, p-value < 2.2e-16

Vérifier les effectifs attendus

test_khi2_linge$expected
                
                  Partagé Plutôt femme Plutôt homme
  Au plus brevet 217.0638    1623.9468     69.98937
  CAP/Bac pro    243.1887    1819.3983     78.41300
  Bac à Bac+2    101.0920     756.3122     32.59578
  Bac+3 ou plus  111.6555     835.3426     36.00186

Interpréter la p-value

χ² = 325,16 ; ddl = 6 ; p-value < 0,001

Association statistiquement significative entre niveau de diplôme et répartition du linge dans le couple

→ On rejette H0 (hypothèse d’indépendance) :
la répartition du linge varie selon le niveau de diplôme.

Analyser les écarts

test_khi2_linge$residuals
                
                   Partagé Plutôt femme Plutôt homme
  Au plus brevet -6.927524     2.879858    -1.672176
  CAP/Bac pro    -4.500860     1.959978    -1.514718
  Bac à Bac+2     2.676229    -1.502201     2.522952
  Bac+3 ou plus  13.754931    -5.478548     2.166301

Où se situe l’association ?

Les résidus montrent que l’association est surtout portée par certaines catégories.

  • Moins diplômé·es → moins de partagé, plus de plutôt femme
  • Plus diplômé·es (Bac+3 ou +) → beaucoup plus de partagé, moins de plutôt femme

→ L’écart le plus marqué :
répartition “partagée” chez les plus diplômé·es (surreprésentée)

Conclure

Les résultats mettent en évidence une association statistiquement significative entre le niveau de diplôme et la répartition du linge au sein du couple, les personnes les plus diplômées déclarant plus souvent une organisation partagée, sans que cette relation ne puisse être interprétée comme causale. {.blockquote}

Attention aux grands échantillons

On a trouvé une p-value très faible.

Question

  • Peut-on en conclure que la relation est forte ?

Importance des différences

Avec un grand échantillon :

même de très petits écarts peuvent devenir significatifs

→ le test détecte facilement des différences
→ mais ces différences peuvent être faibles en pratique

Exercice rapide

Deux groupes :

  • Groupe A : 52 % “Partagé”
  • Groupe B : 50 % “Partagé”

Échantillon : 15 000 individus

Question

  • Le test peut-il être significatif ?
  • Cette différence vous semble-t-elle importante ?

Correction

Oui, le test peut être significatif.

Mais :

la différence est très faible (2 points)
→ significatif mais peu important

Bonnes pratiques

Après un test significatif, toujours se demander :

  • Quelle est l’ampleur des écarts ?
  • Les différences sont-elles visibles dans les pourcentages ?
  • Sont-elles substantiellement intéressantes ?

Limite du khi²

Le test du khi² répond à une seule question :

existe-t-il une association ?

Question

Que ne permet-il pas de savoir ?

Correction

Le khi² ne permet pas de savoir :

  • si la relation est forte
  • si elle est causale
  • quelles modalités expliquent le plus la relation

Aller plus loin

Après avoir établi l’existence d’un lien :

il faut mesurer son intensité

Question

Comment faire ?

Réponse

On utilise une taille d’effet

Pour le khi² :

le V de Cramer

Principe du V de Cramer

Le V de Cramer sert à mesurer :

la force du lien entre deux variables qualitatives

Intuition

Le V de Cramer compare :

ce qu’on observe
à ce qu’on attendrait s’il n’y avait aucun lien

  • si les écarts sont petits → V proche de 0
  • si les écarts sont grands → V plus élevé

Échelle de lecture

Le V de Cramer varie entre :

  • 0 → pas de lien
  • 1 → lien très fort

Repères simples

  • ~ 0,1 → lien faible
  • ~ 0,3 → lien moyen
  • ~ 0,5 → lien fort

À interpréter avec prudence

Calcul du V de Cramer dans notre exemple

On a observé une relation significative entre age_cat et repas_genre.

Mais cette relation est-elle importante ?

cramers_v(test_khi2)
Cramer's V (adj.) |       95% CI
--------------------------------
0.11              | [0.09, 1.00]

- One-sided CIs: upper bound fixed at [1.00].

Questions

  • Quelle est la valeur du V de Cramer ?
  • Est-elle proche de 0 ou de 1 ?
  • Comment interpréter cette valeur ?

Correction — Lecture du résultat

V = 0,11 IC à 95 % ≈ [0,09 ; 1,00]

La valeur est proche de 0
→ l’association est faible

L’intervalle de confiance indique l’incertitude autour de cette estimation
→ ici, la borne supérieure est fixée à 1 (convention technique)

Interprétation

Il existe une association statistiquement significative entre l’âge et la répartition des repas.

Mais :

cette association est de faible intensité

Mettre en cohérence les résultats

  • le test du khi² → association significative
  • les résidus → écarts localisés (jeunes vs plus âgés)
  • le V de Cramer → faible intensité globale

Conclusion complète

On observe une association statistiquement significative entre le groupe d’âge et la répartition des repas (χ² significatif, p < 0,001). Les jeunes déclarent plus souvent une répartition partagée, tandis que les plus âgés déclarent plus souvent une répartition plutôt féminine. Toutefois, la taille d’effet (V de Cramer = 0,11) indique que cette association reste faible. {.blockquote}

À vous — Calculer le V de Cramer

On reprend l’exercice précédent :

La répartition du linge varie-t-elle selon le niveau de diplôme ?

Variables : diplome et linge_genre

cramers_v(test_khi2_linge)
Cramer's V (adj.) |       95% CI
--------------------------------
0.16              | [0.15, 1.00]

- One-sided CIs: upper bound fixed at [1.00].

Valeur plus élevée que pour age_cat et repas_genre (0,11) Mais elle reste relativement proche de 0

→ l’association est faible à modérée

Interprétation

Il existe une association statistiquement significative entre le niveau de diplôme et la répartition du linge.

Mais :

cette association reste modérée et pas très forte

D’autres indicateurs

Le V de Cramer mesure : > Force globale d’une association entre deux variables qualitatives.

Mais d’autres indicateurs existent :

  • Phi → cas particulier des tableaux 2 × 2 (même fonctionnement que V de Cramer) ;
  • Odds ratio / risque relatif → comparaison de probabilités (RR) ou de risques (OR) entre groupes.

Le choix de l’indicateur dépend toujours
du type de données et de la question de recherche.

Et si les variables sont ordinales ?

Certaines variables = ordre entre les modalités (ex : diplôme, degré d’accord, etc.).

Méthodes tenant compte du sens et de la progression des modalités :

  • tests de tendance ;
  • gamma de Goodman-Kruskal ;
  • tau de Kendall ;
  • corrélation de Spearman.

Ces méthodes cherchent à savoir : > lorsque l’une des variables augmente, > l’autre tend-elle aussi à augmenter (ou diminuer) ?

Transition vers séance 3

Dans la prochaine séance :

nous travaillerons sur des variables quantitatives.

Nous verrons notamment :

  • covariance et corrélation ;
  • corrélation de Pearson ;
  • corrélation de Spearman ;
  • relation entre deux variables quantitatives.

L’objectif restera le même :

comprendre et interpréter une relation entre variables.