Test exact de Fisher en R : association dans les petits tableaux de contingence
L’alternative exacte au chi-deux quand les effectifs des cases sont faibles — testez l’association dans les tableaux 2×2 et plus grands, avec l’odds ratio
Apprenez à exécuter le test exact de Fisher en R — l’alternative exacte au test d’indépendance du chi-deux quand les effectifs attendus des cases sont faibles (< 5). Testez l’association dans un tableau 2×2 (avec l’odds ratio et son intervalle de confiance) ou un tableau R×C plus grand, avec fisher.test() de base et fisher_test() de rstatix.
Date de publication
23 juin 2026
Modifié
7 juillet 2026
AstucePoints clés
Le test exact de Fisher vérifie si deux variables catégorielles sont associées — comme le test du chi-deux — mais il est exact, donc correct quand les effectifs des cases sont faibles (effectifs attendus < 5) et que le chi-deux ne l’est pas.
Exécutez-le avec fisher.test() de base ou rstatix::fisher_test() sur le tableau de contingence.
Pour un tableau 2×2, il renvoie aussi l’odds ratio et son intervalle de confiance — une taille d’effet intégrée.
Pour les grands tableaux R×C, il peut être lent ; ajoutez simulate.p.value = TRUE pour une p-value de Monte-Carlo.
Utilisez-le dès que l’hypothèse sur les effectifs attendus d’un chi-deux échoue ; sinon les deux donnent la même réponse.
Introduction
Le test exact de Fisher analyse un tableau de contingence pour vérifier si deux variables catégorielles sont associées — la même question que le test d’indépendance du chi-deux. La différence : le chi-deux repose sur une approximation pour grands échantillons qui s’effondre quand les effectifs des cases sont faibles, alors que le test de Fisher calcule la probabilité exacte du tableau observé (et des tableaux plus extrêmes) sous l’hypothèse d’indépendance. C’est donc le test à privilégier avec de faibles effectifs.
Cette leçon l’applique sur un petit tableau 2×2 (où il donne aussi un odds ratio) et un tableau R×C plus grand, avec R de base et rstatix.
Note
Hypothèses du test exact de Fisher.H₀ : les variables en ligne et en colonne sont indépendantes. Hₐ : elles sont associées. Pour un tableau 2×2, cela équivaut à tester si l’odds ratio = 1.
Un tableau 2×2 : association sur petit échantillon + odds ratio
Un petit essai : sur 10 patients sous médicament, 9 ont été guéris ; sur 10 sous placebo, 3 ont été guéris. Avec des effectifs aussi faibles, le chi-deux n’est pas fiable — utilisez Fisher :
outcome
treatment Cured NotCured
Drug 9 1
Placebo 3 7
fisher.test(tx)
Fisher's Exact Test for Count Data
data: tx
p-value = 0.01977
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
1.387127 1039.290968
sample estimates:
odds ratio
17.27587
L’association est significative, p = 0.02. Pour un tableau 2×2, le test de Fisher rapporte aussi l’odds ratio — ici ≈ 17, ce qui signifie que les cotes de guérison sont environ 17× plus élevées sous le médicament — avec un large IC à 95 % (reflétant le petit échantillon). L’IC exclut 1, en cohérence avec la p-value significative.
Astuce
Tests unilatéraux. Pour une hypothèse directionnelle (par exemple, le médicament est meilleur, pas seulement différent), passez alternative = "greater" (ou "less").
Un tableau R×C plus grand
Le test de Fisher ne se limite pas au 2×2. Voici le tableau classique de satisfaction au travail d’Agresti (revenu × satisfaction, 4×4) avec plusieurs cases à faibles effectifs :
Fisher's Exact Test for Count Data
data: job
p-value = 0.7827
alternative hypothesis: two.sided
La p-value vaut 0.78 — non significative, donc aucune association n’a pu être établie entre le revenu et la satisfaction au travail. (Pour un grand tableau R×C, le calcul exact peut être lent ou gourmand en mémoire ; ajoutez simulate.p.value = TRUE pour obtenir une p-value de Monte-Carlo rapide à la place.)
Avec rstatix
rstatix::fisher_test() est le wrapper compatible avec le pipe (il renvoie une ligne tidy ; passez un objet table/as.table) :
Le test exact de Fisher a montré une association significative entre le traitement et la guérison (9/10 guéris sous le médicament contre 3/10 sous placebo), p = 0.02, odds ratio ≈ 17 (IC à 95 % de 1.4 à 1039). Le large intervalle reflète le petit échantillon.
NoteLes mathématiques (optionnel)
Pour un tableau 2×2 à marges fixes, la probabilité de tout tableau particulier suit la loi hypergéométrique : \(P = \dfrac{\binom{a+b}{a}\binom{c+d}{c}}{\binom{n}{a+c}}\). Le test de Fisher somme cette probabilité sur le tableau observé et tous les tableaux au moins aussi extrêmes, donnant une p-value exacte sans aucune approximation pour grands échantillons — c’est pourquoi il reste valide quand l’hypothèse sur les effectifs attendus du chi-deux échoue.
Essayez en direct
Exécutez le test de Fisher sur vos propres effectifs 2×2 et observez l’odds ratio. Modifiez les quatre nombres et relancez ; le bac à sable démarre au premier Run.
🟢 Avec un agent IA
Demandez à Prova« mon tableau de contingence a de faibles effectifs — exécute le test exact de Fisher au lieu du chi-deux et donne-moi l’odds ratio » — elle répond avec du code que vous pouvez exécuter sur votre propre tableau. The runtime is the judge.Demander à Prova →
Problèmes courants
Votre test de Fisher R×C est lent ou plante par manque de mémoire. Le calcul exact sur un grand tableau à gros effectifs est coûteux — ajoutez simulate.p.value = TRUE (et éventuellement B = 10000) pour une p-value de Monte-Carlo.
Vous vouliez l’odds ratio mais avez un tableau plus grand. L’odds ratio de Fisher n’est défini que pour les tableaux 2×2. Pour des tableaux plus grands, rapportez la p-value du test et utilisez le V de Cramér pour la force.
Vous avez quand même utilisé le chi-deux avec de faibles effectifs. Si un effectif attendu est inférieur à 5, la p-value du chi-deux n’est pas fiable — le test exact de Fisher est le bon choix.
Questions fréquentes
NoteQuand dois-je utiliser le test exact de Fisher plutôt que le chi-deux ?
Utilisez le test exact de Fisher quand votre tableau de contingence a de faibles effectifs de cases — précisément quand un effectif attendu est inférieur à 5, là où l’approximation du chi-deux n’est pas fiable. Le test de Fisher calcule une p-value exacte, il est donc valide pour les petits échantillons. Pour de grands effectifs, les deux tests concordent.
NoteLe test exact de Fisher fonctionne-t-il pour des tableaux plus grands que 2×2 ?
Oui — fisher.test() gère les tableaux R×C. Mais le calcul exact peut être lent ou gourmand en mémoire pour les grands tableaux à gros effectifs ; ajoutez simulate.p.value = TRUE pour une p-value de Monte-Carlo. L’odds ratio intégré, en revanche, n’est rapporté que pour les tableaux 2×2.
NoteQu’est-ce que l’odds ratio du test de Fisher ?
Pour un tableau 2×2, fisher.test() renvoie l’odds ratio du maximum de vraisemblance conditionnel et son intervalle de confiance — une taille d’effet pour l’association. Un odds ratio de 1 signifie aucune association ; l’IC excluant 1 correspond à un test significatif. Pour en savoir plus sur les odds ratios, voir la leçon dédiée sur l’ odds ratio.
Testez vos connaissances
ImportantPratique
Exécutez-le. Dans la cellule interactive, exécutez le test exact de Fisher sur le tableau 2×2. Remplissez le blanc. L’association est-elle significative, et quel est l’odds ratio ?
Conceptuel. Un relecteur vous demande pourquoi vous avez utilisé le test exact de Fisher plutôt que le chi-deux sur votre tableau 2×2 où un effectif attendu valait 3. Quelle est votre réponse ?
NoteIndice
Remplissez le blanc avec fisher.test. Regardez la p-value et l’estimation de l’odds ratio. Pour la question 2, rappelez-vous l’hypothèse du chi-deux qui échoue avec de faibles effectifs attendus.
NoteSolution
tab <-matrix(c(9, 1, 3, 7), nrow =2, byrow =TRUE)fisher.test(tab) #> p = 0.02, odds ratio ≈ 17 — significant association.
Pour la question 2 : le chi-deux repose sur une approximation pour grands échantillons qui exige que chaque effectif attendu soit d’au moins ~5. Avec un effectif attendu de 3, cette hypothèse échoue et la p-value du chi-deux serait non fiable, donc le test exact de Fisher — qui calcule la probabilité exacte — est le bon choix.
AstuceQuel test, quand ?
Deux variables catégorielles, faibles effectifs → test exact de Fisher (cette leçon).
Vous savez maintenant exécuter le test exact de Fisher en R : fisher.test() (ou rstatix::fisher_test()) sur le tableau de contingence donne une p-value exacte pour l’association — correcte quand les effectifs des cases sont trop faibles pour le chi-deux — plus l’odds ratio pour un tableau 2×2. Privilégiez-le dès que l’hypothèse sur les effectifs attendus du chi-deux échoue, et utilisez simulate.p.value = TRUE pour les grands tableaux R×C.
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.
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 exact de Fisher en R : association dans les petits
tableaux de contingence},
date = {2026-06-23},
url = {https://www.datanovia.com/learn/biostatistics/categorical/fisher-exact-test-in-r},
langid = {fr}
}