ANOVA à un facteur : partie 2 – la pratique

Pour faire suite au précédent article sur l’ANOVA à un facteur qui était plutôt théorique, je vais vous montrer, dans cet article comment réaliser, en pratique, une ANOVA à un facteur avec R.

Pour cela, je vais utiliser le jeu de données cholesterol du package multcomp. Si vous voulez reproduire les exemples, il faudra donc importer et charger ce package.

Le jeu de données “cholestérol” provient d’une étude clinique visant a évaluer l’effet de cinq traitements sur la réduction du cholesterol.
La modalité “1time” correspond à 20 mg d’une molécule une fois par jour, la modalité “2times correspond” à 10 mg deux fois par jour, la modalité “4times” correspond à 5mg quatre fois par jour, les modalités “drugD” et “drugE” correspondent à l’utilisation de 2 molécules qui servent de groupe “contrôle”.

Pour plus d’information sur ce jeu de données, utilisez la synthaxe
?cholesterol.

1. Exploration visuelle des données

En premier lieu, il est toujours utile de représenter les données pour se faire une première idée. Pour cette étape, j’ai l’habitude d’utiliser des boxplots, en ajoutant par-dessus les points. Cela permet de se rendre compte du nombre de données par modalité, ainsi que de leur distribution (plutôt normal, plutôt asymétrique ?), et de la présence éventuelle d’outliers (valeurs extrêmes). Ces deux derniers points pouvant biaiser les résultats de l’analyse.

 

ANOVA à un acteur avec R

L’argument outlier.alpha=0 dans la fonction geom_boxplot permet de ne pas représenter deux fois un point outlier (une fois avec la fonction geom_boxplot, un fois avec la fonction geom_jitter). La fonction geom_jitter permet de représenter les points sans qu’ils se chevauchent. L’argument width=0.25 permet de gerer l’écartement des points. Ici, par exemple, les données de la modalité “2times” sont un peu asymétriques, avec la présence de plusieurs outliers (points dépassant les traits verticaux).

2. Calculer les moyennes et leurs intervalles de confiance

Il peut également être intéressant de calculer les moyennes et leur intervalle de confiance. Une façon rapide de le faire est d’employer la fonction ci.mean du package Publish. Les estimations des intervalles de confiances sont basées sur une distribution t.

Il est également possible d’estimer les intervalles de confiance par approche bootstrap, à l’aide du package slipper, comme expliqué dans ici, mais cela prend peu plus de temps.

3. Réalisation de l’ANOVA

Sous R, il y a deux commandes principales pour réaliser l’ANOVA : aov et lm. J’utilise toujours lm, mais c’est surtout une question d’habitude.

4. Visualisation des résultats

Les résultats de l’ANOVA sont généralement représentés sous la forme d’une table de variance.

Lorsque l’ANOVA a été réalisée avec la fonction lm, je vous recommande d’utiliser la fonction Anova du package car, plutôt que la commande anova du package de base.

Dans le cadre d’une ANOVA à un facteur, la commande anova n’est pas problématique, mais elle le devient lorsqu’il s’agit d’une ANOVA à 2 facteurs, car elle fournit des résultats séquentiels, qui ont pour conséquence de dépendre de l’ordre d’apparition des facteurs dans la fonction lm, et qui ne sont pas, au final, ceux de la table ANOVA attendue.

Si vous utilisez la fonction aov, vous pouvez simplement utiliser la
fonction summary pour visualiser la table de résultat:

5. Vérification des hypothèses

Comme évoqué dans le premier article sur l’ANOVA à un facteur, le résultat de l’ANOVA à un facteur est valide (on peut avoir confiance dans ce résultat), si 3 hypothèses sont vérifiées :

  • Les résidus sont indépendants :

  • Les résidus suivent une loi normale de moyenne 0

  • Les résidus relatifs aux différentes modalités sont homogènes (ils ont globalement la même dispersion), autrement dit leur variance est constante.

5.1 Indépendance des résidus

L’indépendance des résidus signifie que les résidus ne doivent pas être corrélés entre eux. Par exemple, il ne doit pas avoir de lien entre un résidu et celui de la donnée suivante, ou précédente. On voit cela, lorsque des données sont répétées sur des sujets identiques. On parle alors d’autocorrélation des résidus. De la même façon, les résidus ne doivent pas être corrélés au facteur étudié.

