library(rstatix)
tulip <- c(red = 81, yellow = 50, white = 27)
tulip red yellow white
81 50 27
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.
23 juin 2026
7 juillet 2026
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(...).pairwise_chisq_gof_test()) pour voir quelles catégories diffèrent.multinom_test()).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.
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 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 :
# 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 :
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 :
# 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.)
Lorsque le test à proportions égales est significatif, les comparaisons par paires montrent quelles couleurs diffèrent :
# 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.
L’approximation du khi-deux nécessite des effectifs attendus ≥ 5. Pour les petits échantillons, le test multinomial exact ne fait aucune approximation :
# 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.)
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))
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\)).
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.
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 →
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.
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.
Remplissez le blanc avec chisq_test (sans p = proportions égales). Pour la question 2, rappelez-vous le suivi par paires.
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).
multinom_test()).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.
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.
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
✓ Vous êtes Pro — continuez. The runtime is the judge.
Prêt à passer à la vitesse supérieure ?
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.
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.
@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}
}