01 Exemple
01 Exemple
01 Exemple
> data(state)
> stateEU <- data.frame(state.x77, row.names=state.abb)
> attach(stateEU)
Cette base de données comprend les mesures sur 50 pays des Etats-Unis de
• Population population estimée au 1er juillet 1975
• Income revenu par individu (1974)
• Illiteracy illettrisme (1970, pourcentage de la population)
• Life.Exp espérance de vie moyenne (1969-1971)
• Murder taux d’homicide pour 100 000 individus (1976)
• HS Grad pourcentage de diplômés niveau baccalauréat –high-school graduates– (1970)
• Frost] nombre de jours moyens avec des températures inférieures à 0o C dans les
grandes villes (1931-1960)
• Area surface du pays en miles carrés.
1 Sélection de variables
On souhaite expliquer l’espérance de vie Life.Exp en fonction des autres variables. On va
utiliser pour cela une méthode descendante.
Residuals:
Min 1Q Median 3Q Max
-1.48895 -0.51232 -0.02747 0.57002 1.49447
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.094e+01 1.748e+00 40.586 < 2e-16 ***
Population 5.180e-05 2.919e-05 1.775 0.0832 .
Income -2.180e-05 2.444e-04 -0.089 0.9293
Illiteracy 3.382e-02 3.663e-01 0.092 0.9269
Murder -3.011e-01 4.662e-02 -6.459 8.68e-08 ***
HS.Grad 4.893e-02 2.332e-02 2.098 0.0420 *
1
Frost -5.735e-03 3.143e-03 -1.825 0.0752 .
Area -7.383e-08 1.668e-06 -0.044 0.9649
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Si nous souhaitons minimiser le critère AIC, nous pouvons l’obtenir de la façon suivante :
> extractAIC(life.lm)
[1] 8.00000 -22.18462
(On préférera extractAIC à la fonction AIC qui donne un critère légèrement différent.)
On commence par enlever les variables dont la p-valeur est supérieure à 0.3.
Residuals:
Min 1Q Median 3Q Max
-1.47095 -0.53464 -0.03701 0.57621 1.50683
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.103e+01 9.529e-01 74.542 < 2e-16 ***
Population 5.014e-05 2.512e-05 1.996 0.05201 .
Murder -3.001e-01 3.661e-02 -8.199 1.77e-10 ***
HS.Grad 4.658e-02 1.483e-02 3.142 0.00297 **
Frost -5.943e-03 2.421e-03 -2.455 0.01802 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residuals:
2
Min 1Q Median 3Q Max
-1.5015 -0.5391 0.1014 0.5921 1.2268
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 71.036379 0.983262 72.246 < 2e-16 ***
Murder -0.283065 0.036731 -7.706 8.04e-10 ***
HS.Grad 0.049949 0.015201 3.286 0.00195 **
Frost -0.006912 0.002447 -2.824 0.00699 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Intervalle de prévision.
Supposons que nous disposions des données pour un nouveau pays, par exemple européen.
Nous souhaitons comparer l’espérance de vie estimée avec ce modèle avec l’espérance de
vie observée. L’intervalle de confiance sur la valeur prédite est donné par l’instruction
suivante :
> predict(life.lm,data.frame(Murder=8, HS.Grad=75, Frost=80, Population=4250),
+ interval="prediction",level=0.95)
fit lwr upr
1 71.85724 70.23526 73.47921
Ainsi avec les valeurs ci-dessus, si l’espérance de vie est comprise dans l’intervalle [70.23, 73.48]
il n’y a pas de contradiction avec le modèle.
3
2 Etude des résidus
Représentations graphiques.
On représente les principaux graphiques sur les résidus.
1.5
HI ● HI ●
Standardized residuals
2
●
● ● ●● ●
●
●
● ● ●● ●
● ●●
0.5
● ● ● ●
Residuals
●●
1
●
● ●● ●●●●
● ● ●●●
● ● ● ●
● ● ●●
● ● ●
● ● ● ●●
●
●
0
● ● ●●●
●
● ●●●
−0.5
●
● ● ●
● ●●●
● ● ●
●●
● ●●●●
−1
● ● ● ●
● SC ● ●
●●
● ●●●
−1.5
● SC
ME ●
−2
● ME
69 70 71 72 −2 −1 0 1 2
0.4
HI ●
1.5
HI
ME ●
Standardized residuals
● SC ●
0.3
● ●
● ● ● ● ● ●
Cook's distance
● ● ●
●
●
1.0
● ● ●
● ● ● ●● ●
● ●
● ●
0.2
●●
● ●
● ● ●● ●
0.5
● ●
0.1
● ● WA
● ●
● ● ME
● ●
●
0.0
0.0
69 70 71 72 0 10 20 30 40 50
Toutes les hypothèses semblent vérifiées : pas de structure dans le premier graphique ni dans
le troisième, pas d’hétéroscédasticité au vu du premier graphique, hypothèse gaussienne
non remise en cause par le QQ-plot et aucun point aberrant d’après la distance de Cook.
On vérifie plus précisément l’hypothèse d’indépendance des résidus. On peut représenter
l’autocorrélation des résidus
> acf(residuals(life.lm),ci=0.99)
Series resid(life.lm)
1.0
0.8
0.6
0.4
ACF
0.2
0.0
−0.2
−0.4
0 5 10 15
Lag
L’hypothèse d’indépendance est cohérente graphiquement, au seuil 0.99. Nous avons choisi
ici d’être peu restrictifs sur l’autocorrélation en prenant un intervalle de confiance de niveau
0.99, mais elle ne serait pas valide avec une confiance de 0.95.
Tests statistiques.
On réalise des test statistiques afin de valider les hypothèses. On teste tout d’abord l’hy-
pothèse de normalité :
4
> shapiro.test(resid(life.lm))
On obtient une p-valeur de 5.25%. On ne rejette pas l’hypothèse de normalité avec un seuil
de 5%.
On teste l’hypothèse de linéarité :
> library(lmtest)
> raintest(life.lm)
> gqtest(life.lm)
On obtient une p-valeur de 76.72%. L’homogénéité de la variance des résidus n’est pas
rejetée.
On teste également l’indépendance des résidus :
> dwtest(life.lm)
On obtient une p-valeur de 38.54%. L’indépendance des résidus n’est pas rejetée. Attention,
le test de Durbin Wastson teste l’autocorrélation d’ordre 1 et d’autres tests peuvent être
plus adaptés – cf tests du porte-manteau (Box-Pierce, Ljung-Box).
Nous vérifions enfin qu’il n’y a pas de colinéarité forte dans le modèle, c’est-à-dire que les
variables explicatives ne sont pas linéairement dépendantes.
> library(car)
> vif(life.lm)
Population Murder HS.Grad Frost
1.189835 1.727844 1.356791 1.498077
Les valeurs des VIF (Variance Inflation Factors) étant inférieures à 10, les variables ne
présentent pas de forte colinéarité.
5
Bilan