MANOVA en R : comparer des groupes sur plusieurs réponses à la fois

L’analyse de variance multivariée à un facteur, version moderne — tester un facteur de groupement face à deux réponses continues ou plus simultanément, vérifier les hypothèses multivariées, puis enchaîner avec des ANOVA univariées

Apprenez à réaliser une MANOVA à un facteur en R. Testez si des groupes diffèrent sur plusieurs réponses continues simultanément avec Manova() de car et la trace de Pillai, vérifiez les hypothèses de la MANOVA — normalité multivariée, valeurs aberrantes multivariées, multicolinéarité, homogénéité des covariances (M de Box) et des variances — puis donnez suite à un résultat significatif avec des ANOVA univariées et des comparaisons par paires, avec les p-values sur le graphique.

Date de publication

23 juin 2026

Modifié

12 juillet 2026

AstucePoints clés
  • Une MANOVA à un facteur (analyse de variance multivariée) teste si des groupes diffèrent sur deux réponses continues ou plus à la fois, au lieu de réaliser une ANOVA distincte par réponse.
  • Ajustez-la avec lm(cbind(y1, y2) ~ group) puis car::Manova() ; lisez la trace de Pillai (le choix robuste par défaut, idéal quand les hypothèses sont fragiles ou que le plan est déséquilibré).
  • La MANOVA ajoute des hypothèses multivariées : normalité multivariée (mshapiro_test()), aucune valeur aberrante multivariée (distance de Mahalanobis), corrélation modérée entre les réponses (pas de multicolinéarité) et homogénéité des matrices de covariance (test M de Box).
  • Une MANOVA significative est suivie d’une ANOVA à un facteur univariée par réponse (α ajusté par Bonferroni), puis de comparaisons par paires pour voir quels groupes diffèrent sur quelle réponse.
  • Tracez toutes les réponses ensemble (une boîte à moustaches fusionnée) avec les p-values des comparaisons dessus.

Introduction

Une MANOVA à un facteur étend l’ANOVA à un facteur à plusieurs variables réponses mesurées ensemble. Au lieu de demander « les groupes diffèrent-ils sur ce score ? », elle demande « les groupes diffèrent-ils sur la combinaison de ces scores ? » — en testant un seul facteur de groupement face à un vecteur de réponses continues.

Utilisez-la lorsque vos réponses mesurent différentes facettes d’un même thème cohérent — plusieurs notes d’examen pour la performance académique globale, ou plusieurs mesures de fleur pour la taille de la plante — et que vous voulez un seul test de la différence conjointe plutôt que de nombreuses ANOVA distinctes (qui gonflent le taux d’erreur). Le scénario classique : les espèces d’iris diffèrent-elles sur la combinaison de Sepal.Length et Petal.Length ? Cette leçon déroule le flux de travail complet avec rstatix et car, en utilisant les données intégrées iris.

Note

Hypothèses de la MANOVA à un facteur. H₀ : les vecteurs de moyennes des groupes sont égaux (les groupes ne diffèrent pas sur les réponses combinées). Hₐ : le vecteur de moyennes d’au moins un groupe diffère. La MANOVA construit une combinaison linéaire des réponses et compare ses moyennes de groupe.

Les données : deux mesures de fleur par espèce

Nous utilisons le jeu de données intégré iris, en conservant deux réponses — Sepal.Length et Petal.Length — et le facteur de groupement Species (setosa, versicolor, virginica, 50 chacune) :

library(rstatix)

iris2 <- data.frame(id = 1:nrow(iris), iris[, c("Sepal.Length", "Petal.Length", "Species")])
head(iris2)
  id Sepal.Length Petal.Length Species
1  1          5.1          1.4  setosa
2  2          4.9          1.4  setosa
3  3          4.7          1.3  setosa
4  4          4.6          1.5  setosa
5  5          5.0          1.4  setosa
6  6          5.4          1.7  setosa

