Cours 7 : Exemples I- Régression linéaire simple II- Analyse de variance à 1 facteur III- Tests statistiques Le modèle de régression linéaire simple Exemple 1 : On cherche à expliquer les variations de y par celles d’une fonction linéaire de x, i.e., à valider le modèle de RLS yi = axi + b + ε i , i = 1,...,30. où εi est une suite de variables aléatoires i.i.d. de moyenne nulle et de varianceσ >x=1:100; X=sample(x,30,replace=TRUE) >Y=3+7*X+rnorm(30,0,100) >regression=lm(Y~X); regression Call: lm(formula = Y ~ X) Coefficients: (Intercept) X -30.26 7.42 ² Le modèle de régression linéaire simple > plot(X,Y) >text(40,600, substitute(y==a*x+b, list(a=regression$coef[2], b=regression$coef[1]))) > lines(X,regression$fitted.values) > M=locator(); v=locator() > segments(0,M$y,M$x,M$y) > arrows(M$x,M$y,M$x,v$y,angle=30, code=3) > segments(M$x,v$y,0,v$y,lty=2) > text(0,350, "yi",col="red") > text(0,200, "^yi",col="red") > text(25,250, "ei",col="red") > title("nuage de points et droite de regression") Le modèle de régression linéaire simple Le modèle de régression linéaire simple > names(regression) [1] "coefficients" "residuals" "effects" [5] "fitted.values" "assign" "qr" [9] "xlevels" "call" "terms" "rank" "df.residual" "model« coefficients (ou coef) : estimations des paramètres aˆ et bˆ fitted.values (ou fitted): valeurs estimées yˆ i Residuals (ou res) : résidus ei = yi − yˆ i df.residual : nombre de ddl des résidus (n-2) Le modèle de régression linéaire simple > anova(regression) F=MSM/MSR Analysis of Variance Table SSM Response: Y SSR Df Sum Sq Mean Sq F value Pr(>F) X 1 1485466 1485466 159.83 4.312e-13 *** Residuals 28 260238 9294 MSM=SSM/dl=SSM --n-2 MSR=SSR/dl=SSR/n-2 Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Le modèle de régression linéaire simple â >summary(regression) Call: lm(formula = Y ~ X) Residuals: Min 1Q -206.89 -76.47 Median 12.28 ^b 3Q 61.42 Max 192.04 s(^b) s(â) Coefficients: tb=^b/s(^b) Estimate Std. Error t value Pr(>|t|) (Intercept) -30.2553 34.3536 -0.881 0.386 ta=â/s(â) X 7.4199 0.5869 12.642 4.31e-13 *** --S=sqrt(MSR) Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 96.41 on 28 degrees of freedom Multiple R-Squared: 0.8509, Adjusted R-squared: 0.8456 F-statistic: 159.8 on 1 and 28 DF, p-value: 4.312e-13 R²=SSM/(SSM +SSR) Le modèle de régression linéaire simple ¾ Pertinence du modèle sur les données : De petites valeurs sont un gage >summary(regression) de stabilité du modèle donc du Call: lm(formula = Y ~ X) Residuals: Min 1Q -206.89 -76.47 Median 12.28 pouvoir prédictif: valeur de b pas très stable ici 3Q 61.42 Max 192.04 % de variations expliquées par le modèle R² doit être proche de 1 pour bon pouvoir explicatif: ok ici Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -30.2553 34.3536 -0.881 0.386 X 7.4199 0.5869 12.642 4.31e-13 *** Écart-type résiduel --Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1doit être faible Residual standard error: 96.41 on 28 degrees of freedom Multiple R-Squared: 0.8509, Adjusted R-squared: 0.8456 F-statistic: 159.8 on 1 and 28 DF, p-value: 4.312e-13 pour bon pouvoir prédictif Le modèle de régression linéaire simple • Conclusion 1 : le modèle a un bon pouvoir explicatif sur les données, mais le pouvoir prédictif risque d’être entaché par l’instabilité du coefficient b et une variance résiduelle importante. Le modèle de régression linéaire simple ¾ Analyse des résidus Fonctions R utiles: - influence(): étude des points contribuant à l’instabilité du modèle (prédiction). e ei - residuals() rei = i = s (ei ) s (1 − hii ) - rstudent() : résidus réduits - acf() : graphe d’autocorrelation des résidus - plot() - qqnorm() Le modèle de régression linéaire simple - Repérage des points aberrants et des points contribuant fortement à la détermination du modèle : Est suspect un point tel que le résidu réduit est supérieur à 2 en valeur absolue : si sa distance de Cook’s est >1, le point suspect contribue trop fortement à la détermination du modèle - Vérifier les hypothèse sur les résidus : iid et normalité (préalable à l’interprétation des tests) Le graphe des résidus ne doit pas présenter de structure (variance constante sur la verticale et symetrie par rapport aux abscisses). . Le graphe des résidus réduits doit être compris entre –2 et 2 et ne doit pas présenter de structure. D’autres graphiques tels que le qqnorm() ou acf() peuvent aider. Le modèle de régression linéaire simple Le modèle de régression linéaire simple > regression$res 1 -124.555774 7 62.303811 13 -32.171872 19 -25.642668 25 1.090471 2 3 192.039037 -206.889677 8 9 49.992064 58.754097 14 15 66.230754 14.259927 20 21 -90.246235 50.526061 26 27 94.392800 29.988159 4 5 66.405930 134.778691 10 11 -59.526887 -122.429844 16 17 -85.047904 -10.456005 22 23 40.156580 -54.350556 28 29 20.679500 -162.341983 6 84.971904 12 164.829565 18 -85.910834 24 10.292678 30 -82.121786 Le modèle de régression linéaire simple > rstudent(regression) 1 2 3 4 5 6 -1.33891051 2.18030419 -2.35658586 0.69563804 1.44970973 0.90378230 7 8 9 10 11 12 0.67206553 0.54684103 0.61362322 -0.63902844 -1.37190197 1.80811221 13 14 15 16 17 18 -0.33693306 0.72519680 0.14970613 -0.92811721 -0.11319206 -0.91236104 19 20 21 22 23 24 -0.27792699 -0.96174524 0.53172811 0.43253471 -0.58014349 0.10726922 25 26 27 28 29 30 0.01142126 1.03392757 0.31123595 0.21446494 -1.79851278 -0.86589500 Le modèle de régression linéaire simple > par(mfrow=c(2,2)); plot(regression) Le modèle de régression linéaire simple >plot(regression$fitted,rstudent(regression),xlabel="fitted values", ylabel="standardized residuals"); >abline(h=2,col="red");abline(h=-2,col="red") Le modèle de régression linéaire simple > par(mfrow=c(1,2)) > plot(regression$residuals) > acf(regression$res) Le modèle de régression linéaire simple Conclusion 2 : Les résidus semblent approximativement gaussiens (qqnorm) et i.i.d. (pas de structure, de part et d’autre de 0 sur les plots et le corrélogramme).Deux points devraient être éventuellement enlevés du modèle : les points 2 et 3. Le modèle de régression linéaire simple • Les conséquences de la non-normalité sont : – Les estimateurs ne sont pas optimaux - Les tests et intervalles de confiances sont invalides. En réalité seulement les distribution à queue très longue posent problème et une légère nonnormalité peut être ignorée, d’autant plus que l’échantillon est grand. Dans ce cas, on essaie généralement des transformations. • Les conséquences d’une variance non constante sont: Les estimations ne sont pas bonnes il faut utiliser les moindres carrés pondérés. Le modèle de régression linéaire simple ¾ Validité du modèle sur la population La variable X a une influence significative sur Y à 5%: le coefficient est significativement différent de zero >summary(regression) Call: lm(formula = Y ~ X) Residuals: Min 1Q -206.89 -76.47 Median 12.28 3Q 61.42 Max 192.04 Le terme constant n’est pas significativement different de zero: on peut decider de refaire tourner le modèle sans lui Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -30.2553 34.3536 -0.881 0.386 X 7.4199 0.5869 12.642 4.31e-13 *** --Le modèle est Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1pertinent à 5% Residual standard error: 96.41 on 28 degrees of freedom Multiple R-Squared: 0.8509, Adjusted R-squared: 0.8456 F-statistic: 159.8 on 1 and 28 DF, p-value: 4.312e-13 Le modèle de régression linéaire simple Conclusion 3: le modèle linéaire est pertinent pour expliquer variations de Y sur la population. Conclusion : L’ajustement linéaire est pertinent ici. Pour obtenir un meilleur pouvoir prédictif, il faudrait éventuellement retirer les points 2 et 3 de l’analyse et utiliser un modèle sans terme constant. II- Analyse de variance Six (k) insecticides (spray) ont été testés chacun sur 12 cultures. La réponse observée (count) est le nombre d'insectes. Les données sont contenues dans le data.frame « InsectSprays ». On veut savoir si il existe un effet significatif du facteur insecticide, i.e. on veut valider le modèle d’analyse de variance : Countij = µ + α j + ε ij , i = 1,...12; j = 1,...6. où ε i est une suite de variables aléatoires i.i.d. de moyenne nulle et de variance σ ² >anov=aov(sqrt(count) ~ spray, data = InsectSprays) II- Analyse de variance SSInter > summary(anov) SSIntra Df Sum Sq Mean Sq F value 5 88.438 17.688 44.799 66 26.058 0.395 spray Residuals --Signif. codes: Pr(>F) < 2.2e-16 *** P(F>Fvalue) F suit F(k-1,n-k) V Inter 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 V intra k-1 n-k V inter/V intra II- Analyse de variance > names(anov) [1] "coefficients" "residuals" "effects" "rank" [5] "fitted.values" "assign" "qr" "df.residual" [9] "contrasts" "xlevels" "call" "terms" [13] "model" coefficients : moyennes dans les niveaux αˆ j residuals : résidus estimes du modèle eij = yij − yˆij fitted.values : valeurs estimées yˆij = µˆ + αˆ j >boxplot(sqrt(InsectSpray$count))~InsectSpray$spray II- Analyse de variance Le Boxplot montre : - les points aberrants - l’asymetrie de la distribution - une inégalité dans les variances. Cependant, comme souvent il y a peu de données dans chaque niveau du facteur on peu s’attendre à une grande variabilité même si les variances des souspopulations sont en réalité égales. II- Analyse de variance Analyse des résidus (cf régression) >par(mfrow=c(2,2)); plot(anov) II- Analyse de variance >plot(rstudent(anov)) II- Analyse de variance >par(mfrow=c(2,1)) > acf(anov$res) >plot(anov$res) II- Analyse de variance Les moyennes sont différentes La distribution des résidus semble gaussienne Les résidus sont i.i.d. si l’on ne tient pas compte de la variance Il existe des points aberrants 39, 27, 25 dont les distances de Cook’s . montrent qu’ils influencent trop les coefficients II- Analyse de variance >summary(anov) Df Sum Sq Mean Sq F value 5 88.438 17.688 44.799 66 26.058 0.395 spray Residuals --Signif. codes: Pr(>F) < 2.2e-16 *** 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Le test de Fisher montre que l’on rejette fortement l’hypothèse nulle (avec un risque de se tromper presque nul): le modèle est significatif :il existe un fort effet du facteur spray sur le nombre d’insectes. >boxplot(sqrt(InsectSpray$count))~InsectSpray$spray II- Analyse de variance >anov$coeff (Intercept) 3.7606784 sprayB 0.1159530 sprayC -2.5158217 sprayD -1.5963245 sprayE -1.9512174 sprayF 0.2579388 Le groupe A est le groupe de référence avec une moyenne de 3.76. Le groupe B a une moyenne de 3.76+0.11,…. Les écarts les plus significatifs sont entre les groupes A B et F et les groupes C D et E, qui sont plus efficaces que les premiers. III- Test de comparaison de moyenne Soient (X1, . . . , Xn) un echantillon issu d’une population iid N(1, 1) et (Y1, . . . , Ym) un échantillon issu d’une population iid E(1). On veut tester: H 0 : E ( X ) = E (Y ) contre H1 : E ( X ) ≠ E (Y ) > x = rnorm(100,1,1) >y = rexp(200,1) >st=t.test(x,y); st III- Test de comparaison de moyenne Généralisation du test de Student au cas de Welch Two Sample t-test variances inégales data: x and y t = -0.2178, df = 178.446, p-value = 0.8278 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: P(|T|>t) -0.2648092 0.2121608 T suit T(179) sample estimates: mean of x : 0.9544127 mean of y : 0.9807369 > summary(st) Length statistic 1 parameter 1 p.value 1 conf.int 2 estimate 2 null.value 1 alternative 1 method 1 data.name 1 Class -none-none-none-none-none-none-none-none-none- Mode numeric numeric numeric numeric numeric numeric character character character X Y Nombre de ddl corrigé=179 Statistique t III- Test de comparaison de moyenne > names(st) [1] "statistic" "parameter" "p.value" "conf.int" "estimate" [6] "null.value" "alternative" "method" "data.name" statistic : valeur de t alternative : type d’alternative two-sided, one-sided. estimate : moyennes empiriques des echantillons null.value : hypothese nulle conf.int: intervalles de confiances parameter :ddl Conclusion : on ne peut pas rejeter l’hypothèse nulle au seuil 5% : les moyennes ne sont pas significativement différentes.