Test d’ajustement du khi-deux en R : proportions observées vs attendues

Tester si les proportions d’une variable catégorielle correspondent à une distribution théorique — proportions attendues égales ou inégales, avec post-hoc par paires

Apprenez à exécuter le test d’ajustement du khi-deux en R — comparez les proportions observées d’une variable catégorielle aux proportions attendues (théoriques), égales ou inégales. Utilisez rstatix chisq_test() avec un argument p, enchaînez avec des comparaisons post-hoc par paires, et utilisez le test multinomial exact pour les petits échantillons.

Date de publication

23 juin 2026

Modifié

7 juillet 2026

AstucePoints clés
  • Le test d’ajustement du khi-deux compare les proportions observées d’une variable catégorielle aux proportions attendues (théoriques) — les données suivent-elles la distribution attendue ?
  • Exécutez-le avec rstatix::chisq_test() (ou chisq.test() de base) : pour des proportions attendues égales, passez juste les effectifs ; pour des proportions attendues inégales, ajoutez p = c(...).
  • Un résultat significatif signifie que les proportions observées diffèrent des proportions attendues.
  • Enchaînez avec des comparaisons par paires (pairwise_chisq_gof_test()) pour voir quelles catégories diffèrent.
  • Pour les petits échantillons (effectifs attendus < 5), utilisez le test multinomial exact (multinom_test()).

Introduction

Le test d’ajustement du khi-deux porte sur une seule variable catégorielle : il demande si les proportions de catégories observées correspondent à un ensemble de proportions attendues. Contrairement au test d’indépendance (qui nécessite deux variables et un tableau croisé), l’ajustement compare la distribution d’une variable à une distribution théorique.

Le scénario classique : des chercheurs ont récolté des tulipes sauvages — 81 rouges, 50 jaunes, 27 blanches — et demandent si les couleurs sont également réparties, ou si elles suivent un ratio attendu. Cette leçon traite les deux cas avec rstatix.

Note

Hypothèses de l’ajustement. H₀ : les proportions observées sont égales aux proportions attendues (les données suivent la distribution). Hₐ : elles diffèrent. Un résultat significatif rejette la distribution attendue.

Les données : couleurs de tulipes

library(rstatix)

tulip <- c(red = 81, yellow = 50, white = 27)
tulip
   red yellow  white 
    81     50     27 

Proportions attendues égales

Les trois couleurs sont-elles aussi fréquentes ? Si oui, chaque proportion attendue est de 1/3. Passez juste les effectifs — chisq_test() utilise par défaut des proportions égales :

library(rstatix)

tulip <- c(red = 81, yellow = 50, white = 27)
tulip %>% chisq_test()
# A tibble: 1 × 6
      n statistic          p    df method          p.signif
* <int>     <dbl>      <dbl> <dbl> <chr>           <chr>   
1     3      27.9 0.00000088     2 Chi-square test ****    

Les couleurs ne sont pas également réparties, χ²(2) = 27.9, p < 0.0001 — le rouge est bien plus fréquent que le blanc. Le même test en base R donne une statistique et une p-value identiques :

tulip <- c(red = 81, yellow = 50, white = 27)
chisq.test(tulip)                       # base R: equal proportions by default

    Chi-squared test for given probabilities

data:  tulip
X-squared = 27.886, df = 2, p-value = 8.803e-07

Proportions attendues inégales

Les couleurs suivent-elles un ratio connu de 3 : 2 : 1 (rouge : jaune : blanc) ? Ce ratio donne des proportions attendues de 1/2, 1/3, 1/6. Passez-les avec p :

library(rstatix)

tulip <- c(red = 81, yellow = 50, white = 27)
tulip %>% chisq_test(p = c(1/2, 1/3, 1/6))
# A tibble: 1 × 6
      n statistic     p    df method          p.signif
* <int>     <dbl> <dbl> <dbl> <chr>           <chr>   
1     3     0.203 0.904     2 Chi-square test ns      