Une boîte à moustaches fusionnée montre les deux réponses par espèce côte à côte :

library(ggpubr)

iris2 <- data.frame(id = 1:nrow(iris), iris[, c("Sepal.Length", "Petal.Length", "Species")])

ggboxplot(
  iris2, x = "Species", y = c("Sepal.Length", "Petal.Length"),
  merge = TRUE, palette = "jco"
)

A merged box plot of iris sepal length and petal length by species; both measurements increase from setosa to virginica, with petal length separating the species most sharply.

Résumez chaque réponse par groupe avec get_summary_stats() :

library(rstatix)

iris2 <- data.frame(id = 1:nrow(iris), iris[, c("Sepal.Length", "Petal.Length", "Species")])

iris2 %>%
  group_by(Species) %>%
  get_summary_stats(Sepal.Length, Petal.Length, type = "mean_sd")
# A tibble: 6 × 5
  Species    variable         n  mean    sd
  <fct>      <fct>        <dbl> <dbl> <dbl>
1 setosa     Sepal.Length    50  5.01 0.352
2 setosa     Petal.Length    50  1.46 0.174
3 versicolor Sepal.Length    50  5.94 0.516
4 versicolor Petal.Length    50  4.26 0.47 
5 virginica  Sepal.Length    50  6.59 0.636
6 virginica  Petal.Length    50  5.55 0.552

Vérifiez les hypothèses

La MANOVA suppose une taille d’échantillon adéquate (n par groupe > nombre de réponses — ici 50 > 2 ✓), des observations indépendantes, aucune valeur aberrante multivariée, la normalité multivariée, une corrélation modérée (pas excessive) entre les réponses, une relation linéaire entre les réponses au sein de chaque groupe et l’homogénéité des matrices de covariance.

Valeurs aberrantes univariées

D’abord, vérifiez chaque réponse pour des valeurs extrêmes au sein de chaque groupe avec identify_outliers() (un résultat vide signifie qu’il n’y en a aucune) :

library(rstatix)

iris2 <- data.frame(id = 1:nrow(iris), iris[, c("Sepal.Length", "Petal.Length", "Species")])

iris2 %>% group_by(Species) %>% identify_outliers(Sepal.Length)
# A tibble: 1 × 6
  Species      id Sepal.Length Petal.Length is.outlier is.extreme
  <fct>     <int>        <dbl>        <dbl> <lgl>      <lgl>     
1 virginica   107          4.9          4.5 TRUE       FALSE     
iris2 %>% group_by(Species) %>% identify_outliers(Petal.Length)
# A tibble: 5 × 6
  Species       id Sepal.Length Petal.Length is.outlier is.extreme
  <fct>      <int>        <dbl>        <dbl> <lgl>      <lgl>     
1 setosa        14          4.3          1.1 TRUE       FALSE     
2 setosa        23          4.6          1   TRUE       FALSE     
3 setosa        25          4.8          1.9 TRUE       FALSE     
4 setosa        45          5.1          1.9 TRUE       FALSE     
5 versicolor    99          5.1          3   TRUE       FALSE     

Il n’y avait aucune valeur aberrante extrême univariée dans l’une ou l’autre des réponses.

Valeurs aberrantes multivariées — distance de Mahalanobis

Les valeurs aberrantes multivariées sont des combinaisons inhabituelles de valeurs. mahalanobis_distance() les signale par groupe :

library(rstatix)

iris2 <- data.frame(id = 1:nrow(iris), iris[, c("Sepal.Length", "Petal.Length", "Species")])

iris2 %>%
  group_by(Species) %>%
  mahalanobis_distance(-id) %>%
  filter(is.outlier == TRUE) %>%
  as.data.frame()
[1] id           Sepal.Length Petal.Length mahal.dist   is.outlier  
<0 lignes> (ou 'row.names' de longueur nulle)

