Analyse de variance à deux facteur (two-way ANOVA)
Introduction
L'analyse de variance (ANOVA) à deux facteurs est un test paramétrique permettant de déterminer l'effet de plusieurs facteurs sur une variable dépendante.

Conditions d'application
Conditions d'application
Pour pouvoir être appliqué, ce test nécessite que les échantillons soient issus de distributions normales et que leurs variances soient homogènes.
Exécution du test
# Soit y la variable dépendante et w et x les facteurs
m <- aov(data$y ~ data$x*data$w)
summary(m)
# Soit y la variable dépendante et w et x les facteurs
m <- aov(data$y ~ data$x+data$w)
summary(m)
# Soit y la variable dépendante et w et x les facteurs
m <- aov(data$y ~ data$x:data$w)
summary(m)
Cependant, ce résultat ne nous donne pas d'informations suffisantes. En effet, il nous informe uniquement qu'il existe une différence statistiquement significative entre certaines modalités de notre facteur, alors que nous cherchons à savoir pour quelles modalités il y a un effet. Pour cela, nous devons réaliser un test post-hoc, dans ce cas le test HSD de Tukey:
TukeyHSD(m)
Taille d'effet
Pour calculer la taille d'effet, nous utilisons le coefficient η2 (êta carré):
library(lsr)
etaSquared(m)
Exemple
Voici nos données et notre fichier d'analyse:
| Fichiers |
|---|
| two-way-anova.csv |
| two-way-anova.R |
Commençons par activer les librairies nécessaires dans R:
library(lsr)
library(RcmdrMisc)
Puis, importons nos données:
df <- read.csv("two-way-anova.csv")
df$groupe <- as.factor(df$groupe)
df$age <- as.factor(df$age)
Nous pouvons maintenant visualiser nos données dans un diagramme:
plotMeans(
df$score,
df$groupe,
df$age,
ylab="Score",
xlab="Groupe",
legend.lab="Âge"
)

Réalisons maintenant notre ANOVA à deux facteurs avec interaction:
m <- aov(score ~ groupe*age, data=df)
summary(m)
| Df | Sum Sq | Mean Sq | F value | Pr(>F) | |
|---|---|---|---|---|---|
| groupe | 1 | 2476 | 2476 | 2338.73 | <2e-16 *** |
| age | 1 | 10199 | 10199 | 9632.68 | <2e-16 *** |
| groupe:age | 1 | 2 | 2 | 1.61 | 0.205 |
| Residuals | 396 | 419 | 1 |
Nous pouvons donc conclure que les facteurs age et groupe ont tous deux un effet sur la variable dépendante score, mais que l'interaction de ces deux facteurs n'a elle aucun effet.
Pour connaître entre quelles modalités des facteurs cet effet s'exprime, nous réalisons un test post-hoc:
TukeyHSD(m)
| $groupe | diff | p adj |
|---|---|---|
| experimental-controle | 4.976227 | 0 |
| $age | diff | p adj |
|---|---|---|
| child-adult | -10.09913 | 0 |
| $groupe:age | diff | p adj |
|---|---|---|
| experimental:adult-controle:adult | 5.106776 | 0 |
| controle:child-controle:adult | -9.968578 | 0 |
| experimental:child-controle:adult | -5.122900 | 0 |
| controle:child-experimental:adult | -15.075354 | 0 |
| experimental:child-experimental:adult | -10.229677 | 0 |
| experimental:child-controle:child | 4.845677 | 0 |
Grâce à ces résultats, nous pouvons conclure qu'il existe une différence significative entre toutes les modalités des différents facteurs.
Il ne reste maintenant plus qu'à calculer la taille d'effet:
etaSquared(m)
| eta.sq | eta.sq.part | |
|---|---|---|
| groupe | 0.189079550 | 0.8551959 |
| age | 0.778774850 | 0.9605133 |
| groupe:age | 0.000130135 | 0.0040483 |
La taille d'effet est grande à la fois pour le facteur groupe, ainsi que pour le facteur age. Puisque nous savons que l'interaction n'a aucun effet, nous n'avons même pas besoin de regarder la taille d'effet pour cette dernière.
Nous pouvons donc conclure qu'il existe une grande différence significative entre les différents groupes (F(1,396) = 2338.73, p<.001, η2p = 0.85) ainsi qu'entre les différents âges (F(1,396) = 9632.68, p<.001, η2p = 0.96), mais il n'y a cependant pas d'effet d'interaction entre les deux (F(1,396) = 1.61, p = .205).