Aide-memoire-R > Statistiques > ANOVA
ANOVA.
L'objectif est de savoir si une variable numérique a des valeurs significativement différentes selon plusieurs catégories (i.e., selon les valeurs d'un facteur). Plus précisémment, on teste l'hypothèse nulle : il y a au moins deux catégories pour lesquelles les moyennes de la variable sont différentes. C'est une généralisation du t-test dans le cas où il y a plus de deux catégories.
- l'ANOVA suppose que la variable numérique suit une loi normale dont la moyenne dépend éventuellement de la valeur des facteurs (mais pas trop sensible si ce n'est pas tout à fait vrai).
- l'ANOVA suppose que la variable numérique a un écart-type indépendant de la valeur des facteurs (hypothèse d'homoscedasticité) et elle est très sensible à cette hypothèse.
- analyse de variance à un facteur : un seul facteur pour les catégories.
- si une différence significative est notée, on ne sait par contre pas quelles catégories sont concernées.
ANOVA à un facteur :
fr <- data.frame(var = c(10, 4, 5, 3, 3, 7, 2, 6, 2, 8, 5),
categ = factor(c("c", "a", "b", "a", "b", "b", "a", "b", "a", "c", "c")))
fit <- aov(var ~ categ, fr)
summary(fit)
donne une différence significative avec une p-value = 0.018 :
Df Sum Sq Mean Sq F value Pr(>F)
categ 2 41.833 20.917 6.9241 0.01798 *
Residuals 8 24.167 3.021
On peut aussi faire : anova(lm(var ~ categ, fr)).
ANOVA à deux facteurs :
fr <- data.frame(var = c(10, 4, 5, 3, 3, 7, 2, 6, 2, 8, 5),
categ = factor(c("c", "a", "b", "a", "b", "b", "a", "b", "a", "c", "c")),
categ2 = factor(c("A", "B", "B", "B", "B", "A", "B", "A", "B", "A", "A")))
fit <- aov(var ~ categ * categ2, fr)
summary(fit)
donne :
Df Sum Sq Mean Sq F value Pr(>F)
categ 2 41.833 20.917 8.1721 0.01476 *
categ2 1 6.250 6.250 2.4419 0.16211
Residuals 7 17.917 2.560
On peut aussi faire : anova(lm(var ~ categ * categ2, fr)).
Dernière date de modification : 2010-05-22