Le résultat vide signifie aucune valeur aberrante multivariée (p > 0.001).

Normalité univariée et multivariée

Testez chaque réponse par groupe avec Shapiro-Wilk, et les réponses conjointement avec mshapiro_test() :

library(rstatix)

iris2 <- data.frame(id = 1:nrow(iris), iris[, c("Sepal.Length", "Petal.Length", "Species")])

# univariate normality, each outcome per group
iris2 %>%
  group_by(Species) %>%
  shapiro_test(Sepal.Length, Petal.Length)
# A tibble: 6 × 4
  Species    variable     statistic      p
  <fct>      <chr>            <dbl>  <dbl>
1 setosa     Petal.Length     0.955 0.0548
2 setosa     Sepal.Length     0.978 0.460 
3 versicolor Petal.Length     0.966 0.158 
4 versicolor Sepal.Length     0.978 0.465 
5 virginica  Petal.Length     0.962 0.110 
6 virginica  Sepal.Length     0.971 0.258 
# multivariate normality
iris2[, c("Sepal.Length", "Petal.Length")] %>% mshapiro_test()
# A tibble: 1 × 2
  statistic p.value
      <dbl>   <dbl>
1     0.995   0.855

Les deux réponses sont normales dans chaque groupe (p > 0.05), et mshapiro_test() est non significatif (p = 0.86) — la normalité multivariée tient. Confortez le test avec un Q-Q plot par groupe :

library(ggpubr)

iris2 <- data.frame(id = 1:nrow(iris), iris[, c("Sepal.Length", "Petal.Length", "Species")])

ggqqplot(iris2, "Sepal.Length", facet.by = "Species", ggtheme = theme_bw())

Q-Q plots of sepal length by iris species; in every panel the points fall close to the reference line inside the confidence band, supporting normality.

Note

Avec n > 50 par groupe, le Q-Q plot est le meilleur guide — Shapiro-Wilk devient hypersensible aux infimes écarts sur de grands échantillons. Ici, les deux concordent.

Multicolinéarité — corrélation entre les réponses

Les réponses doivent être modérément corrélées — pas au-dessus de r = 0.9 (multicolinéarité), pas proches de zéro non plus (sinon réalisez des ANOVA distinctes) :

library(rstatix)

iris2 <- data.frame(id = 1:nrow(iris), iris[, c("Sepal.Length", "Petal.Length", "Species")])

iris2 %>% cor_test(Sepal.Length, Petal.Length)
# A tibble: 1 × 9
  var1         var2       cor statistic    df        p conf.low conf.high method
  <chr>        <chr>    <dbl>     <dbl> <int>    <dbl>    <dbl>     <dbl> <chr> 
1 Sepal.Length Petal.L…  0.87      21.6   148 1.04e-47    0.827     0.906 Pears…

Les réponses sont corrélées à r = 0.87 (p < 0.0001) — élevé mais en dessous de 0.9, donc acceptable.

Vérifiez l’hypothèse de linéarité

La MANOVA construit une combinaison linéaire des réponses, elle suppose donc une relation linéaire entre les variables réponses au sein de chaque groupe — une relation courbe fausserait le test multivarié. Vérifiez-la visuellement avec une matrice de nuages de points par groupe, à l’aide de ggpairs() du package GGally, en colorant les points par espèce :

library(GGally)

iris2 <- data.frame(id = 1:nrow(iris), iris[, c("Sepal.Length", "Petal.Length", "Species")])

ggpairs(
  iris2, columns = c("Sepal.Length", "Petal.Length"),
  mapping = aes(color = Species)
)

A scatterplot matrix of iris sepal length and petal length coloured by species; within each species the points form a straight, non-curved cloud, and the diagonal panels show each outcome's per-group density.