Ici χ²(2) = 0.20, p = 0.90 — non significatif, donc les effectifs observés suivent bien le ratio 3 : 2 : 1. (L’ordre de p doit correspondre à l’ordre des catégories.)

Post-hoc : quelles catégories diffèrent ?

Lorsque le test à proportions égales est significatif, les comparaisons par paires montrent quelles couleurs diffèrent :

library(rstatix)

tulip <- c(red = 81, yellow = 50, white = 27)
pairwise_chisq_gof_test(tulip)
# A tibble: 3 × 8
      n group1 group2 statistic           p    df       p.adj p.adj.signif
* <int> <chr>  <chr>      <dbl>       <dbl> <dbl>       <dbl> <chr>       
1     2 red    yellow      7.34 0.00676         1 0.0135      *           
2     2 red    white      27    0.000000203     1 0.000000609 ****        
3     2 yellow white       6.87 0.00876         1 0.0135      *           

Les trois couleurs diffèrent significativement les unes des autres (p.adj < 0.05) — rouge vs blanc le plus fortement.

Petits échantillons : le test multinomial exact

L’approximation du khi-deux nécessite des effectifs attendus ≥ 5. Pour les petits échantillons, le test multinomial exact ne fait aucune approximation :

library(rstatix)

tulip <- c(red = 81, yellow = 50, white = 27)
multinom_test(tulip)
# A tibble: 1 × 2
            p p.signif
*       <dbl> <chr>   
1 0.000000711 ****    

(Avec ces effectifs élevés, il concorde avec le khi-deux ; le test exact compte lorsque les effectifs sont faibles.)

Visualisez-le

library(rstatix)
library(ggpubr)

tulip <- c(red = 81, yellow = 50, white = 27)
df <- data.frame(color = names(tulip), count = as.numeric(tulip))
stat.test <- chisq_test(tulip)

ggbarplot(df, x = "color", y = "count", fill = "color", palette = "jco",
          label = TRUE, ylab = "Count", xlab = "Tulip colour") +
  labs(subtitle = get_test_label(stat.test, detailed = TRUE))

A bar chart of observed tulip-colour counts — red 81, yellow 50, white 27 — with the goodness-of-fit chi-square p-value in the subtitle.

Rapport

Un test d’ajustement du khi-deux a montré que les couleurs de tulipes n’étaient pas également réparties, χ²(2) = 27.9, p < 0.001 ; les comparaisons par paires ont trouvé que les trois couleurs différaient. Cependant, les effectifs étaient cohérents avec le ratio attendu de 3 : 2 : 1, χ²(2) = 0.20, p = 0.90.

L’ajustement utilise la même statistique que le test d’indépendance, \(\chi^2 = \sum_i \dfrac{(O_i - E_i)^2}{E_i}\), mais l’effectif attendu de chaque catégorie est \(E_i = N \times p_i\) (total × la proportion hypothétique), et les degrés de liberté valent \(k - 1\) pour \(k\) catégories (un de moins que le nombre de catégories, puisque les effectifs somment à \(N\)).

Essayez en direct

Testez l’équité d’un dé — les six faces sont-elles également probables ? Modifiez les effectifs et relancez ; le bac à sable démarre au premier Run.

🟢 Avec un agent IA

Demandez à Prova « J’ai des effectifs dans des catégories et des proportions attendues — exécute un test d’ajustement du khi-deux et dis-moi si mes données suivent la distribution » — elle répond avec du code rstatix que vous pouvez exécuter sur vos propres effectifs. The runtime is the judge. Ask Prova →

Problèmes courants

Vous avez confondu l’ordre de p. Les proportions attendues dans p = c(...) doivent être dans le même ordre que les effectifs/catégories — un décalage teste la mauvaise hypothèse.

Les effectifs attendus sont inférieurs à 5. L’approximation du khi-deux n’est pas fiable — utilisez le test multinomial exact (multinom_test()).

Vous avez deux variables, pas une. L’ajustement concerne une variable catégorielle vs des proportions attendues. Pour tester si deux variables sont associées, utilisez le test d’indépendance du khi-deux.

