Analyse de la variance Table des matières Introduction 2 Construire le modèle et décomposer la variabilité 2 3 Application 3 4 Utilisation des fonctions lm et anova 4 5 Simulations 6 Introduction L analyse de la variance (ANOVA) a pour objectif d étudier l influence d un ou plusieurs facteurs sur une variable quantitative. Nous nous intéresserons ici au cas où les niveaux, ou modalités, des facteurs sont fixés par l expérimentateur. On parle alors de modèle fixe. Lorsque les niveaux des facteurs sont des variables aléatoires le modèle est dit aléatoire et l interprétation des résultats s applique à l ensemble des modalités que la variable peut explorer. Pour le modèle fixe, les conclusions se restreigent aux niveaux testés. L ANOVA se résume à une comparaison multiple de moyennes de différents échantillons constitués par les différentes modalités des facteurs. Les conditions d application du
test paramétrique de comparaison de moyennes s appliquent donc à nouveau. 2 Construire le modèle et décomposer la variabilité En microbiologie, la croissance d une bactérie (mesurée par le diamètre des colonies) est étudiée en fonction du ph du milieu. Pour cela, l expérimentateur choisit p niveaux du ph et utilise n i ( < i < p) boîtes de Pétri ensemencées pour chaque niveau i du ph. Dans cet exemple, la variable à expliquer est la croissance des colonies bactériennes et la variable explicative testée est le ph. Notons y ij ( < j < n i ) le diamètre de la colonie pour la boîte j du niveau i en ph. α i est l effet du ph au niveau i. µ est la moyenne théorique du diamètre des colonies bactériennes par boîte de Pétri et ɛ ij correspond à l erreur résiduelle. L ANOVA ne peut être réalisée qu à partir de jeux de données respectant les conditions suivantes : les y ij sont des variables aléatoires indépendantes elles sont normales et d écart-type constant σ ɛ ij N (0, σ 2 ) Le modèle s écrit : y ij = µ + α i + ɛ ij, Question : quelle est l hypothèse nulle à tester? Solution : H 0 : α i = 0, i µ, α i et ɛ ij sont des valeurs théoriques de la population dont sont extraits les y ij. À partir d un échantillon, on ne peut qu estimer leurs valeurs. Celles-ci sont notées y, α i et ɛ ij. y i est la moyenne des y ij pour le niveau i du facteur. comment calcule-t-on la valeur de ɛ ij? 2
montrer que p n i p p (y ij y) 2 = n i (y i y) 2 n i + (y ij y i ) 2 i= j= i= i= j= Notons S, la valeur de p ni i= j=(y ij y) 2, S 2, celle de p i= n i (y i y) 2, S 3 celle de p ni i= j=(y ij y i ) 2. S est la somme des carrés des écarts à la moyenne totaux. Ce terme se décompose en un terme de variabilité inter-classe, S 2 et un terme de variabilité intra-classe S 3. La variabilité totale S est ainsi décomposée en deux termes, le premier étant attribué au facteur. Le test de l hypothèse nulle est réalisé en calculant : Ce rapport s écrit aussi : p p N p i= p i= n i (y i y) 2 ni j=(y ij y i ) 2 p S 2 N p S 3 et, sous l hypothèse nulle, suit une distribution de Fisher-Snédecor à p et N p degrés de liberté. Question : que représente le terme du numérateur? Solution : une estimation de σ 2 3 Application Charger le fichier ecrin.txt utilisé lors de la première séance et transformer HEU, SEM, STA en facteurs heu.fac, sem.fac et sta.fac. calculer S, S 2 et S 3 pour le facteur heure (utiliser la fonction tapply) Solution : > S_sum((ric-mean(ric))^2); > S [] 22396.04 > ni_summary(heu.fac); > mi_tapply(ric,heu.fac,mean); > S2_sum(ni*(mi-mean(ric))^2); > S2 3
[] 307.284 > S3_sum((ric[heu.fac=="Matin"]-mi[])^2) + sum((ric[heu.fac=="soir"]-mi[2])^2); [] 9324.76 l effet du facteur heure est-il significatif (α = 5%)? > n_ni[]+ni[2] > p_2; > (S2/(p-))/(S3/(n-p)); 208.675 Le test est donc significatif : H 0 peut être rejetée pour un risque α = 5% 4 Utilisation des fonctions lm et anova L ANOVA est inclue dans le cadre plus large du modèle linéaire où l objectif est de bâtir et analyser un modèle statistique permettant d expliquer les variations d une variable à partir d autres variables. lm est une fonction permettant de tester l ajustement entre les prédictions d un modèle et les observations. Exemple : > x_seq(,0,); > y_rnorm(0,x); > plot(x,y); > lm_lm(y~x); > summary(lm); Call: lm(formula = y ~ x) Residuals: Min Q Median 3Q Max -0.737-0.4084 0.0555 0.420 0.64607 Coefficients: Estimate Std. Error t value Pr(> t ) (Intercept) 0.403 0.37.06 0.30 x 0.9625 0.0598 6.094 2.23e-07 *** --- Signif. codes: 0 *** 0.00 ** 0.0 * 0.05. 0. Residual standard error: 0.5432 on 8 degrees of freedom Multiple R-Squared: 0.97, Adjusted R-squared: 0.9663 F-statistic: 259 on and 8 DF, p-value: 2.23e-07 4
> abline(lm); 2 4 6 8 0 y 2 4 6 8 0 x Pour l ANOVA, la variable explicative est quantitative. Prenons l exemple de l heure. Le modèle s écrit : > lm_lm(ric~heu.fac); et l ANOVA est réalisée ensuite en utilisant l objet lm : > anova(lm); Analysis of Variance Table Response: ric Df Sum Sq Mean Sq F value Pr(>F) heu.fac 307.3 307.3 208.68 < 2.2e-6 *** Residuals 33 9324.8 4.7 --- Signif. codes: 0 *** 0.00 ** 0.0 * 0.05. 0. réaliser l ANOVA à partir du modèle additif : y ijk = µ + α i + β j + γ k + ɛ ijk, où α i mesure l effet du facteur heure, β j, celui du facteur semaine, γ k, celui du facteur station. Solution : > lm2_lm(ric~heu.fac+sem.fac+sta.fac); > anova(lm2); Analysis of Variance Table Response: ric Df Sum Sq Mean Sq F value Pr(>F) heu.fac 307.3 307.3 396.580 < 2.2e-6 *** sem.fac 5 633.2 20.3 5.528 < 2.2e-6 *** 5
sta.fac 3 358.8 270.7 34.95 < 2.2e-6 *** Residuals 249 9672.8 7.7 --- Signif. codes: 0 *** 0.00 ** 0.0 * 0.05. 0. les résultats sont-ils identiques lorsque l ont modifie l ordre des variables explicatives? Solution : Non. Lorsque A et B sont liés, Y A+B donne des décompositions des sommes des carrés des écarts totaux distincts de celles obtenues à partir Y B+A. Il est donc important de tenir compte de cet effet pour l interprétation des résultats. Lorsque les deux facteurs sont orthogonaux (ou indépendants) les deux modèles donnent les mêmes résultats. 5 Simulations Questions Que fait la fonction suivante : generdonnees <- function(mu,variance,niveauxfac,niter) donnees_matrix(ncol=2,nrow=sum(niter)); niveauxnom_vector(length=length(niveauxfac)); sumeffets_0; for(i in :length(niveauxfac)) niveauxnom[i]_i; sumeffets_sumeffets+niveauxfac[i]; if(sumeffets) print("la somme des effets doit etre nulle!"); donnees[,]_rep(niveauxnom,niter); pos_; for(i in :length(niveauxfac)) for(j in :niter[i]) 6
donnees[pos,2]_niveauxfac[i]+mu+rnorm(,sd=sqrt(variance)); pos_pos+; donnees; Écrire une nouvelle fonction, utilisant generdonnes, et permettant de tester l effet du facteur α On réalise à présent une centaine d itérations en imposant l absence d effet du facteur. calculer la moyenne et la variance des statistiques F de Fisher. Conclusions? Solution : la moyenne tend vers (H 0 est vraie en réalité) et la variance est très forte. calculer la moyenne des probabilités associées aux statistiques F Solution : la moyenne est proche de 0.5 car lorsque H 0 est vraie, F est distribué selon une loi uniforme Réaliser à présent 00 itérations pour 4 niveaux de facteurs avec α =, α 2 =.2, α 3 =, α 4 =.2, µ = 0, σ 2 = 5, et 0 répétitions pour chaque niveaux du facteur. Question : quelle est la puissance du test dans ces conditions? Discutez... Solution : β 0.3 7