Le panneau hors diagonale trace Sepal.Length en fonction de Petal.Length pour chaque espèce : au sein de chaque groupe, les points s’alignent le long d’une ligne droite, sans motif courbe ni coudé, donc l’hypothèse de linéarité tient. (Le panneau supérieur affiche aussi les corrélations par groupe — leur force varie, mais la linéarité concerne la forme de chaque nuage, pas à quel point il est resserré.)

Si au contraire le nuage d’un groupe était courbe ou en forme de U, la relation serait non linéaire. Dans ce cas, transformez ou supprimez la variable réponse fautive, ou réalisez quand même la MANOVA en acceptant de perdre un peu de puissance statistique.

Homogénéité des matrices de covariance — M de Box

Le M de Box est l’analogue multivarié de l’égalité des variances. Il est très sensible, alors jugez-le à α = 0.001 :

library(rstatix)

iris2 <- data.frame(id = 1:nrow(iris), iris[, c("Sepal.Length", "Petal.Length", "Species")])

box_m(iris2[, c("Sepal.Length", "Petal.Length")], iris2$Species)
# A tibble: 1 × 4
  statistic  p.value parameter method                                           
      <dbl>    <dbl>     <dbl> <chr>                                            
1      58.4 9.62e-11         6 Box's M-test for Homogeneity of Covariance Matri…

Le M de Box est significatif (p < 0.001), donc les matrices de covariance ne sont pas homogènes. Avec un plan équilibré (50 par groupe), ce n’est pas rédhibitoire — mais c’est la raison de rapporter la trace de Pillai, la statistique robuste, plutôt que le lambda de Wilks.

Homogénéité des variances — test de Levene

Pour chaque réponse séparément, restructurez en format long avec R de base, puis appliquez le test de Levene par réponse :

library(rstatix)

iris2 <- data.frame(id = 1:nrow(iris), iris[, c("Sepal.Length", "Petal.Length", "Species")])

long <- data.frame(
  Species  = rep(iris2$Species, 2),
  variable = rep(c("Sepal.Length", "Petal.Length"), each = nrow(iris2)),
  value    = c(iris2$Sepal.Length, iris2$Petal.Length)
)

long %>% group_by(variable) %>% levene_test(value ~ Species)
# A tibble: 2 × 5
  variable       df1   df2 statistic            p
  <chr>        <int> <int>     <dbl>        <dbl>
1 Petal.Length     2   147     19.5  0.0000000313
2 Sepal.Length     2   147      6.35 0.00226     

Le test de Levene est significatif pour les deux réponses — les variances ne sont pas égales entre les espèces, ce qui (avec le M de Box) oriente de nouveau vers la trace de Pillai et vers Games-Howell pour l’étape post-hoc.

Réaliser la MANOVA

Ajustez un modèle linéaire multivarié avec cbind() à gauche, puis Manova() avec la trace de Pillai :

library(rstatix)
library(car)

iris2 <- data.frame(id = 1:nrow(iris), iris[, c("Sepal.Length", "Petal.Length", "Species")])

model <- lm(cbind(Sepal.Length, Petal.Length) ~ Species, data = iris2)
Manova(model, test.statistic = "Pillai")

Type II MANOVA Tests: Pillai test statistic
        Df test stat approx F num Df den Df    Pr(>F)    
Species  2    0.9885   71.829      4    294 < 2.2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Il existe une différence statistiquement significative entre les espèces sur les réponses combinées, F(4, 294) = 71.83, p < 0.0001 — les espèces diffèrent sur la combinaison longueur-de-sépale/longueur-de-pétale.

Astuce

Quelle statistique multivariée ? Manova() propose Pillai, Wilks, Hotelling-Lawley et Roy. Le lambda de Wilks est le choix par défaut courant, mais la trace de Pillai est plus robuste et préférable quand le plan est déséquilibré ou que le M de Box est significatif (notre cas) — nous rapportons donc Pillai.

Post-hoc : quelles réponses, quels groupes