L’absence d’autocorrélation se valide par l’étude du plan expérimental : pour réaliser une ANOVA à un facteur, il ne doit pas avoir de données répétées. Si c’est le cas, il faut utiliser un autre type de modèle, comme un modèle linéaire à effet mixte.

Il est aussi possible de faire un test statistique, le test de Dubin-Watson. L’hypothèse nulle de ce test spécifie un coefficient d’autocorrélation = 0, alors que l’hypothèse
alternative
spécifie un coefficient d’autocorrélation différent de 0 . On conclut donc à l’absence d’autocorrélation lorsque la pvalue du test est supérieure à 0.05.

Ici la p-value est < 0.05, l’hypothèse H0 n’est donc pas rejetée, et on conclut à l’absence d’auto-corrélation.

L’absence de corrélation entre les résidus et le facteur étudié se vérifie généralement de façon visuelle lors du diagnostic de régression, par un plot des résidus vs fitted values, ou encore des résidus vs les modalités du facteur.

ANOVA à un facteur avec R

Ici, la valeur des résidus ne semble pas dépendre du traitement puisqu’ils sont tous globalement centrés sur 0.

5.2 Normalité des résidus

Pour vérifier cette hypothèse, on utilise généralement un QQplot et/ou un test de normalité comme le test de Shapiro-Wilk.

ANOVA à un facteur avec R

Ici les points sont bien répartis le long de la ligne, cela signifie que les résidus sont distribués selon une loi normale. Le fait que les points soient centrés sur 0 (sur l’axe des y), montre que leur moyenne est égale à 0.

L’hypothèse nulle du test de normalité de Shapiro Wilk spécifie que les résidus suivent une loi normale, alors que son hypothèse alternative spécifie qu’ils suivent une autre distribution quelconque. Pour accepter la normalité des résidus, il est donc nécessaire d’obtenir une p-value > 0.05.

5.3 Homogénéité des variances

L’hypothèse d’homogénéité des variances, c’est-à-dire l’hypothèse que les résidus ont une variance constante, peut s’évaluer graphiquement et/ou à l’aide d’un test statistique.

La méthode graphique consiste à représenter les résidus standardisés en fonction des valeurs prédites (les moyennes des différents traitements).

ANOVA à un facteur avec R

On voit ici que les dispersions des résidus (leurs écartements verticaux) relatives à chaque modalité de traitement sont globalement identiques, l’hypothèse d’homogénéité des résidus est acceptée.

On peut également utiliser le test de Bartlett, le test de Levene, ou encore le test de Fligner-Killeen. Leurs hypothèses nulles spécifient que les variances des différents groupes sont globalement identiques. A l’inverse, leurs hypothèses alternatives spécifient qu’au moins 2 variances (les variances de 2 modalités) sont différentes.

Pour accepter l’hypothèse d’homogénéité des résidus, il est donc nécessaire d’obtenir une pvalue >0.05.

Ici, la p-avlue est largement supérieure à 0.05, l’hypothèse d’homogénéité des résidus est donc acceptée.

5.4 Astuce

Pour visualiser tous les plots du diagnostic de régression en une fois, il est possible d’utiliser les commande suivantes :

Pour repasser à une fenêtre graphique sans division, utilisez par(mfrow=c(1,1))

6. Interprétation des résultats

Les hypothèses étant validées, les résultats peuvent être interprétés.

La pvalue de l’ANOVA est < 0.05, ce résultat indique alors que les niveaux de réduction du cholestérol des 5 traitements sont globalement différents. Se pose ensuite évidemment la question de l’identification des moyennes différentes entre elles, ou différentes du contrôle. Pour cela on parle de tests post-hoc ou de comparaisons multiples.

7. Comparaisons multiples

7.1 Le problème de l’augmentation du risque alpha global

Les comparaisons multiples consistent à comparer deux à deux plusieurs moyennes, voire toutes les moyennes entre elles. Le problème de ce type de procédure est que la multiplication des tests de comparaisons entraîne une augmentation du risque de se tromper en mettant en évidence des différences significatives qui ne sont dues qu’au hasard. D’un point de vue statistique, on dit que le risque alpha global augmente. En général, le risque alpha, pour un seul test, est fixé à 5% . Lorsque k tests sont réalisés, le risque alpha global devient:

$$ \alpha_{global} = 1- (1- \alpha)^k $$

 

