Comment effectuer une ANOVA à trois facteurs dans R
Une ANOVA à trois facteurs est utilisée pour déterminer s’il existe ou non une différence statistiquement significative entre les moyennes de trois groupes indépendants ou plus qui ont été répartis sur trois facteurs.
L’exemple suivant montre comment effectuer une ANOVA à trois facteurs dans R.
Exemple : ANOVA à trois facteurs dans R
Supposons qu’un chercheur veuille déterminer si deux programmes d’entraînement conduisent à des améliorations moyennes différentes de la hauteur de saut chez les joueurs de basket-ball universitaires.
Le chercheur soupçonne que le sexe et la division (Division I ou II) peuvent également affecter la hauteur de saut, c’est pourquoi il collecte également des données sur ces facteurs.
Son objectif est d’effectuer une ANOVA à trois facteurs pour déterminer comment le programme d’entraînement, le sexe et la division affectent la hauteur de saut.
Suivez les étapes suivantes pour effectuer cette ANOVA à trois facteurs dans R :
Étape 1 : Créer les données
Tout d’abord, créons un bloc de données pour contenir les données :
#create dataset df <- data.frame(program=rep(c(1, 2), each=20), gender=rep(c('M', 'F'), each=10, times=2), division=rep(c(1, 2), each=5, times=4), height=c(7, 7, 8, 8, 7, 6, 6, 5, 6, 5, 5, 5, 4, 5, 4, 3, 3, 4, 3, 3, 6, 6, 5, 4, 5, 4, 5, 4, 4, 3, 2, 2, 1, 4, 4, 2, 1, 1, 2, 1)) #view first six rows of dataset head(df) program gender division height 1 1 M 1 7 2 1 M 1 7 3 1 M 1 8 4 1 M 1 8 5 1 M 1 7 6 1 M 2 6
Étape 2 : Afficher les statistiques descriptives
Avant d’effectuer l’ANOVA à trois facteurs, nous pouvons utiliser dplyr pour résumer rapidement l’augmentation moyenne de la hauteur de saut regroupée par programme d’entraînement, sexe et division :
library(dplyr) #calculate mean jumping height increase grouped by program, gender, and division df %>% group_by(program, gender, division) %>% summarize(mean_height = mean(height)) # A tibble: 8 x 4 # Groups: program, gender [4] program gender division mean_height 1 1 F 1 4.6 2 1 F 2 3.2 3 1 M 1 7.4 4 1 M 2 5.6 5 2 F 1 2.6 6 2 F 2 1.4 7 2 M 1 5.2 8 2 M 2 4
Voici comment interpréter le résultat :
- L’augmentation moyenne de la hauteur de saut chez les femmes de division I ayant utilisé le programme d’entraînement 1 était de 4,6 pouces .
- L’augmentation moyenne de la hauteur de saut chez les femmes de division II qui ont utilisé le programme d’entraînement 1 était de 3,2 pouces .
- L’augmentation moyenne de la hauteur de saut chez les hommes de la division I ayant utilisé le programme d’entraînement 1 était de 7,4 pouces .
Et ainsi de suite.
Étape 3 : Effectuer l’ANOVA à trois facteurs
Ensuite, nous pouvons utiliser la fonction aov() pour effectuer l’ANOVA à trois :
#perform three-way ANOVA model <- aov(height ~ program * gender * division, data=df) #view summary of three-way ANOVA summary(model) Df Sum Sq Mean Sq F value Pr(>F) program 1 36.1 36.10 65.636 2.98e-09 *** gender 1 67.6 67.60 122.909 1.71e-12 *** division 1 19.6 19.60 35.636 1.19e-06 *** program:gender 1 0.0 0.00 0.000 1.000 program:division 1 0.4 0.40 0.727 0.400 gender:division 1 0.1 0.10 0.182 0.673 program:gender:division 1 0.1 0.10 0.182 0.673 Residuals 32 17.6 0.55 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
La colonne Pr(>F) affiche la valeur p pour chaque facteur individuel et les interactions entre les facteurs.
D’après les résultats, nous pouvons voir qu’aucune des interactions entre les trois facteurs n’était statistiquement significative.
Nous pouvons également constater que chacun des trois facteurs – programme, sexe et division – était statistiquement significatif.
Nous pouvons maintenant utiliser à nouveau dplyr pour trouver séparément l’augmentation moyenne de la hauteur de saut pour le programme, le sexe et la division :
library(dplyr) #find mean jumping increase by program df %>% group_by(program) %>% summarize(mean_height = mean(height)) # A tibble: 2 x 2 program mean_height 1 1 5.2 2 2 3.3 #find mean jumping increase by gender df %>% group_by(gender) %>% summarize(mean_height = mean(height)) # A tibble: 2 x 2 gender mean_height 1 F 2.95 2 M 5.55 #find mean jumping increase by division df %>% group_by(division) %>% summarize(mean_height = mean(height)) # A tibble: 2 x 2 division mean_height 1 1 4.95 2 2 3.55
À partir du résultat, nous pouvons observer ce qui suit :
- L’augmentation moyenne de la hauteur de saut chez les individus ayant utilisé le programme d’entraînement 1 ( 5,2 pouces ) était supérieure à l’augmentation moyenne chez les individus ayant utilisé le programme d’entraînement 2 (3,3 pouces ).
- L’augmentation moyenne de la hauteur de saut chez les hommes ( 5,55 pouces ) était supérieure à l’augmentation moyenne chez les femmes (2,95 pouces ).
- L’augmentation moyenne de la hauteur de saut chez les joueurs de division 1 ( 4,95 pouces ) était supérieure à l’augmentation moyenne chez les joueurs de division 2 (3,55 pouces ).
En conclusion, nous dirions que le programme d’entraînement, le sexe et la division sont tous des indicateurs significatifs de l’augmentation de la hauteur de saut chez les joueurs.
Nous dirions également qu’il n’y a pas d’effets d’interaction significatifs entre ces trois facteurs.
Ressources additionnelles
Les didacticiels suivants expliquent comment adapter d’autres modèles ANOVA dans R :
Comment effectuer une ANOVA unidirectionnelle dans R
Comment effectuer une ANOVA bidirectionnelle dans R