Une MANOVA significative se décompose en une ANOVA à un facteur univariée par réponse (ajustée par Bonferroni à α = 0.05 / 2 = 0.025 pour deux réponses), puis en comparaisons par paires. Comme les variances sont inégales, utilisez le test de Games-Howell :

library(rstatix)

iris2 <- data.frame(id = 1:nrow(iris), iris[, c("Sepal.Length", "Petal.Length", "Species")])

long <- data.frame(
  Species  = rep(iris2$Species, 2),
  variable = rep(c("Sepal.Length", "Petal.Length"), each = nrow(iris2)),
  value    = c(iris2$Sepal.Length, iris2$Petal.Length)
)

# univariate one-way ANOVA per outcome
long %>% group_by(variable) %>% anova_test(value ~ Species)
# A tibble: 2 × 8
  variable     Effect    DFn   DFd     F        p `p<.05`   ges
* <chr>        <chr>   <dbl> <dbl> <dbl>    <dbl> <chr>   <dbl>
1 Petal.Length Species     2   147 1180. 2.86e-91 *       0.941
2 Sepal.Length Species     2   147  119. 1.67e-31 *       0.619
# pairwise comparisons per outcome (Games-Howell, unequal variances)
long %>% group_by(variable) %>% games_howell_test(value ~ Species)
# A tibble: 6 × 9
  variable .y.   group1 group2 estimate conf.low conf.high    p.adj p.adj.signif
* <chr>    <chr> <chr>  <chr>     <dbl>    <dbl>     <dbl>    <dbl> <chr>       
1 Petal.L… value setosa versi…    2.80     2.63      2.97  1.85e-11 ****        
2 Petal.L… value setosa virgi…    4.09     3.89      4.29  1.68e-11 ****        
3 Petal.L… value versi… virgi…    1.29     1.05      1.54  4.45e-10 ****        
4 Sepal.L… value setosa versi…    0.93     0.719     1.14  2.86e-10 ****        
5 Sepal.L… value setosa virgi…    1.58     1.34      1.83  0        ****        
6 Sepal.L… value versi… virgi…    0.652    0.376     0.928 5.58e- 7 ****        

Les deux réponses diffèrent significativement selon l’espèce — Sepal.Length F(2, 147) = 119 et Petal.Length F(2, 147) = 1180 (les deux p < 0.0001) — et chaque comparaison par paires d’espèces est significative pour chaque réponse.

Le tracer avec les p-values

La figure de restitution superpose les comparaisons par paires sur la boîte à moustaches fusionnée, avec le résultat de la MANOVA en sous-titre (construit avec create_test_label()) :

library(rstatix)
library(ggpubr)

iris2 <- data.frame(id = 1:nrow(iris), iris[, c("Sepal.Length", "Petal.Length", "Species")])

long <- data.frame(
  Species   = rep(iris2$Species, 2),
  variables = rep(c("Sepal.Length", "Petal.Length"), each = nrow(iris2)),
  value     = c(iris2$Sepal.Length, iris2$Petal.Length)
)

pwc <- long %>%
  group_by(variables) %>%
  games_howell_test(value ~ Species) %>%
  add_xy_position(x = "Species")

test.label <- create_test_label(
  description = "MANOVA", statistic.text = quote(italic("F")),
  statistic = 71.83, p = "<0.0001", parameter = "4,294",
  type = "expression", detailed = TRUE
)

ggboxplot(
  iris2, x = "Species", y = c("Sepal.Length", "Petal.Length"),
  merge = TRUE, palette = "jco"
) +
  stat_pvalue_manual(
    pwc, hide.ns = TRUE, tip.length = 0,
    step.increase = 0.1, step.group.by = "variables", color = "variables"
  ) +
  labs(subtitle = test.label, caption = get_pwc_label(pwc, type = "expression"))

A merged box plot of iris sepal length and petal length by species, with the MANOVA F(4,294)=71.83, p<0.0001 in the subtitle and significant Games-Howell pairwise brackets drawn for both outcomes across the three species.

