Test de Friedman en R : comparaison non paramétrique appariée
Comparez trois groupes appariés (répétés) ou plus sans l’hypothèse de normalité — le test de Friedman à la manière moderne, avec la taille d’effet Kendall W et les comparaisons par paires de suivi
Apprenez à exécuter le test de Friedman en R avec rstatix — l’alternative non paramétrique à l’ANOVA à mesures répétées à un facteur, pour trois groupes appariés ou plus quand la normalité échoue ou que la sortie est ordinale. Calculez le test, la taille d’effet Kendall W et les comparaisons de Wilcoxon des rangs signés par paires, puis affichez les p-values sur le graphique.
Date de publication
23 juin 2026
Modifié
7 juillet 2026
AstucePoints clés
Le test de Friedman est l’alternative non paramétrique à l’ ANOVA à mesures répétées à un facteur : il compare trois groupes appariés ou plus (les mêmes sujets mesurés de façon répétée) sans supposer la normalité.
Utilisez-le quand l’hypothèse de normalité de l’ANOVA à mesures répétées échoue, ou que la sortie est ordinale.
Exécutez-le avec rstatix friedman_test(score ~ time | id) — | id identifie le sujet répété.
Rapportez la taille d’effet Kendall W (friedman_effsize()) : 0.1 faible, 0.3 modérée, ≥ 0.5 forte.
Faites suivre un résultat significatif de tests de Wilcoxon des rangs signés par paires (corrigés par Bonferroni) pour voir quels points temporels diffèrent.
Introduction
Le test de Friedman évalue si trois groupes appariés ou plus diffèrent — les mêmes participants mesurés sous plusieurs conditions ou au fil du temps. C’est le pendant non paramétrique de l’ ANOVA à mesures répétées à un facteur, et il étend le test des signes de deux groupes appariés à plusieurs. Parce qu’il travaille sur les rangs, il ne fait aucune hypothèse de normalité et gère les sorties ordinales.
Tournez-vous vers lui quand les hypothèses de l’ANOVA à mesures répétées ne tiennent pas — différences non normales, petits échantillons ou données sur échelle de notation. Le scénario ici : l’estime de soi mesurée à trois points temporels sur les mêmes personnes — les scores diffèrent-ils dans le temps ? Cette leçon exécute le flux de travail avec rstatix sur le jeu de données selfesteem.
Note
Hypothèses du test de Friedman.H₀ : les distributions des groupes répétés sont identiques (aucune différence entre les conditions). Hₐ : la distribution d’au moins un groupe diffère. Le test classe les valeurs de chaque sujet entre les conditions et compare les totaux des rangs.
Les données : l’estime de soi sur trois points temporels
Nous utilisons le jeu de données selfesteem de datarium — le score d’estime de soi de 10 personnes à trois instants (t1/t2/t3). Le test de Friedman a besoin du format long, construit avec base R :
id time score
1 1 t1 4.005027
2 2 t1 2.558124
3 3 t1 3.244241
Résumez le score à chaque point temporel :
library(rstatix)data("selfesteem", package ="datarium")n <-nrow(selfesteem)long <-data.frame(id =factor(rep(selfesteem$id, 3)), time =factor(rep(c("t1", "t2", "t3"), each = n)),score =c(selfesteem$t1, selfesteem$t2, selfesteem$t3))long %>%group_by(time) %>%get_summary_stats(score, type ="common")
# A tibble: 3 × 11
time variable n min max median iqr mean sd se ci
<fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 t1 score 10 2.05 4.00 3.21 0.571 3.14 0.552 0.174 0.395
2 t2 score 10 3.91 6.91 4.60 0.89 4.93 0.863 0.273 0.617
3 t3 score 10 6.31 9.78 7.46 1.74 7.64 1.14 0.361 0.817
Regardez d’abord les données
Une boîte à moustaches avec les points individuels montre la trajectoire de chaque sujet au fil du temps :
library(rstatix)library(ggpubr)data("selfesteem", package ="datarium")n <-nrow(selfesteem)long <-data.frame(id =factor(rep(selfesteem$id, 3)), time =factor(rep(c("t1", "t2", "t3"), each = n)),score =c(selfesteem$t1, selfesteem$t2, selfesteem$t3))ggboxplot(long, x ="time", y ="score", add ="jitter", color ="#3a86d4")
Lancer le test de Friedman
friedman_test() prend une formule score ~ time | id — la sortie selon le facteur répété, avec | id nommant l’identifiant du sujet :
library(rstatix)data("selfesteem", package ="datarium")n <-nrow(selfesteem)long <-data.frame(id =factor(rep(selfesteem$id, 3)), time =factor(rep(c("t1", "t2", "t3"), each = n)),score =c(selfesteem$t1, selfesteem$t2, selfesteem$t3))res.fried <- long %>%friedman_test(score ~ time | id)res.fried
# A tibble: 1 × 6
.y. n statistic df p method
* <chr> <int> <dbl> <dbl> <dbl> <chr>
1 score 10 18.2 2 0.000112 Friedman test
L’estime de soi diffère significativement entre les trois points temporels, χ²(2) = 18.2, p = 0.0001 — la distribution d’au moins un point temporel est différente.
Taille d’effet : Kendall W
Le coefficient Kendall W mesure l’ampleur de l’effet, de 0 (aucun accord) à 1 (parfait) :
library(rstatix)data("selfesteem", package ="datarium")n <-nrow(selfesteem)long <-data.frame(id =factor(rep(selfesteem$id, 3)), time =factor(rep(c("t1", "t2", "t3"), each = n)),score =c(selfesteem$t1, selfesteem$t2, selfesteem$t3))long %>%friedman_effsize(score ~ time | id)
# A tibble: 1 × 5
.y. n effsize method magnitude
* <chr> <int> <dbl> <chr> <ord>
1 score 10 0.91 Kendall W large
W = 0.91 est un effet fort (les repères sont 0.1 faible, 0.3 modérée, ≥ 0.5 forte) — le temps a une forte influence sur l’estime de soi.
Post-hoc : quels points temporels diffèrent ?
Un test de Friedman significatif est suivi de tests de Wilcoxon des rangs signés par paires (la comparaison appariée non paramétrique), corrigés par Bonferroni :
library(rstatix)data("selfesteem", package ="datarium")n <-nrow(selfesteem)long <-data.frame(id =factor(rep(selfesteem$id, 3)), time =factor(rep(c("t1", "t2", "t3"), each = n)),score =c(selfesteem$t1, selfesteem$t2, selfesteem$t3))pwc <- long %>%wilcox_test(score ~ time, paired =TRUE, p.adjust.method ="bonferroni")pwc
Les trois différences par paires sont toutes significatives : t1–t2 (p.adj = 0.006), t1–t3 (p.adj = 0.006) et t2–t3 (p.adj = 0.012) — l’estime de soi augmente significativement à chaque étape.
Représentez-le avec les p-values
library(rstatix)library(ggpubr)data("selfesteem", package ="datarium")n <-nrow(selfesteem)long <-data.frame(id =factor(rep(selfesteem$id, 3)), time =factor(rep(c("t1", "t2", "t3"), each = n)),score =c(selfesteem$t1, selfesteem$t2, selfesteem$t3))res.fried <- long %>%friedman_test(score ~ time | id)pwc <- long %>%wilcox_test(score ~ time, paired =TRUE, p.adjust.method ="bonferroni") %>%add_xy_position(x ="time")ggboxplot(long, x ="time", y ="score", add ="point", color ="#3a86d4") +stat_pvalue_manual(pwc, hide.ns =TRUE) +labs(subtitle =get_test_label(res.fried, detailed =TRUE),caption =get_pwc_label(pwc) )
Rapport
Le score d’estime de soi différait significativement entre les trois points temporels, comme l’évalue un test de Friedman, χ²(2) = 18.2, p = 0.0001, avec une forte taille d’effet (Kendall W = 0.91). Les tests de Wilcoxon des rangs signés par paires (corrigés par Bonferroni) ont montré des augmentations significatives entre t1 et t2 (p = 0.006), t1 et t3 (p = 0.006), et t2 et t3 (p = 0.012).
NoteLes mathématiques (optionnel)
Le test de Friedman classe les valeurs de chaque sujet entre les \(k\) conditions (les rangs vont donc de 1…\(k\) au sein de chaque ligne), somme les rangs par condition et compare ces totaux de rangs à ce que donneraient des distributions égales. La statistique \(\chi^2_F = \frac{12}{N k (k+1)} \sum_j R_j^2 - 3N(k+1)\) (avec \(R_j\) le total des rangs pour la condition \(j\), \(N\) sujets, \(k\) conditions) suit une distribution du chi-carré à \(k-1\) degrés de liberté. Kendall \(W = \chi^2_F / [N(k-1)]\) la remet à l’échelle en une taille d’effet de 0 à 1.
Essayez en direct
Exécutez le flux de travail de Friedman sur une autre question à mesures répétées, ou modifiez l’étape post-hoc. Le bac à sable démarre au premier Run.
🟢 Avec un agent IA
Demandez à Prova« J’ai les mêmes sujets mesurés à trois points temporels ou plus et mes données ne sont pas normales — lance un test de Friedman sur mes données, donne la taille d’effet Kendall W et dis-moi quels points temporels diffèrent » — elle répond avec du code rstatix que vous pouvez exécuter sur vos propres données. The runtime is the judge.Demander à Prova →
Problèmes courants
Vos données sont au format large.friedman_test() a besoin du format long — une ligne par mesure avec id, le facteur répété et le score. Restructurez d’abord les colonnes larges.
Vous avez utilisé un Wilcoxon ordinaire (non apparié) pour le post-hoc. Le suivi doit être le test de Wilcoxon des rangs signés apparié (paired = TRUE) parce que les groupes sont des mesures répétées des mêmes sujets — et les données doivent être ordonnées de façon cohérente par id pour que les paires s’alignent.
Vous avez exécuté une ANOVA à mesures répétées malgré des données non normales. Si les différences intra-sujets sont clairement non normales ou que la sortie est ordinale, le test de Friedman est le bon choix — la statistique F de l’ANOVA n’est pas fiable dans ce cas.
Questions fréquentes
NoteÀ quoi sert le test de Friedman ?
Le test de Friedman compare trois groupes appariés (répétés) ou plus — les mêmes sujets mesurés sous plusieurs conditions ou au fil du temps — pour voir si leurs distributions diffèrent. C’est l’alternative non paramétrique à l’ANOVA à mesures répétées à un facteur, utilisée quand la normalité échoue ou que la sortie est ordinale.
NoteQuelle est la différence entre le test de Friedman et l’ANOVA à mesures répétées ?
Les deux comparent trois groupes appariés ou plus, mais l’ANOVA à mesures répétées est paramétrique (elle suppose des différences distribuées normalement et teste des moyennes), tandis que le test de Friedman est non paramétrique (il travaille sur les rangs, sans hypothèse de normalité). Utilisez Friedman quand les hypothèses de l’ANOVA sont violées ou que les données sont ordinales.
NoteQuel test post-hoc suit un test de Friedman significatif ?
Des tests de Wilcoxon des rangs signés par paires (la comparaison appariée non paramétrique), avec une correction pour tests multiples telle que Bonferroni. Cela identifie quelles paires de conditions précises diffèrent après que le test global de Friedman s’est révélé significatif.
NoteQuelle taille d’effet rapporter pour le test de Friedman ?
Kendall W (friedman_effsize()), qui va de 0 (aucun effet) à 1 (parfait), interprété avec les repères de Cohen : 0.1 faible, 0.3 modérée, ≥ 0.5 forte. Rapportez-la aux côtés de la statistique du chi-carré et de la p-value.
Testez vos connaissances
ImportantPratique
Exécutez-le. Dans la cellule en direct, exécutez le test de Friedman de score selon time avec le sujet id. Complétez le blanc dans la formule. Le résultat est-il significatif, et quel est le Kendall W ?
Conceptuel. Vos données à mesures répétées échouent à l’hypothèse de normalité. Pourquoi le test de Friedman est-il le bon choix, et quel test post-hoc utiliseriez-vous ?
NoteIndice
Complétez la formule en score ~ time | id — time est le facteur répété et id le sujet. La sortie donne la statistique du chi-carré et la p-value ; ajoutez friedman_effsize() pour le Kendall W. Pour la question 2, rappelez-vous quelle hypothèse le test de Friedman ne fait pas.
NoteSolution
long |>friedman_test(score ~ time | id)#> chi-square(2) = 18.2, p = 0.0001 — significant.long |>friedman_effsize(score ~ time | id)#> Kendall's W = 0.91 (large).
Le test est significatif avec un fort effet. Pour la question 2 : le test de Friedman est non paramétrique, il ne fait donc aucune hypothèse de normalité — le bon choix quand les différences intra-sujets ne sont pas normales. Faites-le suivre de tests de Wilcoxon des rangs signés par paires.
Vous savez maintenant exécuter le test de Friedman en R : restructurez au format long, exécutez friedman_test(score ~ time | id), rapportez le Kendall W pour la taille d’effet, et faites suivre un résultat significatif de tests de Wilcoxon des rangs signés par paires pour localiser les différences. C’est le test à privilégier dès que vous avez trois mesures répétées ou plus et que l’hypothèse de normalité de l’ANOVA à mesures répétées ne tient pas.
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 de Friedman en R : comparaison non paramétrique
appariée},
date = {2026-06-23},
url = {https://www.datanovia.com/learn/biostatistics/anova/friedman-test-in-r},
langid = {fr}
}