MANOVA à deux facteurs avec R / Two between subjects factors MANOVA using R
Présentation des données / Data
Exemple de réalisation d’une MANOVA avec R. Le fichier contient le résultat d’un groupe de patient et d’un groupe contrôle qui ont passé deux tests (questionnaires) concernant l’image du corps (le questionnaire BAS-2 et le questionnaire ISP 25). Les résultats des tests (scores globaux) sont indiqués dans deux colonnes (nommées BAS2 et ISP). Ce sont les variables dépendantes. Les autres colonnes concernent des variables indépendantes et notamment les deux facteurs que nous allons étudier : le genre (GENRE) et l’appartenance au groupe contrôle ou patient (GROUP). Attention ces données contiennent des cases vides.
Example of a MANOVA with R. The file contains the result of a patient group and a control group who have passed two tests (questionnaires) concerning the body image (the BAS-2 questionnaire and the questionnaire ISP 25). The results of the tests (overall scores) are indicated in two columns (named BAS2 and ISP). These are the dependent variables. The other columns concern independent variables and in particular the two factors that we will study: gender (GENRE) and membership in the control or patient group (GROUP). Warning, there are some empty cases in the data.
Important : cliquer sur les cases noires pour voir le code / Please click on black boxes to see the code
Les conditions pour utiliser une MANOVA / Assumptions of MANOVA
Il y a des conditions sur les données pour pouvoir effectuer une MANOVA
- Les variables dépendantes doivent être distribuées normalement dans les groupes.
- Les variances doivent être homogènes dans tous les niveaux des facteurs
- La linéarité doit être vérifiée entre toutes les paires de variables dépendantes, et dans tous les couples possibles de variable-covariate.
MANOVA can be used in certain conditions:
- The dependent variables should be normally distribute within groups. The R function mshapiro.test( )[in the mvnormtest package] can be used to perform the Shapiro-Wilk test for multivariate normality. This is useful in the case of MANOVA, which assumes multivariate normality.
- Homogeneity of variances across the range of predictors.
- Linearity between all pairs of dependent variables, all pairs of covariates, and all dependent variable-covariate pairs in each cell.
Lecture de donnees / Read data in data file
D <- read.table("manova-data.csv",sep=";",dec=",",header=TRUE) ;
head(D) ;
ID
<int>
|
GENRE
<fctr>
|
GROUP
<fctr>
|
BAS
<int>
|
ISP
<int>
|
|
---|---|---|---|---|---|
1 | 1 | WOMAN | PATIENT | 35 | 0 |
2 | 2 | WOMAN | PATIENT | 45 | 31 |
3 | 3 | MAN | PATIENT | 35 | 47 |
4 | 4 | MAN | PATIENT | 43 | 38 |
5 | 5 | WOMAN | PATIENT | 43 | 30 |
6 | 6 | MAN | PATIENT | 38 | 16 |
Mise en forme des facteurs / Independant variables as factor
Le variables DGENREetDGENREetDGROUP doivent être transformées car elles n’ont pas le type facteur. On crée deux nouveaux facteurs en changeant le type.
The variables D $ GENRE and D $ GROUP must be transformed because they do not have the factor type. Two new factors are created by changing the type.
group <- factor(D$GROUP) ;
genre <- factor(D$GENRE) ;
Manova
On donnera les résultats avec la statistique de Pillai (conseillée, plus robuste) et la statistique de Wils (plus couramment utilisée).
The results will be given with the Pillai statistic (recommended, more robust) and the Wils statistic (more commonly used).
res.man <- manova(cbind(D$BAS,D$ISP) ~ genre*group, data = iris)
summary.manova(res.man)
Df Pillai approx F num Df den Df Pr(>F)
genre 1 0.151127 4.9849 2 56 0.01018 *
group 1 0.052965 1.5660 2 56 0.21790
genre:group 1 0.026223 0.7540 2 56 0.47519
Residuals 57
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
summary.manova(res.man,"Wilks")
Df Wilks approx F num Df den Df Pr(>F)
genre 1 0.84887 4.9849 2 56 0.01018 *
group 1 0.94704 1.5660 2 56 0.21790
genre:group 1 0.97378 0.7540 2 56 0.47519
Residuals 57
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Effets univariés / Univariate effects
summary.aov(res.man)
Response 1 :
Df Sum Sq Mean Sq F value Pr(>F)
genre 1 222.8 222.776 3.9443 0.05185 .
group 1 46.4 46.384 0.8212 0.36863
genre:group 1 57.7 57.665 1.0210 0.31656
Residuals 57 3219.4 56.480
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Response 2 :
Df Sum Sq Mean Sq F value Pr(>F)
genre 1 60.0 60.000 0.3884 0.5356
group 1 54.1 54.057 0.3499 0.5565
genre:group 1 1.7 1.656 0.0107 0.9179
Residuals 57 8805.3 154.480
5 observations deleted due to missingness