Rapport

Une MANOVA à un facteur a été réalisée pour déterminer l’effet de l’espèce d’iris sur la longueur de sépale et la longueur de pétale. Il y avait une différence statistiquement significative entre les espèces sur les variables dépendantes combinées, F(4, 294) = 71.83, p < 0.0001 (trace de Pillai). Les ANOVA univariées de suivi (α ajusté par Bonferroni α = 0.025) ont montré une différence significative pour la longueur de sépale, F(2, 147) = 119, et la longueur de pétale, F(2, 147) = 1180 (les deux p < 0.0001). Toutes les comparaisons par paires entre espèces étaient significatives pour chaque réponse.

Là où l’ANOVA partitionne une seule somme de carrés, la MANOVA partitionne des matrices : une matrice inter-groupes \(H\) (hypothèse) et une matrice intra-groupes \(E\) (erreur). Les statistiques multivariées résument la relation \(H\)-vs-\(E\) à travers les valeurs propres \(\lambda_i\) de \(E^{-1}H\). La trace de Pillai vaut \(V = \sum_i \frac{\lambda_i}{1 + \lambda_i}\) — une mesure bornée et robuste de la part de la variation combinée qui se situe entre les groupes. Chaque statistique multivariée est convertie en un \(F\) approché pour la p-value.

Essayez en direct

Réalisez une MANOVA sur une nouvelle question — les espèces d’iris diffèrent-elles sur les mesures de pétale (Petal.Length et Petal.Width) ensemble ? Modifiez les réponses ou la statistique de test puis relancez ; le bac à sable démarre au premier Run.

🟢 Avec un agent IA

Demandez à Prova « J’ai un facteur de groupement et plusieurs réponses numériques — réalise une MANOVA à un facteur sur mes données, vérifie les hypothèses multivariées et donne suite à un résultat significatif avec des ANOVA univariées » — elle répond avec du code rstatix + car que vous pouvez exécuter sur vos propres données, puis vous aide à lire la trace de Pillai et les tests de suivi. The runtime is the judge. Demander à Prova →

Problèmes courants

Vous avez réalisé une ANOVA distincte par réponse au lieu d’une MANOVA. Tester chaque réponse séparément gonfle le taux d’erreur par famille et ignore la corrélation entre les réponses. Réalisez d’abord la MANOVA pour le test conjoint ; ne la décomposez en ANOVA univariées (avec un α ajusté par Bonferroni) qu’ensuite.

Le M de Box est significatif, alors vous avez utilisé le lambda de Wilks. Quand le M de Box échoue (matrices de covariance inégales) ou que le plan est déséquilibré, le lambda de Wilks n’est pas robuste. Rapportez plutôt la trace de Pillai — elle est bien moins sensible à la violation.

Vos réponses sont presque parfaitement corrélées (r > 0.9). C’est de la multicolinéarité — les réponses portent quasiment la même information, ce qui déstabilise la MANOVA. Supprimez l’une des réponses redondantes, ou combinez-les en un seul score composite.

Questions fréquentes

L’ANOVA teste un facteur de groupement face à une seule réponse continue ; la MANOVA le teste face à deux réponses ou plus simultanément, en tenant compte de la corrélation entre elles. La MANOVA fournit un unique test conjoint (évitant le taux d’erreur gonflé de nombreuses ANOVA distinctes) et peut détecter des différences de groupe qui n’apparaissent que dans la combinaison des réponses.

Le lambda de Wilks est le choix traditionnel par défaut, mais la trace de Pillai est plus robuste aux violations de l’hypothèse d’homogénéité des covariances (M de Box) et aux plans déséquilibrés. Quand le M de Box est significatif — comme dans la plupart des données réelles — rapportez la trace de Pillai. car::Manova() utilise Pillai par défaut.