Questions fréquentes

Il teste si les proportions observées d’une seule variable catégorielle correspondent à un ensemble de proportions attendues (théoriques) — par exemple, si les couleurs de tulipes sont également fréquentes, ou suivent un ratio connu. Un résultat significatif signifie que les données ne suivent pas la distribution attendue.

L’ajustement utilise une variable catégorielle et la compare à des proportions attendues. L’indépendance utilise deux variables catégorielles et teste si elles sont associées (à partir d’un tableau croisé). Même statistique, configuration différente.

Passez-les à l’argument p sous forme de vecteur dont la somme vaut 1, dans le même ordre que les catégories — p. ex. chisq_test(counts, p = c(1/2, 1/3, 1/6)) pour un ratio 3 : 2 : 1. Sans p, le test suppose des proportions égales.

Testez vos connaissances

  1. Exécutez-le. Dans la cellule live, testez si un dé est équitable (chaque face 1/6). Remplissez le blanc. Est-il équitable ?
  2. Conceptuel. Votre test d’ajustement contre des proportions égales est significatif. Quel suivi vous indique quelles catégories sont sur- ou sous-représentées ?

Remplissez le blanc avec chisq_test (sans p = proportions égales). Pour la question 2, rappelez-vous le suivi par paires.

die <- c(8, 12, 9, 11, 6, 14)
chisq_test(die)   #> typically not significant for these counts — consistent with a fair die.

Pour la question 2 : exécutez des comparaisons par paires (pairwise_chisq_gof_test()) pour voir quelles catégories diffèrent, ou inspectez les résidus standardisés pour voir lesquelles sont sur- (positif) ou sous-représentées (négatif).

AstuceQuel test, quand ?
  • Une variable catégorielle vs des proportions attenduesajustement du khi-deux (cette leçon).
  • Une variable, petits effectifs → le test multinomial exact (multinom_test()).
  • Deux variables catégorielles associées ?test d’indépendance du khi-deux.
  • Une proportion vs une valeur attendue → le z-test de proportion / binomial exact.

Conclusion

Vous savez maintenant exécuter le test d’ajustement du khi-deux en R : passez les effectifs à chisq_test() pour des proportions attendues égales, ajoutez p = c(...) pour des proportions inégales, enchaînez un résultat significatif avec pairwise_chisq_gof_test(), et basculez vers le test multinomial exact pour les petits échantillons. C’est le test pour vérifier si une variable catégorielle suit une distribution théorique.

Leçons connexes

Cette page vous a-t-elle été utile ?

Prouvez que vous savez le faire. Maîtrisez toute la série Analyse catégorielle en R — suivez votre parcours, construisez des projets et obtenez un certificat.

Commencer gratuitement →

Passez à Pro — Prova illimité sur vos propres données et un certificat vérifiable qui atteste la compétence.

dès 15 $/mois facturé annuellement

Passer à Pro →

✓ Vous êtes Pro — continuez. The runtime is the judge.

Recevez les nouvelles leçons R & Python par e-mail

Pratique, reproductible, sans spam. Désinscription à tout moment.

Double opt-in. Nous ne partageons jamais votre e-mail.

Partager cette pageXLinkedInRedditHN
Note

Chaque résultat de cette page a été produit par le code montré, exécuté au moment du build contre un environnement R figé — modifiez n’importe quel bloc et faites Run pour le reproduire vous-même.

Réutilisation

Citation

BibTeX
@online{2026,
  author = {},
  title = {Test d’ajustement du khi-deux en R : proportions observées vs
    attendues},
  date = {2026-06-23},
  url = {https://www.datanovia.com/learn/biostatistics/categorical/chi-square-goodness-of-fit-test-in-r},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
“Test d’ajustement du khi-deux en R : proportions observées vs attendues.” 2026. June 23. https://www.datanovia.com/learn/biostatistics/categorical/chi-square-goodness-of-fit-test-in-r.