Test Z de proportion en R : tests sur une et deux proportions
Comparer une proportion à une valeur attendue, ou deux proportions entre elles — avec prop.test() et le test binomial exact
Apprenez à réaliser des tests z de proportion en R. Utilisez prop.test() pour le test z sur une proportion (une proportion observée diffère-t-elle d’une valeur attendue ?) et le test z sur deux proportions (deux groupes diffèrent-ils par leur proportion ?), ainsi que le test binomial exact (binom.test) pour les petits échantillons — avec la correction de continuité de Yates, les intervalles de confiance et l’interprétation.
Date de publication
23 juin 2026
Modifié
11 juillet 2026
AstucePoints clés
Un z-test de proportion compare une proportion (un décompte de succès sur un total) à une valeur attendue, ou compare les proportions de deux groupes.
Réalisez les deux avec prop.test() de base R : prop.test(x, n, p = 0.5) pour une proportion, prop.test(x = c(x1, x2), n = c(n1, n2)) pour deux.
Pour les petits échantillons, utilisez le test binomial exactbinom.test() au lieu de l’approximation normale.
prop.test() applique par défaut la correction de continuité de Yates — ajoutez correct = FALSE pour le z-test non corrigé (important quand les effectifs attendus sont faibles).
L’hypothèse nulle est « la proportion égale la valeur attendue » (une proportion) ou « les deux proportions sont égales » (deux proportions) ; p < 0.05 la rejette.
Un z-test de proportion répond à des questions sur des effectifs et des taux : la proportion d’un événement diffère-t-elle d’une valeur attendue, ou deux groupes diffèrent-ils par la fréquence à laquelle l’événement survient ? Il utilise l’approximation normale de la loi binomiale — valable pour des échantillons raisonnablement grands — et se décline en deux formes :
z-test sur une proportion — comparer une proportion observée à une valeur connue/attendue.
z-test sur deux proportions — comparer les proportions de deux groupes indépendants.
Les deux se réalisent avec prop.test() de base R ; pour les petits échantillons, le test binomial exact (binom.test()) est préférable. Cette leçon parcourt les deux à travers les exemples classiques.
Note
Hypothèses. Une proportion — H₀ : la proportion = la valeur attendue p₀ ; Hₐ : elle diffère. Deux proportions — H₀ : les deux proportions de groupe sont égales ; Hₐ : elles diffèrent.
z-test sur une proportion
Scénario. Sur 160 souris ayant développé un cancer spontané, 95 étaient des mâles et 65 des femelles. La proportion de mâles diffère-t-elle des 50 % attendus ? Ici x = 95 succès sur n = 160, testés contre p = 0.5 :
res <-prop.test(x =95, n =160, p =0.5)res
1-sample proportions test with continuity correction
data: 95 out of 160, null probability 0.5
X-squared = 5.2562, df = 1, p-value = 0.02187
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.5131775 0.6697480
sample estimates:
p
0.59375
La proportion observée est de 0.594 (95/160), significativement différente de 0.5, p = 0.022, avec un intervalle de confiance à 95 % de [0.513, 0.670] qui exclut 0.5 — davantage de souris cancéreuses sont des mâles que le hasard ne le prédirait.
Astuce
La correction de continuité de Yates.prop.test() l’applique par défaut (elle améliore l’approximation normale, importante quand les succès/échecs attendus sont faibles). Pour le z-test non corrigé des manuels, ajoutez correct = FALSE :
prop.test(x =95, n =160, p =0.5, correct =FALSE)$p.value
[1] 0.01770607
Petits échantillons — le test binomial exact. Quand l’échantillon est petit (ou que les effectifs attendus < 5), utilisez le test exact binom.test() au lieu de l’approximation normale :
binom.test(x =95, n =160, p =0.5)$p.value
[1] 0.02157383
Le test exact concorde (p = 0.022).
z-test sur deux proportions
Scénario. Dans deux groupes de 500 personnes chacun, 490 sont fumeurs dans le premier et 400 dans le second. Les proportions de fumeurs diffèrent-elles ? Passez les succès et les totaux sous forme de vecteurs :
res <-prop.test(x =c(490, 400), n =c(500, 500))res
2-sample test for equality of proportions with continuity correction
data: c(490, 400) out of c(500, 500)
X-squared = 80.909, df = 1, p-value < 2.2e-16
alternative hypothesis: two.sided
95 percent confidence interval:
0.1408536 0.2191464
sample estimates:
prop 1 prop 2
0.98 0.80
Les proportions — 0.98 contre 0.80 — diffèrent très significativement, p < 0.0001, et l’intervalle de confiance de la différence exclut 0. Les deux groupes ont des taux de tabagisme différents.
Note
Pour un tableau 2 × 2, prop.test() est exactement équivalent au test du chi-square d’indépendance (chisq.test()) — la même p-value, juste un format d’entrée différent (vecteurs contre matrice).
Tests unilatéraux (directionnels)
Par défaut, prop.test() réalise un test bilatéral (alternative = "two.sided") : il demande seulement si la proportion est différente de la référence. Quand votre question a une direction — est-elle supérieure à 0.5 ?, le taux du groupe 1 est-il plus élevé que celui du groupe 2 ? — un test unilatéral (à une seule queue) répond exactement à cela, et concentre toute sa puissance du côté qui vous intéresse. Vous passez alternative = "greater" ou alternative = "less".
Décidez de la direction avant de voir les données. Un test unilatéral n’est valable que si vous disposez d’une prédiction directionnelle à l’avance — issue de la théorie ou d’une étude antérieure. Choisir "greater" ou "less"après avoir jeté un œil aux résultats pour retomber sur la plus petite p-value, c’est du p-hacking : cela gonfle le taux de faux positifs et invalide le test. Si vous n’êtes pas sûr du sens que cela prendra, restez bilatéral (voir Bland & Altman, One and two sided tests of significance, BMJ 1994).
Une proportion — y a-t-il plus de la moitié de mâles ? La question des souris cancéreuses a une direction naturelle : y en a-t-il plus de la moitié qui sont des mâles, c’est-à-dire la proportion est-elle supérieure à 0.5 ? Testez cette unique queue avec alternative = "greater" :
prop.test(x =95, n =160, p =0.5, alternative ="greater")
1-sample proportions test with continuity correction
data: 95 out of 160, null probability 0.5
X-squared = 5.2562, df = 1, p-value = 0.01093
alternative hypothesis: true p is greater than 0.5
95 percent confidence interval:
0.5256923 1.0000000
sample estimates:
p
0.59375
La p unilatérale = 0.011 — environ la moitié du 0.022 bilatéral, car toute la probabilité se trouve désormais dans la queue supérieure. L’intervalle de confiance change lui aussi : il devient unilatéral, [0.526, 1] — borné en bas et ouvert en haut. Il indique que la vraie proportion est au moins de 0.526, ce qui est cohérent avec « plus de la moitié sont des mâles ». Lisez "greater" comme testant p > p₀ ; le miroir "less" teste p < p₀ et renvoie ici la valeur complémentaire p = 0.989. Les deux p-values unilatérales ont pour somme exactement 1 (la même statistique z, répartie entre les deux queues), ce qui explique précisément pourquoi vous ne pouvez pas pêcher la queue significative après coup.
Deux proportions — le taux du groupe 1 est-il plus élevé ? Pour deux groupes, "greater" teste si la proportion du premier groupe dépasse celle du second — prop 1 > prop 2. Le taux de tabagisme est-il plus élevé dans le groupe 1 ?
prop.test(x =c(490, 400), n =c(500, 500), alternative ="greater")
2-sample test for equality of proportions with continuity correction
data: c(490, 400) out of c(500, 500)
X-squared = 80.909, df = 1, p-value < 2.2e-16
alternative hypothesis: greater
95 percent confidence interval:
0.1468258 1.0000000
sample estimates:
prop 1 prop 2
0.98 0.80
La direction se confirme avec p < 0.0001 : la proportion de fumeurs du groupe 1 (0.98) est significativement supérieure à celle du groupe 2 (0.80), et l’intervalle de confiance unilatéral de la différence est [0.15, 1] — l’écart vaut au moins 0.15. L’alternative se calque directement sur la question : pour deux proportions, "greater" signifie que le premier groupe est plus élevé, "less" signifie que le premier groupe est plus bas.
Visualiser les proportions
Un diagramme en barres rend la comparaison concrète :
library(ggpubr)prop.df <-data.frame(group =c("Group 1", "Group 2"),proportion =c(490/500, 400/500))ggbarplot(prop.df, x ="group", y ="proportion", fill ="group", palette ="jco",label =TRUE, lab.nb.digits =2, ylab ="Proportion of smokers", xlab =FALSE)
Rapport
Un z-test sur deux proportions a montré que la proportion de fumeurs différait significativement entre les deux groupes (0.98 contre 0.80), X² = 80.9, p < 0.0001. [Une proportion : la proportion de souris cancéreuses mâles (0.59) différait significativement des 0.5 attendus, p = 0.022, IC à 95 % [0.51, 0.67].]
NoteLes mathématiques (optionnel)
La statistique z sur une proportion est \(z = \dfrac{\hat{p} - p_0}{\sqrt{p_0 (1 - p_0) / n}}\) — la proportion observée moins l’attendue, mise à l’échelle par l’erreur standard sous l’hypothèse nulle. Pour deux proportions, \(z = \dfrac{\hat{p}_1 - \hat{p}_2}{\sqrt{\hat{p}(1 - \hat{p})\,(1/n_1 + 1/n_2)}}\) en utilisant la proportion poolée \(\hat{p}\). prop.test() rapporte \(z^2\) sous forme de statistique du chi-square (X-squared), c’est pourquoi la sortie affiche X-squared plutôt que z.
Essayez en direct
Réalisez un test de proportion sur vos propres effectifs. Modifiez les succès, les totaux ou la proportion attendue. Le bac à sable démarre au premier Run.
🟢 Avec un agent IA
Demandez à Prova« J’ai des décomptes de succès et de totaux — réalise le bon test de proportion (une proportion contre une valeur attendue, ou comparaison de deux proportions) et dis-moi s’il faut utiliser le test binomial exact » — elle répond avec du code que vous pouvez exécuter sur vos propres effectifs. The runtime is the judge.Demander à Prova →
Problèmes fréquents
Effectifs attendus faibles. Quand le nombre attendu de succès ou d’échecs est inférieur à ~5, l’approximation normale n’est pas fiable — utilisez le test binomial exact (binom.test()) pour une proportion, ou le test exact de Fisher pour une comparaison 2 × 2.
Vous avez oublié que la correction de Yates compte.prop.test() corrige par défaut ; le z-test non corrigé nécessite correct = FALSE. Les deux donnent des p-values légèrement différentes, d’autant plus pour les petits échantillons — précisez laquelle vous avez utilisée.
Vous avez passé des proportions au lieu d’effectifs.prop.test() attend des décomptes de succès (x) et des totaux (n), pas la proportion elle-même. Pour deux groupes, les deux sont des vecteurs : x = c(x1, x2), n = c(n1, n2).
Questions fréquentes
NoteQu’est-ce qu’un z-test sur une proportion ?
Il teste si une proportion observée (un décompte de succès sur un total) diffère d’une proportion connue ou attendue. En R : prop.test(x = successes, n = total, p = expected). Par exemple, tester si 95 mâles sur 160 diffèrent des 50 % attendus.
NoteComment comparer deux proportions en R ?
Utilisez prop.test() avec des entrées vectorielles : prop.test(x = c(x1, x2), n = c(n1, n2)), où x1/x2 sont les succès et n1/n2 les totaux de chaque groupe. Il teste si les deux proportions de groupe sont égales.
NoteQuand utiliser binom.test() plutôt que prop.test() ?
Utilisez le test exact binom.test() pour les petits échantillons (ou quand le nombre attendu de succès/échecs est inférieur à environ 5), où l’approximation normale derrière prop.test() n’est pas fiable. Pour les grands échantillons, prop.test() (le z-test) convient et fournit des intervalles de confiance pour les proportions.
NoteQu’est-ce que la correction de continuité de Yates ?
C’est un petit ajustement qui améliore l’approximation normale de la loi binomiale discrète, appliqué par prop.test() par défaut (correct = TRUE). Il compte le plus quand les effectifs sont faibles. Pour le z-test non corrigé d’une proportion des manuels, mettez correct = FALSE.
NoteComment réaliser un test de proportion unilatéral en R ?
Passez alternative = "greater" ou alternative = "less" à prop.test() — la valeur par défaut est "two.sided". Pour une proportion, "greater" teste p > p₀ ; pour deux proportions, il teste si la proportion du premier groupe dépasse celle du second. Un test unilatéral a plus de puissance dans cette direction et renvoie un intervalle de confiance unilatéral, mais vous devez choisir la direction avant de voir les données — le choisir ensuite pour obtenir une plus petite p-value, c’est du p-hacking.
Testez vos connaissances
ImportantPratique
Exécutez-le. Dans la cellule interactive, réalisez un test sur une proportion de 95 succès sur 160 contre une valeur attendue de 0.5. Remplissez le blanc. La proportion est-elle significativement différente de 0.5 ?
Conceptuel. Vous n’avez que 12 observations. Pourquoi devriez-vous utiliser binom.test() plutôt que prop.test() ?
NoteIndice
Remplissez le blanc avec 0.5. Regardez la p-value et si l’intervalle de confiance exclut 0.5. Pour la question 2, rappelez-vous sur quelle hypothèse repose prop.test() et quand elle se révèle invalide.
NoteSolution
prop.test(x =95, n =160, p =0.5)#> p = 0.022 — the proportion (0.59) differs significantly from 0.5.
Pour la question 2 : prop.test() utilise l’approximation normale de la loi binomiale, qui n’est pas fiable pour les petits échantillons. Avec seulement 12 observations, le test binomial exact (binom.test()) donne la p-value correcte sans s’appuyer sur cette approximation.
AstuceQuel test, quand ?
Une proportion contre une valeur attendue, grand échantillon → z-test sur une proportion (prop.test(x, n, p)).
Une proportion, petit échantillon → test binomial exact (binom.test()).
Deux proportions → z-test sur deux proportions (prop.test(c(x1,x2), c(n1,n2))) — ou le test du chi-square équivalent sur un tableau 2 × 2.
Vous savez maintenant réaliser des tests z de proportion en R : le test sur une proportion (prop.test(x, n, p)) pour comparer une proportion observée à une valeur attendue, le test sur deux proportions (prop.test(c(x1, x2), c(n1, n2))) pour comparer deux groupes, et le test exact binom.test() pour les petits échantillons. Attention à la valeur par défaut de la correction de Yates et passez au test exact quand les effectifs sont faibles — puis rapportez les proportions, l’intervalle de confiance et la p-value.
Leçons connexes
t-test en R — comparer des moyennes (résultats continus) plutôt que des proportions. · Test de Wilcoxon en R — la comparaison non paramétrique de deux groupes pour des données continues. · Test de normalité en R — la vérification de l’hypothèse pour les tests à résultat continu.
Vous préférez un livre ? Comparing Groups: Numerical Variables est disponible en PDF téléchargeable — toutes les leçons de cette série, hors ligne et à vous.
Prouvez que vous savez le faire. Maîtrisez toute la série Comparaison de deux groupes 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 Z de proportion en R : tests sur une et deux
proportions},
date = {2026-06-23},
url = {https://www.datanovia.com/learn/biostatistics/two-groups/proportion-z-tests-in-r},
langid = {fr}
}