Une taille d’échantillon adéquate (n par groupe supérieur au nombre de réponses), des observations indépendantes, aucune valeur aberrante multivariée (distance de Mahalanobis), la normalité multivariée (mshapiro_test()), une relation linéaire entre les réponses, pas de multicolinéarité (corrélations des réponses en dessous de 0.9) et l’homogénéité des matrices de covariance (M de Box). La MANOVA est assez robuste aux écarts légers, surtout avec un plan équilibré.

Tracez une matrice de nuages de points des variables réponses pour chaque groupe avec ggpairs() du package GGally (colorez les points par groupe). La relation entre chaque paire de réponses doit paraître linéaire — un nuage droit sans courbure — au sein de chaque groupe. Si un groupe présente un motif courbe, transformez ou supprimez cette variable réponse, ou réalisez quand même la MANOVA en acceptant une perte de puissance.

Décomposez-la en une ANOVA à un facteur univariée pour chaque réponse, en utilisant un seuil de signification ajusté par Bonferroni (α divisé par le nombre de réponses). Pour chaque réponse qui diffère, réalisez des comparaisons par paires — Tukey HSD si les variances sont égales, Games-Howell si elles ne le sont pas — afin de voir quels groupes diffèrent.

Testez vos connaissances

  1. Lancez-la. Dans la cellule interactive, ajustez une MANOVA à un facteur de Sepal.Length et Sepal.Width par Species et rapportez la trace de Pillai. Remplissez les blancs. L’effet multivarié est-il significatif ?
  2. Conceptuel. Le M de Box est significatif pour vos données. Quelle statistique multivariée devriez-vous rapporter, et pourquoi ?

Remplissez les réponses par cbind(Sepal.Length, Sepal.Width) et la statistique par "Pillai". Lisez la colonne Pr(>F). Pour la question 2, rappelez-vous quelle statistique est robuste lorsque les matrices de covariance sont inégales.

library(rstatix); library(car)
model <- lm(cbind(Sepal.Length, Sepal.Width) ~ Species, data = iris)
Manova(model, test.statistic = "Pillai")
#> Species effect is highly significant (p < 2e-16).

L’effet multivarié est significatif. Pour la question 2 : rapportez la trace de Pillai — c’est la statistique robuste, la moins affectée par un M de Box significatif (matrices de covariance inégales).

AstuceQuel test, quand ?
  • Une réponse, un facteurANOVA à un facteur.
  • Plusieurs réponses, un facteurMANOVA à un facteur (cette leçon).
  • Une réponse, deux facteursANOVA à deux facteurs.
  • Une réponse + une covariableANCOVA.
  • M de Box / égalité des variances violée → rapportez la trace de Pillai et utilisez Games-Howell en post-hoc.

Conclusion

Vous savez maintenant réaliser une MANOVA à un facteur en R : ajuster lm(cbind(y1, y2) ~ group), la tester avec car::Manova() en rapportant la trace de Pillai, et vérifier les hypothèses multivariées — normalité multivariée, valeurs aberrantes multivariées, multicolinéarité et M de Box. Lorsque le test conjoint est significatif, décomposez-le en ANOVA univariées (ajustées par Bonferroni) et en comparaisons par paires pour voir quels groupes diffèrent sur quelle réponse, puis posez les comparaisons sur une boîte à moustaches fusionnée. La MANOVA est le bon outil chaque fois que plusieurs réponses mesurent un même thème cohérent.

Leçons connexes

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

Prouvez que vous savez le faire. Maîtrisez toute la série ANOVA 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 = {MANOVA en R : comparer des groupes sur plusieurs réponses à
    la fois},
  date = {2026-06-23},
  url = {https://www.datanovia.com/learn/biostatistics/anova/manova-in-r},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
“MANOVA en R : comparer des groupes sur plusieurs réponses à la fois.” 2026. June 23. https://www.datanovia.com/learn/biostatistics/anova/manova-in-r.