Dans cette situation, il est nécessaire d’utiliser une procédure d’ajustement des p-values obtenues lors des comparaisons** pour que les résultats soient en quelque sorte recalibrés pour un risque alpha global de 5%. Les principales procédures sont celles de “holm”, “bonferroni”, etc..

D’un point de vu pratique, le package multcomp permet de réaliser facilement ces comparaisons multiples en appliquant automatiquement une procédure d’ajustement.

7.2 Comparaisons au témoin : le test de Dunnett

Dans le jeu de données cholestrol, d’après la page d’aide (?cholesterol), il existe deux modalités contrôle, les modalités “drugD”” et “drugE”. Imaginons que le seul groupe contrôle soit drugE, par exemple.

Pour comparer les moyennes de tous les autres groupes à la moyenne du contrôle, on utilise un test de Dunnett. Pour commencer, il faut définir la modalité “drugE” comme modalité de référence. Pour cela, on utilise la fonction relevel

Par défaut, la modalité de référence, est la première dans l’ordre alphabétique. On peut la visualiser comme cela :

NB pour plus de détails sur la manipulation des variables catégorielles, vous pouvez consulter cet article.

Ici, la modalité, ou groupe, de référence est “1time”. Pour passer la remplacer par “drugE”, on utilise cette commande :

On vérifie comme cela :

La modalité drugE est bien passé en première place.

Ensuite, il est nécessaire de refaire tourner l’ANOVA à un facteur :

Evidemment, le résultat de l’ANOVA n’est pas modifié :

Pour réaliser toutes les comparaisons deux à deux avec le groupe contôle “drugE”, il suffit d’utiliser les commandes suivantes :

Chaque ligne correspond à une comparaison. Ici, toutes les moyennes sont différentes du groupe contrôle “drugE”. L’avantage de cette procédure est qu’elle fournit, pour chaque comparaison, une p-value ajustée qui va prendre en compte le nombre de comparaisons pour conserver, au final, un risque alpha global de 5%.

On peut également obtenir une représentation graphique des comparaisons:

test de Dunnette

Si les étiquettes des comparaisons sont tronquées, il suffit de modifier
position, comme ceci :

NB : Par défaut, les tests réalisés sont des tests bilatéraux, mais cela peut être changé au sein de la fonction glht, ,à l’aide de l’argument alternative = "less" par exemple

&nbsp ;

7.3 Toutes les comparaisons deux à deux : le test de Tukey

Parfois, ce qu’on souhaite, c’est **comparer toutes les moyennes deux à deux. Pour cela, on utilise le test de Tukey **:

On peut également visualiser les comparaisons :

Le package multcomp, contient également une fonction cld qui permet, dans le cadre du test de Tukey, d’indiquer par des lettres la significativité des comparaisons. Lorsque deux modalités partagent une même lettre, cela signifie que leurs différences ne sont pas significativement différentes. A l’inverse, lorsque deux modalités ne partagent pas de lettres en commun, alors cela signifie que leurs moyennes sont significativement différentes.

Comme expliqué dans un de mes précédents articles, on peut alors utiliser ces lettres pour les ajouter sur un graph réalisé avec ggplot2.

NB : les losanges noirs représentent les moyennes

J’espère que cet article vous sera utile pour réaliser vos ANOVA à un facteur avec R. Si quelque chose vous freine ou vous pose problème lorsque vous faites ce type d’analyse, indiquez le moi en commentaire, et j’essaierais de vous apporter une réponse.

Dans un prochain article, je vous montrerai quelles sont les solutions envisageables (transformation, ANOVA non-paramétrique, ANOVA basée sur les tests de permutation) lorsque les hypothèses de validité de l’ANOVA paramétrique classique, ne sont pas remplies. Et si cet article vous a plu : partagez-le !

Crédits photos: DCortezPhotography


Retrouvez ici mes 5 derniers articles :

ANOVA à un facteur : partie1

Gagnez du temps en utilisant des tests de permutation et en les automatisant!

Comment utiliser ggplot dans une boucle ou dans une fonction?

Comparaison de moyennes : indiquez la significativité des différences sur le graph

Ressources francophones pour l’analyse de données avec le logiciel R

Partager l'article
  •  
  •  
  •  
  •  
  •  
    2
    Partages
  • 2
  •  
  •  
  •  
  •  

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *