10.3 Modèle croisé complet
Le modèle ANOVA que nous venons de faire s’appelle un modèle croisé parce que les mesures sont effectuées pour chaque combinaison des niveaux des deux variables facteurs explicatives, et ce, de manière indépendante (les observations d’un niveau ne sont pas dépendantes de celles d’un autre niveau)54.
# species sex n
# <fctr> <fctr> <int>
# 1: B F 50
# 2: B M 50
# 3: O F 50
# 4: O M 50
Le modèle croisé sans interactions que nous avions utilisé est cependant incomplet puisque, pour considérer tous les cas possibles, il faut aussi tenir compte de ce que ces interactions peuvent exister et les inclure directement dans le modèle. Le modèle complet s’écrit comme ceci :
\[y_{ijk} = \mu + \tau1_j + \tau2_k + \tau1\tau2_{jk} + \epsilon_i \mathrm{\ avec\ } \epsilon \sim N(0, \sigma)\]
avec le nouveau terme \(\tau1\tau2_{jk}\) qui correspond à la distance entre la kème moyenne générale (la moyenne quel que soit j) et la moyenne particulière pour les observations des populations particulières à k et j simultanément. Ce modèle permet ainsi que chaque moyenne \(\bar{y}_{jk}\) puisse différer librement, et donc, autorise les interactions. Toujours considérant les trois variables y
, fact1
et fact2
, ce modèle s’écrit dans R comme suit :
\[y \sim fact1 + fact2 + fact1:fact2\]
Avec \(fact1:fact2\) étant le terme d’interactions. On peut aussi le simplifier en utilisant *
à la place de +
entre les deux variables facteurs, ce qui signifie implicitement de tenir également compte des interactions :
\[y \sim fact1 * fact2\]
Cette fois-ci, la décomposition de la variable se fait en quatre étapes : (1) depuis la moyenne générale µ vers les jèmes moyennes pour fact1
, ensuite (2) de ces moyennes vers les kèmes moyennes pour fact2
, puis (3) de ces dernières vers la moyenne particulière pour le sous-groupe jk, et enfin (4) les résidus \(\epsilon_i\) pour chaque observation. Voyons ce que donne ce modèle complet sur nos données crabs2
.
crabs2_anova2comp <- lm(data = crabs2, aspect5 ~ species * sex)
anova(crabs2_anova2comp) %>.%
tabularise(.)
# Warning in set2(resolve(...)): The object is read-only and cannot be modified.
# If you have to modify it for a legitimate reason, call the method $lock(FALSE)
# on the object before $set(). Using $lock(FALSE) to modify the object will be
# enforced in future versions of knitr and this warning will become an error.
Analyse de la variance | ||||||
---|---|---|---|---|---|---|
Terme | Ddl | Somme des carrés | Carrés moyens | Valeur de Fobs. | Valeur de p | |
species | 1 | 2.75·10-05 | 2.75·10-05 | 17.091 | 5.28·10-05 | *** |
sex | 1 | 6.99·10-04 | 6.99·10-04 | 434.161 | < 2·10-16 | *** |
species:sex | 1 | 5.21·10-07 | 5.21·10-07 | 0.324 | 5.70·10-01 |
|
Résidus | 196 | 3.16·10-04 | 1.61·10-06 | |||
0 <= '***' < 0.001 < '**' < 0.01 < '*' < 0.05 |
Le tableau de l’ANOVA se présente de manière similaire au modèle sans interactions, mais avec une ligne supplémentaire indiquée species:sex
qui représente les interactions. Un troisième test est réalisé selon le même principe, c’est-à-dire que les carrés moyens en ligne 3 sont divisés par les carrés moyens des résidus en ligne 4 pour donner comme valeur F 5,21•10-7 / 1,61•10-6 = 0.324. Ensuite la comparaison à la distribution F théorique nous donne une valeur P de 0.57. Notez que les degrés de liberté (1 et 196) ont changé de même que les valeurs de F observées dans les deux lignes du dessus.
Notre analyse confirme qu’il n’y a pas d’interactions. La valeur P (0,57) en regard du terme species:sex
correspondant est très largement supérieure à \(\alpha\) de 5%. Les tests relatifs à species
et sex
donnent des valeurs légèrement différentes de notre modèle sans interactions. Les différences entre les deux seront d’autant plus importantes que les interactions, s’il y en a, sont fortes. Les conclusions restent les mêmes que précédemment, et ici, nous démontrons par un test d’hypothèse que les interactions ne sont pas significatives. Naturellement, la description des données, les vérifications (homoscédasticité, distribution normale ou quasi normale des résidus) et les analyses “post-hoc” en cas de rejet de \(H_0\) sont à réaliser ici aussi. Nous les avons déjà faites plus haut à peu de choses près (les résultats sont ici très proches de ceux du modèle sans interactions, puisque ces dernières sont négligeables).
Faites attention à un piège fréquent lorsque vous avez des mesures multiples sur les mêmes individus. Par exemple, si vous étudiez trois populations avec disons, cinq réplicats par population et que vous dénombrez des cellules marquées sur dix coupes histologiques réalisées chaque fois dans un organe du même individu, vous aurez 3x5x10 = 150 mesures, mais vous ne pouvez pas utiliser une ANOVA à deux facteurs croisés car les 150 observations ne sont pas indépendantes les unes des autres. Vous n’avez jamais mesuré que 15 individus au total. Si vous analysez ces données comme si vous en aviez mesuré 150, votre analyse sera incorrecte. Il s’agit ici d’une erreur qui s’appelle la pseudo-réplication. Vous devrez utiliser d’autres modèles comme le modèle à facteurs hiérarchisés (voir section suivante) ou le modèle à mesures répétées (voir encore après).
Conditions d’application
Les conditions d’application sont les mêmes que pour l’ANOVA à deux facteurs sans interactions, sauf qu’ici, les interactions sont bien évidemment permises.
À vous de jouer !
Effectuez maintenant les exercices du tutoriel A10La_anova2 (ANOVA à 2 facteurs).
BioDataScience1::run("A10La_anova2")
Pour en savoir plus
- Une page en français qui explique l’ANOVA à deux facteurs. Suivez les liens pour la suite et pour l’application dans R.
À vous de jouer !
Réalisez le travail A10Ia_anova2, partie I.
Travail individuel pour les étudiants inscrits au cours de Science des Données Biologiques I : inférence à l’UMONS à terminer avant le 2025-04-29 23:59:59.
Initiez votre projet GitHub Classroom
Voyez les explications dans le fichier README.md
, partie I.
De plus, nous avons ici un plan balancé puisque le nombre de réplicats pour chaque niveau est le même. C’est une situation optimale qu’il faut toujours chercher à atteindre pour une ANOVA, même si un nombre différent d’observations par niveau est également accepté.↩︎