Tutoriel R ANOVA : unidirectionnel et bidirectionnel (avec exemples)

Qu'est-ce que l'ANOVA ?

Analyse de la variance (ANOVA) est une technique statistique, couramment utilisรฉe pour รฉtudier les diffรฉrences entre deux ou plusieurs moyennes de groupe. Le test ANOVA est centrรฉ sur les diffรฉrentes sources de variation d'une variable typique. L'ANOVA dans R fournit principalement la preuve de l'existence de l'รฉgalitรฉ moyenne entre les groupes. Cette mรฉthode statistique est une extension du test t. Il est utilisรฉ dans une situation oรน la variable factorielle comporte plus dโ€™un groupe.

ANOVA unidirectionnelle

Il existe de nombreuses situations dans lesquelles vous devez comparer la moyenne entre plusieurs groupes. Par exemple, le service marketing souhaite savoir si trois รฉquipes ont les mรชmes performances commerciales.

  • ร‰quipe : 3 facteurs de niveau : A, B et C
  • Vente : une mesure de performance

Le test ANOVA permet de savoir si les trois groupes ont des performances similaires.

Pour clarifier si les donnรฉes proviennent de la mรชme population, vous pouvez effectuer une analyse de variance unidirectionnelle (ANOVA unidirectionnelle ci-aprรจs). Ce test, comme tout autre test statistique, indique si l'hypothรจse H0 peut รชtre acceptรฉe ou rejetรฉe.

Hypothรจse dans le test ANOVA unidirectionnel

  • H0 : Les moyennes entre les groupes sont identiques
  • H3 : Au moins, la moyenne d'un groupe est diffรฉrente

En dโ€™autres termes, lโ€™hypothรจse H0 implique quโ€™il nโ€™y a pas suffisamment de preuves pour prouver que la moyenne du groupe (facteur) est diffรฉrente dโ€™un autre.

Ce test est similaire au test t, bien que le test ANOVA soit recommandรฉ dans les situations comportant plus de 2 groupes. Sauf que le test t et lโ€™ANOVA fournissent des rรฉsultats similaires.

Hypothรจses

Nous supposons que chaque facteur est รฉchantillonnรฉ de maniรจre alรฉatoire, indรฉpendant et provient d'une population normalement distribuรฉe avec des variances inconnues mais รฉgales.

Interprรฉter le test ANOVA

La statistique F est utilisรฉe pour tester si les donnรฉes proviennent de populations significativement diffรฉrentes, c'est-ร -dire de moyennes d'รฉchantillon diffรฉrentes.

Pour calculer la statistique F, vous devez diviser le variabilitรฉ entre les groupes au cours de la variabilitรฉ intra-groupe.

Le entre-groupes la variabilitรฉ reflรจte les diffรฉrences entre les groupes au sein de lโ€™ensemble de la population. Regardez les deux graphiques ci-dessous pour comprendre le concept de variance entre les groupes.

Le graphique de gauche montre trรจs peu de variation entre les trois groupes, et il est trรจs probable que les trois moyennes tendent vers global moyenne (c'est-ร -dire moyenne pour les trois groupes).

Le graphique de droite reprรฉsente trois distributions trรจs รฉloignรฉes les unes des autres, et aucune d'entre elles ne se chevauche. Il y a de fortes chances que la diffรฉrence entre la moyenne totale et la moyenne du groupe soit importante.

Interprรฉter le test ANOVA

Le au sein du groupe la variabilitรฉ prend en compte la diffรฉrence entre les groupes. La variation vient des observations individuelles ; certains points peuvent รชtre totalement diffรฉrents des intentions du groupe. Le au sein du groupe la variabilitรฉ capte cet effet et se rรฉfรจre ร  l'erreur d'รฉchantillonnage.

Pour comprendre visuellement le concept de variabilitรฉ au sein du groupe, regardez le graphique ci-dessous.

La partie gauche reprรฉsente la rรฉpartition de trois groupes diffรฉrents. Vous avez augmentรฉ la rรฉpartition de chaque รฉchantillon et il est clair que la variance individuelle est importante. Le test F diminuera, ce qui signifie que vous aurez tendance ร  accepter l'hypothรจse nulle

La partie droite montre exactement les mรชmes รฉchantillons (moyenne identique) mais avec une variabilitรฉ plus faible. Cela conduit ร  une augmentation du test F et tend en faveur de lโ€™hypothรจse alternative.

Interprรฉter le test ANOVA

Vous pouvez utiliser les deux mesures pour construire les statistiques F. Il est trรจs intuitif de comprendre la statistique F. Si le numรฉrateur augmente, cela signifie que la variabilitรฉ entre les groupes est รฉlevรฉe et qu'il est probable que les groupes de l'รฉchantillon proviennent de distributions complรจtement diffรฉrentes.

En dโ€™autres termes, une statistique F faible indique peu ou pas de diffรฉrence significative entre la moyenne du groupe.

Exemple de test ANOVA unidirectionnel

Vous utiliserez l'ensemble de donnรฉes sur les poisons pour mettre en ล“uvre le test ANOVA unidirectionnel. L'ensemble de donnรฉes contient 48 lignes et 3 variables :

  • Temps : Temps de survie de l'animal
  • poison : Type de poison utilisรฉ : niveau de facteur : 1,2 et 3
  • traiter : Type de traitement utilisรฉ : niveau de facteur : 1,2 et 3

Avant de commencer ร  calculer le test ANOVA, vous devez prรฉparer les donnรฉes comme suit :

  • ร‰tape 1 : Importer les donnรฉes
  • ร‰tape 2 : Supprimez les variables inutiles
  • ร‰tape 3 : Convertir le poison variable en niveau ordonnรฉ
library(dplyr)
PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/poisons.csv"
df <- read.csv(PATH) %>%
select(-X) %>% 
mutate(poison = factor(poison, ordered = TRUE))
glimpse(df)

Sortie :

## Observations: 48
## Variables: 3
## $ time   <dbl> 0.31, 0.45, 0.46, 0.43, 0.36, 0.29, 0.40, 0.23, 0.22, 0...
## $ poison <ord> 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2...
## $ treat  <fctr> A, A, A, A, A, A, A, A, A, A, A, A, B, B, B, B, B, B, ...		

Notre objectif est de tester lโ€™hypothรจse suivante :

  • H0 : Il n'y a pas de diffรฉrence dans la durรฉe moyenne de survie entre les groupes
  • H3 : La moyenne des durรฉes de survie est diffรฉrente pour au moins un groupe.

En dโ€™autres termes, vous voulez savoir sโ€™il existe une diffรฉrence statistique entre la moyenne des temps de survie selon le type de poison administrรฉ au cochon dโ€™Inde.

Vous procรฉderez comme suit :

  • ร‰tape 1 : Vรฉrifiez le format de la variable poison
  • ร‰tape 2 : Imprimez la statistique rรฉcapitulative : nombre, moyenne et รฉcart type
  • ร‰tape 3 : Tracer une boรฎte ร  moustaches
  • ร‰tape 4 : Calculer le test ANOVA unidirectionnel
  • ร‰tape 5 : Exรฉcutez un test t par paire

ร‰tape 1) Vous pouvez vรฉrifier le niveau du poison avec le code suivant. Vous devriez voir trois valeurs de caractรจres car vous les convertissez en facteur avec le verbe muter.

levels(df$poison)

Sortie :

## [1] "1" "2" "3"

ร‰tape 2) Vous calculez la moyenne et lโ€™รฉcart type.

df % > %
	group_by(poison) % > %
	summarise(
		count_poison = n(),
		mean_time = mean(time, na.rm = TRUE),
		sd_time = sd(time, na.rm = TRUE)
	)

Sortie :

## 
# A tibble: 3 x 4
##   poison count_poison mean_time    sd_time
##    <ord>        <int>     <dbl>      <dbl>
## 1      1           16  0.617500 0.20942779
## 2      2           16  0.544375 0.28936641
## 3      3           16  0.276250 0.06227627

ร‰tape 3) ร€ la troisiรจme รฉtape, vous pouvez vรฉrifier graphiquement sโ€™il existe une diffรฉrence entre les distributions. Notez que vous incluez le point instable.

ggplot(df, aes(x = poison, y = time, fill = poison)) +
    geom_boxplot() +
    geom_jitter(shape = 15,
        color = "steelblue",
        position = position_jitter(0.21)) +
    theme_classic()

Sortie :

Exemple de test ANOVA unidirectionnel

ร‰tape 4) Vous pouvez exรฉcuter le test ANOVA unidirectionnel avec la commande aov. La syntaxe de base d'un test ANOVA est la suivante :

aov(formula, data)
Arguments:			
- formula: The equation you want to estimate
- data: The dataset used	

La syntaxe de la formule est :

y ~ X1+ X2+...+Xn # X1 +  X2 +... refers to the independent variables
y ~ . # use all the remaining variables as independent variables

Vous pouvez rรฉpondre ร  notre question : Y a-t-il une diffรฉrence dans la durรฉe de survie entre le cochon d'Inde, connaissant le type de poison administrรฉ.

Notez qu'il est conseillรฉ de stocker le modรจle et d'utiliser la fonction summary() pour obtenir une meilleure impression des rรฉsultats.

anova_one_way <- aov(time~poison, data = df)
summary(anova_one_way)

Explication du code

  • aov(time ~ poison, data = df) : Exรฉcutez le test ANOVA avec la formule suivante
  • summary(anova_one_way) : Imprimer le rรฉsumรฉ du test

Sortie :

##             Df Sum Sq Mean Sq F value   Pr(>F)
## poison       2  1.033  0.5165   11.79 7.66e-05 ***
## Residuals   45  1.972  0.0438                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

La valeur p est infรฉrieure au seuil habituel de 0.05. Vous pouvez affirmer avec certitude qu'il existe une diffรฉrence statistique entre les groupes, indiquรฉe par le ยซ * ยป.

Comparaison par paire

Le test ANOVA unidirectionnel nโ€™indique pas quel groupe a une moyenne diffรฉrente. Au lieu de cela, vous pouvez effectuer un test Tukey avec la fonction TukeyHSD().

TukeyHSD(anova_one_way)

Sortie :

Comparaison par paire

ANOVA bidirectionnelle

Un test ANOVA bidirectionnel ajoute une autre variable de groupe ร  la formule. Il est identique au test ANOVA unidirectionnel, bien que la formule change lรฉgรจrement :

y=x1+x2

avec est une variable quantitative et et sont des variables catรฉgorielles.

Hypothรจse dans le test ANOVA bidirectionnel

  • H0 : les moyennes sont รฉgales pour les deux variables (c'est-ร -dire la variable factorielle)
  • H3 : Les moyennes sont diffรฉrentes pour les deux variables

Vous ajoutez une variable de traitement ร  notre modรจle. Cette variable indique le traitement rรฉservรฉ au cochon d'Inde. Vous souhaitez voir s'il existe une dรฉpendance statistique entre le poison et le traitement administrรฉ au cochon d'Inde.

Nous ajustons notre code en ajoutant un traitement avec l'autre variable indรฉpendante.

anova_two_way <- aov(time~poison + treat, data = df)
summary(anova_two_way)

Sortie :

##             Df Sum Sq Mean Sq F value  Pr(>F)    
## poison       2 1.0330  0.5165   20.64 5.7e-07 ***
## treat        3 0.9212  0.3071   12.27 6.7e-06 ***
## Residuals   42 1.0509  0.0250                    
## ---

Vous pouvez conclure que le poison et le traitement sont statistiquement diffรฉrents de 0. Vous pouvez rejeter lโ€™hypothรจse NULL et confirmer que le changement de traitement ou de poison a un impact sur la durรฉe de survie.

Rรฉsumรฉ

Nous pouvons rรฉsumer le test dans le tableau ci-dessous :

Test Code Hypothรจse Valeur P
ANOVA ร  sens unique
aov(y ~ X, data = df)
H3 : La moyenne est diffรฉrente pour au moins un groupe 0.05
Par paire
TukeyHSD(ANOVA summary)
0.05
ANOVA ร  deux voies
aov(y ~ X1 + X2, data = df)
H3 : La moyenne est diffรฉrente pour les deux groupes 0.05

Rรฉsumez cet article avec :