1 Introduction

1.1 Notations.

  • \(X\) est la matrice des variables explicatives
  • \(\xi\) un sous-ensemble d’indices de \(\{1,\ldots,p\}\) et \(|\xi|\) son cardinal
  • \(X_\xi\) la sous-matrice extraite de \(X\) dont les colonnes correspondent aux indices de \(\xi\)
  • Dans le modèle ou on a sélectionneuse les \(\xi\) variables, on note par \(\beta_\xi\) les vecteur des coefficients.
  • La matrice de projection sur \(\mathcal{I}(X)\), \[P_X=X(X'X)^{-1}X'\] et \[P_{X^\perp }=I-P_X\]

1.2 Conséquences du choix incorecte des variables.

  • Un modèle a trois variables \(X_1\), \(X_2\) et \(X_3\) et le vrai modèle est \[Y=\beta_1 X_1+\beta_2X_2+\epsilon\].

  • On va comparer sept modèles différents, trois modèles à une variable, trois modèles à deux variables et un modèle à trois variables.

  • Si \(\xi=\{1\}\), les estimations du modèle sont \[\begin{array}{rcl} \widehat{\beta}_1 &=& (X_1'X_1)^{-1}X_1'Y\\ \widehat{Y}_1 &=& P_{X_1}Y,\\ \widehat{\sigma}_1^2 &=& \|P_{X_1^\perp}Y\|^2/(n-1)\\ \end{array} \]

1.3 Exercice

  1. Sachant que le vrai modèle est \(Y=\beta_1 X_1+\beta_2X_2+\epsilon\) calculer le biais des estimations du modèle \(\xi=\{1\}\), c.a.d Calculer

    • \(E(\widehat{\beta}_1)-\beta_1\)
    • \(E(\widehat{Y}_1)-E(Y)\)
    • \(E(\widehat{\sigma}_1^2)-\sigma^2\)

    Sachant que \(E(Y)=X_{12}\beta_{12}\)

  2. Faites la même chose avec les modèles \(\xi=\{2\}\), \(\xi=\{3\}\), \(\xi=\{1,2\}\), \(\xi=\{1,3\}\), \(\xi=\{2,3\}\) et \(\xi=\{1,2,3\}\).

  3. Conclusion?

2 Critères des choix des modèles:

2.1 Tests des modèles emboités.

  • Les modèles concurrents sont emboîtés les uns dans les autres
  • Notons le modèle \(\xi\) à \(\xi\) variables et le modèle \(\xi_{+1}\) correspondant au modèle \(\xi\) auquel on a rajouté une variable supplémentaire.
  • La statistique de Fisher \[F=\displaystyle\frac{SCR(\xi)-SCR(\xi_{+1})}{\widehat{\sigma}^2} \] ou \(SCR(\xi)\) est la somme des carrées des résidus du modèle \(\xi\).

  • L’estimation de \({\sigma}^2\) doit suivre une loi du \(\chi^2\) indépendante du numérateur.

2.1.1 Deux méthodes pour estimer \(\sigma^2\)

  1. Estimation de \({\sigma}^2\) par \[SCR(\xi_{+1})/(n − |\xi| − 1).\]

    L’estimateur utilisé de ${}^2 est celui provenant du modèle le plus « grand », soit le modèle \(\xi_{+1}\). Cette solution est en général utilisée par les logiciels de statistiques ;

  2. Estimation de \({\sigma}^2\) par \[SCR(p)/(n − p).\]

    L’estimateur utilisé provient de l’estimateur trouvé pour le modèle complet.

2.1.2 Théorème

\[\mbox{H}_0 : \mathbb{E}(Y) \in \mathcal{M}(X_{\xi}) \;\;\mbox{vs} \;\; \mbox{H}_1 : \mathbb{E}(Y) \in \mathcal{M}(X_{\xi_{+1}}),\]

  1. Si \({\sigma}^2\) est estimée par \(SCR(\xi_{+1})/(n − |\xi| − 1).\) Si \(F > f_{1,n−|\xi|−1}(1 − \alpha)\) alors le modèle \(\xi\) est repoussé, au niveau \(\alpha\) du test, au profit du modèle \(\xi_{+1}\), une variable est rajoutée au modèle.

  2. Si \({\sigma}^2\) est estimée par \(SCR(p)/(n − p).\) Si \(F > f_{1,n−p}(1 − \alpha)\) alors le modèle \(\xi\) est repoussé, au niveau \(\alpha\) du test, au profit du modèle \(\xi_{+1}\), une variable est rajoutée au modèle.

2.2 Le \(R^2\).

\[R^2=\displaystyle\frac{\| \widehat{Y(\xi)} -\overline{y}\mathbf{1} \|^2}{\|Y -\overline{y}\mathbf{1} \|^2}=1- \displaystyle\frac{SCR(\xi)}{SCT}\]

  • Le \(R^2\) augmente toujours avec le nombre de variables \(|\xi|\).

  • La différence entre les \(R^2\) s’exprime

\[\begin{array}{rcl} R^2(\xi)-R^2(\xi_{+1})&=& \displaystyle\frac{\|P_{X_\xi^\perp}Y\|^2-\|P_{X_{\xi_{+1}}^\perp}Y\|^2}{\|Y -\overline{y}\mathbf{1} \|^2}\\ &=& \displaystyle\frac{\|P_{X_\xi^\perp}(P_{X_{\xi_{+1}}}Y+P_{X_{\xi_{+1}}^\perp}Y)\|^2-\|P_{X_{\xi_{+1}}^\perp}Y\|^2}{\|Y -\overline{y}\mathbf{1} \|^2} \\ &= &\displaystyle\frac{\|P_{X_\xi^\perp}P_{X_{\xi_{+1}}Y\|^2}Y\|^2}{\|Y -\overline{y}\mathbf{1} \|^2} \geq 0 \end{array}\]

2.3 Le \(R^2\) ajusté.

\[ \begin{array}{rcl} R^2_a(\xi)&=& 1- \displaystyle\frac{n-1}{n-|\xi|} \left(1-R^2(\xi)\right) \\ &=& 1- \displaystyle\frac{n-1}{n-|\xi|} \displaystyle\frac{SCR(\xi)}{SCT} \end{array} \]

  • Le but est de maximiser le \(R^2_a\), ce qui revient à minimiser \(SCR(\xi)\) divisée par son degré de liberté.

  • La SCR et \(n-|\xi|\) diminuent lorsque \(|\xi|\) augmente.

  • Le carré moyen résiduel \(CMR(\xi)=SCR(\xi)/(n-|\xi|)\) peut augmenter lorsque la réduction de la SCR, obtenue en ajoutant une variable dans le modèle, ne suffit pas à compenser la perte d’un ddl du dénominateur.

2.4 Le \(C_p\) de Mallow.

  • Le \(C_p(\xi)\) d’un modèle à \(\xi\) variables explicatives est défini \(p\) \[C_p=\displaystyle\frac{SCR(\xi)}{\widehat{\sigma}^2}-n+2|\xi|\] \(\widehat{\sigma}^2\) est l’estimation de \({\sigma}^2\) en considérant le modèle complet.

  • Si le modèle ajuste bien les données alors, \(SCR(\xi) \approx (n-|\xi|) \sigma^2\) et donc \(C_p\approx |\xi|\)

  • Un modèle qui ajuste mal les données aurait un \(C_p\) beaucoup plus grand que \(|\xi|\)

  • il est recommandé de choisir le modèle admettant \[ C_p\leq |\xi|\]

2.5 La pénalisation de la vraisemblance

  • Sous l’hypothèse de la normalité, la vraisemblance s’écrit \[\log \mathcal{L}(Y,\beta,\sigma^2)= - \displaystyle\frac{n}{2} \log \sigma^2 - \displaystyle\frac{n}{2} \log 2\pi - \displaystyle\frac{1}{2\sigma^2} \| Y-X\beta\|^2 \]

  • Le calcul de la vraisemblance (évaluée à l’EMV) s’écrit

\[\log \mathcal{L}(\xi)= - \displaystyle\frac{n}{2} \log\displaystyle\frac{SCR(\xi)}{n}- \displaystyle\frac{n}{2}(1+\log 2\pi)\]

  • Choisir un modèle en maximisant la vraisemblance revient à choisir le modèle ayant la plus petite SCR.

  • Mais comme le SCR diminue systématiquement en augmentant le nombre de variables et/ou le nombre d’observations, il faut alors ajouter un terme de pénalisation en fonction de la taille du modèle et la taille de l’échantillon.

  • Tous les critères de pénalisation sont de la forme \[-2\log(\xi)+2|\xi|f(n)\] ou \(f(n)\) est la fonction de pénalisation.

  • PLus le critère est faible, plus le modèle ajuste mieux les données

  • L’Akaike Information Criterion (AIC), Akaike(1973), \(f(n)=1\),

\[\mbox{AIC}(\xi)=-2\log(\xi)+2|\xi|\]

  • Donc

\[\mbox{AIC}(\xi)=cte+ n\log \displaystyle\frac{SCR(\xi)}{n} +2|\xi|\]

  • Le critère Bayesian Information Criterion (BIC), Schwarz, 1978, \(f(n)=(1/2)\log n\),

\[\mbox{BIC}(\xi)=-2\log(\xi)+|\xi|\log n=cte+ n\log \displaystyle\frac{SCR(\xi)}{n} +|\xi|\log n\]

  • Plus le nombre d’observations n augmente, plus la pénalisation est faible.

  • Cette pénalisation est en général plus grande que 2 (dès que \(n > 7\)) et donc le BIC a tendance à sélectionner des modèles plus petits que l’AIC.

3 Procédure de sélection

3.1 Recherche exhaustive

  • Pour \(|\xi|\) variables (y compris la variable constante), il y a \(2^{|\xi|-1}\) modèles possibles.

  • Cette méthode ne peut pas être utilisée si \(|\xi|\) est grand.

  • Deux packages possibles

3.2 Le package leaps

  • La principale fonction pour faire de la sélection de variables est regsubsets
> subsets<- regsubsets(y~ x1 + x2 + ... + xk,  dataframe)
  • subsets dont lequel on met les résultats de la sélection.

  • Les options les plus utilisées dans regsubsets

    • nbest = n le nombre de modèles sélectionnés qui doivent stockés dans l’objet contenant les résultats.
    • nvmax = n spécifie la taille maximale des modèles.
    • force.in = n spécifie le ou les variables qui doivent incluses de force dans le modèle, n est le rang des variables dans la formule ou dans la matrice design.
  • Il est possible d’introduire le modèle de la façon suivante

> regsubsets<- regsubsets(x=Xmat,y=Yvec)

ou Xmat est la matrice des données explicatives, Yvec est le vecteur de la variable réponse.

  • On peut spécifier avec force.out = n les colonnes a exclure de la procédure de sélectionné.

3.2.1 Les données

> library(leaps)
> library(datasets)
> data(state)
> statedata <-data.frame (state.x77, row.names=state.abb)
> head(statedata,n = 3)
   Population Income Illiteracy Life.Exp Murder HS.Grad Frost   Area
AL       3615   3624        2.1    69.05   15.1    41.3    20  50708
AK        365   6315        1.5    69.31   11.3    66.7   152 566432
AZ       2212   4530        1.8    70.55    7.8    58.1    15 113417
  • Population taille de la population estimée en 1/7/75
  • Income Revenu par habitant
  • Illitracy taux alphabétisation
  • Life.Exp Espérance de vie
  • Murder taux d’homicide pour 100,000 habitants (1976)
  • HS Grad pourcentage de diplômes du secondaire.
  • Frost nombre moyen des jours de froid (1931-1960)
  • Area superficie.

On voudrait chercher le modèle de régression qui explique le mieux l’espérance de vie.

3.2.2 Utilisation de regsubsets

> res1 <- regsubsets(Life.Exp~.,data=statedata,
+                       nbest = 1,       # 1 seul meilleur pour chaque nombre de variables
+                       nvmax = NULL,    # NULL pas de limites pour le 
+                       force.in = NULL,  # pas de variables à inclure de force
+                       force.out = NULL,  # pas de variables à exclure de force.
+                method = "exhaustive")  # choix de la méthode exhaustive

3.2.3 Les plot

3.2.3.1 Selon \(R^2\) ajusté

> plot(res1,scale="adjr2")

3.2.3.2 Selon \(R^2\)

> plot(res1,scale="r2")

3.2.3.3 Selon BIC

> plot(res1,scale="bic")

3.2.4 Les plots taille du modèle x le critère

3.2.4.1 Selon le \(R^2\) ajusté.

> library(car)
> res.legend <-
+     subsets(res1, statistic="adjr2", legend = FALSE, min.size = 5, 
+             main = "Adjusted R^2")

>    res.legend
           Abbreviation
Population            P
Income               In
Illiteracy           Il
Murder                M
HS.Grad               H
Frost                 F
Area                  A

3.2.4.2 Selon le \(Cp\) Mallow.

> res.legend <-
+     subsets(res1, statistic="cp", legend = FALSE, min.size = 5, 
+             main = "Cp Mallow")
>    res.legend
           Abbreviation
Population            P
Income               In
Illiteracy           Il
Murder                M
HS.Grad               H
Frost                 F
Area                  A
>    abline(a = 1, b = 1, lty = 2) ## On ajoute la bisserctrice y=x pour comparer le Cp avec le nombre de variables

3.2.5 Les autres sorties

> summary(res1)
Subset selection object
Call: regsubsets.formula(Life.Exp ~ ., data = statedata, nbest = 1, 
    nvmax = NULL, force.in = NULL, force.out = NULL, method = "exhaustive")
7 Variables  (and intercept)
           Forced in Forced out
Population     FALSE      FALSE
Income         FALSE      FALSE
Illiteracy     FALSE      FALSE
Murder         FALSE      FALSE
HS.Grad        FALSE      FALSE
Frost          FALSE      FALSE
Area           FALSE      FALSE
1 subsets of each size up to 7
Selection Algorithm: exhaustive
         Population Income Illiteracy Murder HS.Grad Frost Area
1  ( 1 ) " "        " "    " "        "*"    " "     " "   " " 
2  ( 1 ) " "        " "    " "        "*"    "*"     " "   " " 
3  ( 1 ) " "        " "    " "        "*"    "*"     "*"   " " 
4  ( 1 ) "*"        " "    " "        "*"    "*"     "*"   " " 
5  ( 1 ) "*"        "*"    " "        "*"    "*"     "*"   " " 
6  ( 1 ) "*"        "*"    "*"        "*"    "*"     "*"   " " 
7  ( 1 ) "*"        "*"    "*"        "*"    "*"     "*"   "*" 
> res1.s=summary(res1)
> names(res1.s)
[1] "which"  "rsq"    "rss"    "adjr2"  "cp"     "bic"    "outmat" "obj"   
> res1.s$which
  (Intercept) Population Income Illiteracy Murder HS.Grad Frost  Area
1        TRUE      FALSE  FALSE      FALSE   TRUE   FALSE FALSE FALSE
2        TRUE      FALSE  FALSE      FALSE   TRUE    TRUE FALSE FALSE
3        TRUE      FALSE  FALSE      FALSE   TRUE    TRUE  TRUE FALSE
4        TRUE       TRUE  FALSE      FALSE   TRUE    TRUE  TRUE FALSE
5        TRUE       TRUE   TRUE      FALSE   TRUE    TRUE  TRUE FALSE
6        TRUE       TRUE   TRUE       TRUE   TRUE    TRUE  TRUE FALSE
7        TRUE       TRUE   TRUE       TRUE   TRUE    TRUE  TRUE  TRUE
  • Tous les \(R^2\)
> res1.s$rsq
[1] 0.6097201 0.6628461 0.7126624 0.7360328 0.7361014 0.7361440 0.7361563
  • Tous les SCR
> res1.s$rss
[1] 34.46133 29.77036 25.37162 23.30804 23.30198 23.29822 23.29714
  • Ces SCR peuvent être retrouvés de la façon suivante
> SCT=sum((statedata$Life.Exp-mean(statedata$Life.Exp))^2)
> SCT
[1] 88.299
> (1-res1.s$rsq)*SCT
[1] 34.46133 29.77036 25.37162 23.30804 23.30198 23.29822 23.29714
  • Les Cp Mallow
> res1.s$cp
[1] 16.126760  9.669894  3.739878  2.019659  4.008737  6.001959  8.000000

3.2.6 Exercice

On considère le code R suivant

> b <- regsubsets(Life.Exp~.,data=statedata,nbest = 2,nvmax = 1,method = "exhaustive") 
> xs=lms=vector("list",7)
> X=statedata[,c(1,2,3,5,6,7,8,4)]
> for(j in 1:7){
+   lms[[j]]=lm(X[,8]~X[,j])
+   xs[[j]]=summary(lms[[j]])
+ }
> sapply(1:7,function(j)print(xs[[j]]$r.squared))
[1] 0.004631068
[1] 0.1157737
[1] 0.3463063
[1] 0.6097201
[1] 0.3389757
[1] 0.06867964
[1] 0.01152014
[1] 0.004631068 0.115773696 0.346306269 0.609720089 0.338975708 0.068679642
[7] 0.011520144

3.3 Le package glmulti

3.3.1 glmulti

  • La principale fonction pour faire de la sélection de variable est la commande glmulti
> select.res<- glmulti(y~ x1 + x2 + ... + xk, fitfunc=lm,  dataframe)
  • Les options les plus utilisées sont

    • fitfunc spécifie la fonction qui doit eêtre utilisée pour l’ajustement,
    • exclude spécifie les variables et/ou les interactions à exclure de la sélection
    • crit spécifie le critère qui va eêtre utilisé pour la sélection du meilleur modèle
    • method spéficie la méthode de sélection.
    • level spécifie si on veut inclure les interactions entre les variables ou non, 1 pas d’inetractions, 2 avec des interactions

3.3.2 Exemple glmulti

  • Exécution de glmulti
> library(glmulti)
Loading required package: rJava
> res2<-glmulti(Life.Exp~.,data = statedata,level = 1,method = "h",fitfunction = lm,crit = 'aic',plotty = F)
Initialization...
TASK: Exhaustive screening of candidate set.
Fitting...

After 50 models:
Best model: Life.Exp~1+Population+Murder+HS.Grad
Crit= 120.017356364253
Mean crit= 143.538682816388

After 100 models:
Best model: Life.Exp~1+Population+Murder+HS.Grad+Frost
Crit= 115.732627320303
Mean crit= 142.427295269526

After 150 models:
Best model: Life.Exp~1+Population+Murder+HS.Grad+Frost
Crit= 115.732627320303
Mean crit= 134.768453125726
Completed.
  • Le meilleur modèle sélectionné
> res2.s=summary(res2)
> res2.s$bestmodel
[1] "Life.Exp ~ 1 + Population + Murder + HS.Grad + Frost"
  • Estimation des coefficients du meilleur modèle
> f1=res2.s$bestmodel
> m1=lm(f1,data=statedata)
> summary(m1)

Call:
lm(formula = f1, data = statedata)

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

Residual standard error: 0.7197 on 45 degrees of freedom
Multiple R-squared:  0.736, Adjusted R-squared:  0.7126 
F-statistic: 31.37 on 4 and 45 DF,  p-value: 1.696e-12
  • Pour connaître les paramètres de l’utilisation de la fonction glmulti
> res2@params
$name
[1] "glmulti.analysis"

$intercept
[1] TRUE

$marginality
[1] FALSE

$bunch
[1] 30

$chunk
[1] 1

$chunks
[1] 1

$level
[1] 1

$minsize
[1] 0

$maxsize
[1] -1

$minK
[1] 0

$maxK
[1] -1

$method
[1] "h"

$crit
[1] "aic"

$confsetsize
[1] 100

$fitfunction
[1] "lm"
  • les valeurs du critère (AIC dans cet exemple) des meilleurs modèles retenus.
> res2@crits[1:5] ## On retient les 5 meilleures valeurs.
[1] 115.7326 117.7196 117.7242 117.7309 117.9743
  • Les formules des meilleurs modèles
> ## Les formules des 5 meilleurs modèles
> for(j in 1:5){
+   res2@formulas[[j]]
+ }
  • Le meilleur modèle estimé.
> res2@objects[[1]]

Call:
fitfunc(formula = as.formula(x), data = data)

Coefficients:
(Intercept)   Population       Murder      HS.Grad        Frost  
  7.103e+01    5.014e-05   -3.001e-01    4.658e-02   -5.943e-03  
  • Graphique de la procédure de sélection
> plot(res2)

La ligne rouge horizontale différencie les modèles dont AICc est inférieure par rapport à plus de 2 unités de distance de celle du «meilleur» modèle (à savoir, le modèle avec le AICc le plus bas).

  • Les modèles en dessous de la ligne rouge horizontale
> tmp <- weightable(res2)
> tmp <- tmp[tmp$aic <= min(tmp$aic) + 2,]
> tmp
                                                              model
1              Life.Exp ~ 1 + Population + Murder + HS.Grad + Frost
2     Life.Exp ~ 1 + Population + Income + Murder + HS.Grad + Frost
3 Life.Exp ~ 1 + Population + Illiteracy + Murder + HS.Grad + Frost
4       Life.Exp ~ 1 + Population + Murder + HS.Grad + Frost + Area
       aic    weights
1 115.7326 0.23133597
2 117.7196 0.08565862
3 117.7242 0.08546254
4 117.7309 0.08517589

On fournit dans ce tableau la formule de ces modèles, la valeur des AIC et le poids de chaque modèle dans la procédure de sélection. A partir d’un point de vu de la théorie de l’information, ce poids peut être considérée comme la probabilité que ce modèle soit considérée comme le meilleur modèle

  • On peut dévaluer l’importance de chaque variable dans la procédure de sélection
> plot(res2,type = "s")

La valeur de l’importance d’une variable est égale à la somme des poids divisées par les probabilités des modèles dans lesquels la variable apparaît. Ainsi, une variable qui apparaît dans beaucoup de modèles avec de grands poids aura une grande valeur d’importance. La ligne rouge verticale est tracée à .80 (80%), qui est parfois utilisé comme une limite pour différencier les variables importantes et celles qui ne sont pas si importantes.

  • Tableau des estimations des coefficients des variables au cours de la procédure de sélection
> coef(res2)
                 Estimate Uncond. variance Nb models Importance
Area        -1.267477e-08     2.321292e-13        51  0.2849247
Income       1.418719e-05     7.609438e-09        48  0.2973277
Illiteracy   3.925036e-03     1.674258e-02        58  0.3174764
Population   3.952485e-05     1.051398e-09        47  0.7478113
Frost       -5.450343e-03     9.885664e-06        50  0.8696771
HS.Grad      4.406606e-02     3.974024e-04        58  0.9285377
Murder      -2.945285e-01     1.814787e-03        64  0.9999999
(Intercept)  7.104625e+01     1.667722e+00       100  1.0000000
            +/- (alpha=0.05)
Area            9.706589e-07
Income          1.757430e-04
Illiteracy      2.606831e-01
Population      6.532588e-05
Frost           6.334388e-03
HS.Grad         4.016215e-02
Murder          8.582513e-02
(Intercept)     2.601738e+00

Ce tableau comprend

  • les valeurs d’importance de chaque variable
  • les estimations des coefficients qui des estimations des paramètres modèles moyennée en utilisant une pondération égale aux poids aux probabilités d’appartenance dans le modèle
  • les variances des estimations des coefficients des modèles
  • dans la dernière colonne la largeur d’un IC de confiance de niveau 95% de l’estimation des coefficients des paramètres. Cet IC peut être obtenu en ajoutant et en soustrayant la valeur de la dernière colonne à la colonne Estimate.

3.4 La Recherche pas à pas

  • Ce type de recherche est obligatoire pour les tests puisque l’on ne peut tester que des modèles emboîtés.

  • Elle ne permet de trouver un optimum local. Il est bon de répéter cette procédure à partir de différents points de départ.

  • Pour les autres critères, ce type de recherche n’est à conseiller que lorsque la recherche exhaustive n’est pas possible (n grand, p grand, etc.).

3.4.1 Méthode ascendante (forward stepwise selection)

  • Description de l’algorithme:

    1. Au départ on commence par un modeèle \(\mathcal{M}_0\). Généralement c’est le modeèle avec constante seulement.
    2. On ajoute une à une les variables \(X_i\) à considérer dans le modéle et on effectur le \(F-\)test des modeèles emboiîtés.
    3. On retient la variable qui correspond à la \(p-\)valeur la plus faible. Un nouveau modeèle est considéré et on revient à l’étape 1.
    4. La procédure est arreêtée deès que toutes les \(p-\)valeurs sont plus petites qu’un seuil fixéé à l’avance. Généralement, ce seuil est égal à 5%.
  • Si la méthode ascendante utilise un critère de choix, nous ajoutons la variable \(X_i\) dont l’ajout au modèle conduit à l’optimisation du critère de choix. Nous nous arrêtons lorsque toutes les variables sont intégrées ou lorsqu’aucune variable ne permet l’optimisation du critère de choix

3.4.2 Méthode descendante (backward stepwise selection)

  • Description de l’algorithme:

    1. Au départ on commence par un modeèle \(\mathcal{M}_f\). Généralement c’est le modeèle complet.
    2. On supprime une à une les variables \(X_i\) dans le modéle et on effectue le \(F-\)test des modeèles emboiîtés.
    3. On supprime la variable qui correspond à la \(p-\)valeur la plus élévée. Un nouveau modeèle est considéré et on revient à l’étape 1.
    4. La procédure est arreêtée deès que toutes les \(p-\)valeurs sont plus petites qu’un seuil fixéé à l’avance. Généralement, ce seuil est égal à 5%.
  • Si la méthode descendante utilise un critère de choix, nous retirons la variable \(X_i\) qui conduit à l’amélioration la plus grande du critère de choix. Nous nous arrêtons lorsque toutes les variables sont retirées ou lorsqu’aucune variable ne permet l’augmentation du critère de choix.

3.4.3 Exemple :

3.4.3.1 Utilisant le package leaps

  • Pour procéder avec la sélection ascendante (Forward selection) on doit d’abord spécifier le modèle de départ
> m0 <- lm(Life.Exp~1,data=statedata)  # choix du modèle avec constante seulement
> m0

Call:
lm(formula = Life.Exp ~ 1, data = statedata)

Coefficients:
(Intercept)  
      70.88  
  • Pour utiliser la commande step on doit spécifier le modèle de départ m0 et le modèle maximal mf qui peut être le modèle complet.
> mf <- lm(Life.Exp~.,data=statedata)  # choix du modèle avec constante seulement
> mf

Call:
lm(formula = Life.Exp ~ ., data = statedata)

Coefficients:
(Intercept)   Population       Income   Illiteracy       Murder  
  7.094e+01    5.180e-05   -2.180e-05    3.382e-02   -3.011e-01  
    HS.Grad        Frost         Area  
  4.893e-02   -5.735e-03   -7.383e-08  
  • La sélection ascendante utilisant le critère AIC
> step(m0, scope=list(lower=m0, upper=mf),data=statedata, direction="forward")
Start:  AIC=30.44
Life.Exp ~ 1

             Df Sum of Sq    RSS     AIC
+ Murder      1    53.838 34.461 -14.609
+ Illiteracy  1    30.578 57.721  11.179
+ HS.Grad     1    29.931 58.368  11.737
+ Income      1    10.223 78.076  26.283
+ Frost       1     6.064 82.235  28.878
<none>                    88.299  30.435
+ Area        1     1.017 87.282  31.856
+ Population  1     0.409 87.890  32.203

Step:  AIC=-14.61
Life.Exp ~ Murder

             Df Sum of Sq    RSS     AIC
+ HS.Grad     1    4.6910 29.770 -19.925
+ Population  1    4.0161 30.445 -18.805
+ Frost       1    3.1346 31.327 -17.378
+ Income      1    2.4047 32.057 -16.226
<none>                    34.461 -14.609
+ Area        1    0.4697 33.992 -13.295
+ Illiteracy  1    0.2732 34.188 -13.007

Step:  AIC=-19.93
Life.Exp ~ Murder + HS.Grad

             Df Sum of Sq    RSS     AIC
+ Frost       1    4.3987 25.372 -25.920
+ Population  1    3.3405 26.430 -23.877
<none>                    29.770 -19.925
+ Illiteracy  1    0.4419 29.328 -18.673
+ Area        1    0.2775 29.493 -18.394
+ Income      1    0.1022 29.668 -18.097

Step:  AIC=-25.92
Life.Exp ~ Murder + HS.Grad + Frost

             Df Sum of Sq    RSS     AIC
+ Population  1   2.06358 23.308 -28.161
<none>                    25.372 -25.920
+ Income      1   0.18232 25.189 -24.280
+ Illiteracy  1   0.17184 25.200 -24.259
+ Area        1   0.02573 25.346 -23.970

Step:  AIC=-28.16
Life.Exp ~ Murder + HS.Grad + Frost + Population

             Df Sum of Sq    RSS     AIC
<none>                    23.308 -28.161
+ Income      1 0.0060582 23.302 -26.174
+ Illiteracy  1 0.0039221 23.304 -26.170
+ Area        1 0.0007900 23.307 -26.163

Call:
lm(formula = Life.Exp ~ Murder + HS.Grad + Frost + Population, 
    data = statedata)

Coefficients:
(Intercept)       Murder      HS.Grad        Frost   Population  
  7.103e+01   -3.001e-01    4.658e-02   -5.943e-03    5.014e-05  
  • La sélection descendante
> step(mf, data=statedata,direction="backward")
Start:  AIC=-22.18
Life.Exp ~ Population + Income + Illiteracy + Murder + HS.Grad + 
    Frost + Area

             Df Sum of Sq    RSS     AIC
- Area        1    0.0011 23.298 -24.182
- Income      1    0.0044 23.302 -24.175
- Illiteracy  1    0.0047 23.302 -24.174
<none>                    23.297 -22.185
- Population  1    1.7472 25.044 -20.569
- Frost       1    1.8466 25.144 -20.371
- HS.Grad     1    2.4413 25.738 -19.202
- Murder      1   23.1411 46.438  10.305

Step:  AIC=-24.18
Life.Exp ~ Population + Income + Illiteracy + Murder + HS.Grad + 
    Frost

             Df Sum of Sq    RSS     AIC
- Illiteracy  1    0.0038 23.302 -26.174
- Income      1    0.0059 23.304 -26.170
<none>                    23.298 -24.182
- Population  1    1.7599 25.058 -22.541
- Frost       1    2.0488 25.347 -21.968
- HS.Grad     1    2.9804 26.279 -20.163
- Murder      1   26.2721 49.570  11.569

Step:  AIC=-26.17
Life.Exp ~ Population + Income + Murder + HS.Grad + Frost

             Df Sum of Sq    RSS     AIC
- Income      1     0.006 23.308 -28.161
<none>                    23.302 -26.174
- Population  1     1.887 25.189 -24.280
- Frost       1     3.037 26.339 -22.048
- HS.Grad     1     3.495 26.797 -21.187
- Murder      1    34.739 58.041  17.456

Step:  AIC=-28.16
Life.Exp ~ Population + Murder + HS.Grad + Frost

             Df Sum of Sq    RSS     AIC
<none>                    23.308 -28.161
- Population  1     2.064 25.372 -25.920
- Frost       1     3.122 26.430 -23.877
- HS.Grad     1     5.112 28.420 -20.246
- Murder      1    34.816 58.124  15.528

Call:
lm(formula = Life.Exp ~ Population + Murder + HS.Grad + Frost, 
    data = statedata)

Coefficients:
(Intercept)   Population       Murder      HS.Grad        Frost  
  7.103e+01    5.014e-05   -3.001e-01    4.658e-02   -5.943e-03  
  • La sélection pas a pas dans les deux sens
> step(m0, scope = list(upper=mf),data=statedata,direction="both")
Start:  AIC=30.44
Life.Exp ~ 1

             Df Sum of Sq    RSS     AIC
+ Murder      1    53.838 34.461 -14.609
+ Illiteracy  1    30.578 57.721  11.179
+ HS.Grad     1    29.931 58.368  11.737
+ Income      1    10.223 78.076  26.283
+ Frost       1     6.064 82.235  28.878
<none>                    88.299  30.435
+ Area        1     1.017 87.282  31.856
+ Population  1     0.409 87.890  32.203

Step:  AIC=-14.61
Life.Exp ~ Murder

             Df Sum of Sq    RSS     AIC
+ HS.Grad     1     4.691 29.770 -19.925
+ Population  1     4.016 30.445 -18.805
+ Frost       1     3.135 31.327 -17.378
+ Income      1     2.405 32.057 -16.226
<none>                    34.461 -14.609
+ Area        1     0.470 33.992 -13.295
+ Illiteracy  1     0.273 34.188 -13.007
- Murder      1    53.838 88.299  30.435

Step:  AIC=-19.93
Life.Exp ~ Murder + HS.Grad

             Df Sum of Sq    RSS     AIC
+ Frost       1    4.3987 25.372 -25.920
+ Population  1    3.3405 26.430 -23.877
<none>                    29.770 -19.925
+ Illiteracy  1    0.4419 29.328 -18.673
+ Area        1    0.2775 29.493 -18.394
+ Income      1    0.1022 29.668 -18.097
- HS.Grad     1    4.6910 34.461 -14.609
- Murder      1   28.5974 58.368  11.737

Step:  AIC=-25.92
Life.Exp ~ Murder + HS.Grad + Frost

             Df Sum of Sq    RSS     AIC
+ Population  1     2.064 23.308 -28.161
<none>                    25.372 -25.920
+ Income      1     0.182 25.189 -24.280
+ Illiteracy  1     0.172 25.200 -24.259
+ Area        1     0.026 25.346 -23.970
- Frost       1     4.399 29.770 -19.925
- HS.Grad     1     5.955 31.327 -17.378
- Murder      1    32.756 58.128  13.531

Step:  AIC=-28.16
Life.Exp ~ Murder + HS.Grad + Frost + Population

             Df Sum of Sq    RSS     AIC
<none>                    23.308 -28.161
+ Income      1     0.006 23.302 -26.174
+ Illiteracy  1     0.004 23.304 -26.170
+ Area        1     0.001 23.307 -26.163
- Population  1     2.064 25.372 -25.920
- Frost       1     3.122 26.430 -23.877
- HS.Grad     1     5.112 28.420 -20.246
- Murder      1    34.816 58.124  15.528

Call:
lm(formula = Life.Exp ~ Murder + HS.Grad + Frost + Population, 
    data = statedata)

Coefficients:
(Intercept)       Murder      HS.Grad        Frost   Population  
  7.103e+01   -3.001e-01    4.658e-02   -5.943e-03    5.014e-05  
  • La sélection ascendante utilisant le \(F-\)test des modèles emboîtés.
> step(m0, scope=list(lower=m0, upper=mf),data=statedata, direction="forward",test="F")
Start:  AIC=30.44
Life.Exp ~ 1

             Df Sum of Sq    RSS     AIC F value    Pr(>F)    
+ Murder      1    53.838 34.461 -14.609 74.9887 2.260e-11 ***
+ Illiteracy  1    30.578 57.721  11.179 25.4289 6.969e-06 ***
+ HS.Grad     1    29.931 58.368  11.737 24.6146 9.196e-06 ***
+ Income      1    10.223 78.076  26.283  6.2847   0.01562 *  
+ Frost       1     6.064 82.235  28.878  3.5397   0.06599 .  
<none>                    88.299  30.435                      
+ Area        1     1.017 87.282  31.856  0.5594   0.45815    
+ Population  1     0.409 87.890  32.203  0.2233   0.63866    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Step:  AIC=-14.61
Life.Exp ~ Murder

             Df Sum of Sq    RSS     AIC F value   Pr(>F)   
+ HS.Grad     1    4.6910 29.770 -19.925  7.4059 0.009088 **
+ Population  1    4.0161 30.445 -18.805  6.1999 0.016369 * 
+ Frost       1    3.1346 31.327 -17.378  4.7029 0.035205 * 
+ Income      1    2.4047 32.057 -16.226  3.5257 0.066636 . 
<none>                    34.461 -14.609                    
+ Area        1    0.4697 33.992 -13.295  0.6494 0.424375   
+ Illiteracy  1    0.2732 34.188 -13.007  0.3756 0.542910   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Step:  AIC=-19.93
Life.Exp ~ Murder + HS.Grad

             Df Sum of Sq    RSS     AIC F value   Pr(>F)   
+ Frost       1    4.3987 25.372 -25.920  7.9751 0.006988 **
+ Population  1    3.3405 26.430 -23.877  5.8141 0.019949 * 
<none>                    29.770 -19.925                    
+ Illiteracy  1    0.4419 29.328 -18.673  0.6931 0.409421   
+ Area        1    0.2775 29.493 -18.394  0.4329 0.513863   
+ Income      1    0.1022 29.668 -18.097  0.1585 0.692418   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Step:  AIC=-25.92
Life.Exp ~ Murder + HS.Grad + Frost

             Df Sum of Sq    RSS     AIC F value  Pr(>F)  
+ Population  1   2.06358 23.308 -28.161  3.9841 0.05201 .
<none>                    25.372 -25.920                  
+ Income      1   0.18232 25.189 -24.280  0.3257 0.57103  
+ Illiteracy  1   0.17184 25.200 -24.259  0.3069 0.58236  
+ Area        1   0.02573 25.346 -23.970  0.0457 0.83173  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Step:  AIC=-28.16
Life.Exp ~ Murder + HS.Grad + Frost + Population

             Df Sum of Sq    RSS     AIC F value Pr(>F)
<none>                    23.308 -28.161               
+ Income      1 0.0060582 23.302 -26.174  0.0114 0.9153
+ Illiteracy  1 0.0039221 23.304 -26.170  0.0074 0.9318
+ Area        1 0.0007900 23.307 -26.163  0.0015 0.9694

Call:
lm(formula = Life.Exp ~ Murder + HS.Grad + Frost + Population, 
    data = statedata)

Coefficients:
(Intercept)       Murder      HS.Grad        Frost   Population  
  7.103e+01   -3.001e-01    4.658e-02   -5.943e-03    5.014e-05  
  • La sélection descendante avec le \(F-\)test
> step(mf, data=statedata,direction="backward")
Start:  AIC=-22.18
Life.Exp ~ Population + Income + Illiteracy + Murder + HS.Grad + 
    Frost + Area

             Df Sum of Sq    RSS     AIC
- Area        1    0.0011 23.298 -24.182
- Income      1    0.0044 23.302 -24.175
- Illiteracy  1    0.0047 23.302 -24.174
<none>                    23.297 -22.185
- Population  1    1.7472 25.044 -20.569
- Frost       1    1.8466 25.144 -20.371
- HS.Grad     1    2.4413 25.738 -19.202
- Murder      1   23.1411 46.438  10.305

Step:  AIC=-24.18
Life.Exp ~ Population + Income + Illiteracy + Murder + HS.Grad + 
    Frost

             Df Sum of Sq    RSS     AIC
- Illiteracy  1    0.0038 23.302 -26.174
- Income      1    0.0059 23.304 -26.170
<none>                    23.298 -24.182
- Population  1    1.7599 25.058 -22.541
- Frost       1    2.0488 25.347 -21.968
- HS.Grad     1    2.9804 26.279 -20.163
- Murder      1   26.2721 49.570  11.569

Step:  AIC=-26.17
Life.Exp ~ Population + Income + Murder + HS.Grad + Frost

             Df Sum of Sq    RSS     AIC
- Income      1     0.006 23.308 -28.161
<none>                    23.302 -26.174
- Population  1     1.887 25.189 -24.280
- Frost       1     3.037 26.339 -22.048
- HS.Grad     1     3.495 26.797 -21.187
- Murder      1    34.739 58.041  17.456

Step:  AIC=-28.16
Life.Exp ~ Population + Murder + HS.Grad + Frost

             Df Sum of Sq    RSS     AIC
<none>                    23.308 -28.161
- Population  1     2.064 25.372 -25.920
- Frost       1     3.122 26.430 -23.877
- HS.Grad     1     5.112 28.420 -20.246
- Murder      1    34.816 58.124  15.528

Call:
lm(formula = Life.Exp ~ Population + Murder + HS.Grad + Frost, 
    data = statedata)

Coefficients:
(Intercept)   Population       Murder      HS.Grad        Frost  
  7.103e+01    5.014e-05   -3.001e-01    4.658e-02   -5.943e-03  
  • La sélection pas à pas dans les deux sens avec le \(F-\)test
> step(m0, scope = list(upper=mf),data=statedata,direction="both")
Start:  AIC=30.44
Life.Exp ~ 1

             Df Sum of Sq    RSS     AIC
+ Murder      1    53.838 34.461 -14.609
+ Illiteracy  1    30.578 57.721  11.179
+ HS.Grad     1    29.931 58.368  11.737
+ Income      1    10.223 78.076  26.283
+ Frost       1     6.064 82.235  28.878
<none>                    88.299  30.435
+ Area        1     1.017 87.282  31.856
+ Population  1     0.409 87.890  32.203

Step:  AIC=-14.61
Life.Exp ~ Murder

             Df Sum of Sq    RSS     AIC
+ HS.Grad     1     4.691 29.770 -19.925
+ Population  1     4.016 30.445 -18.805
+ Frost       1     3.135 31.327 -17.378
+ Income      1     2.405 32.057 -16.226
<none>                    34.461 -14.609
+ Area        1     0.470 33.992 -13.295
+ Illiteracy  1     0.273 34.188 -13.007
- Murder      1    53.838 88.299  30.435

Step:  AIC=-19.93
Life.Exp ~ Murder + HS.Grad

             Df Sum of Sq    RSS     AIC
+ Frost       1    4.3987 25.372 -25.920
+ Population  1    3.3405 26.430 -23.877
<none>                    29.770 -19.925
+ Illiteracy  1    0.4419 29.328 -18.673
+ Area        1    0.2775 29.493 -18.394
+ Income      1    0.1022 29.668 -18.097
- HS.Grad     1    4.6910 34.461 -14.609
- Murder      1   28.5974 58.368  11.737

Step:  AIC=-25.92
Life.Exp ~ Murder + HS.Grad + Frost

             Df Sum of Sq    RSS     AIC
+ Population  1     2.064 23.308 -28.161
<none>                    25.372 -25.920
+ Income      1     0.182 25.189 -24.280
+ Illiteracy  1     0.172 25.200 -24.259
+ Area        1     0.026 25.346 -23.970
- Frost       1     4.399 29.770 -19.925
- HS.Grad     1     5.955 31.327 -17.378
- Murder      1    32.756 58.128  13.531

Step:  AIC=-28.16
Life.Exp ~ Murder + HS.Grad + Frost + Population

             Df Sum of Sq    RSS     AIC
<none>                    23.308 -28.161
+ Income      1     0.006 23.302 -26.174
+ Illiteracy  1     0.004 23.304 -26.170
+ Area        1     0.001 23.307 -26.163
- Population  1     2.064 25.372 -25.920
- Frost       1     3.122 26.430 -23.877
- HS.Grad     1     5.112 28.420 -20.246
- Murder      1    34.816 58.124  15.528

Call:
lm(formula = Life.Exp ~ Murder + HS.Grad + Frost + Population, 
    data = statedata)

Coefficients:
(Intercept)       Murder      HS.Grad        Frost   Population  
  7.103e+01   -3.001e-01    4.658e-02   -5.943e-03    5.014e-05  

3.5 L’algorithme génétique

  • On l’utilise quand le nombre de variables devient de plus en plus important et qu’une recherche exhaustive est impossible et une recherche pas à pas peut mener à une solution qui n’est pas tout à fait optimale.

  • Cet algorithme est implémenté dans la commande glmulti du package glmulti en spécifiant method="g".

  • Cet méthode est donc supposée trouver le meilleur modèle sans avoir besoin de calculer le critère à considérer sur tous les modèles possibles.

  • Exemple en considérant le modèle avec interactions

> library(glmulti)
> res3<-glmulti(Life.Exp~.,data = statedata,level = 2,method = "g",fitfunction = lm,crit = 'aic',plotty = F)
Initialization...
TASK: Genetic algorithm in the candidate set.
Initialization...
Algorithm started...

After 10 generations:
Best model: Life.Exp~1+Illiteracy+Murder+Frost+Income:Population+Illiteracy:Income+Murder:Population+Murder:Income+Murder:Illiteracy+HS.Grad:Income+Frost:Population+Frost:Income+Frost:Illiteracy+Frost:Murder+Frost:HS.Grad+Area:Population
Crit= 113.887403845344
Mean crit= 125.461428091456
Change in best IC: -9886.11259615465 / Change in mean IC: -9874.53857190854

After 20 generations:
Best model: Life.Exp~1+Illiteracy+Murder+Frost+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+Murder:Illiteracy+HS.Grad:Income+Frost:Illiteracy+Area:Illiteracy+Area:HS.Grad+Area:Frost
Crit= 108.249866131869
Mean crit= 122.111299704415
Change in best IC: -5.63753771347503 / Change in mean IC: -3.350128387041

After 30 generations:
Best model: Life.Exp~1+Illiteracy+Murder+Frost+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+Murder:Illiteracy+HS.Grad:Income+Frost:Illiteracy+Area:Illiteracy+Area:HS.Grad+Area:Frost
Crit= 108.249866131869
Mean crit= 120.75233603448
Change in best IC: 0 / Change in mean IC: -1.35896366993519

After 40 generations:
Best model: Life.Exp~1+Illiteracy+Murder+Frost+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+Murder:Illiteracy+HS.Grad:Income+Frost:Illiteracy+Area:Population+Area:Illiteracy+Area:HS.Grad+Area:Frost
Crit= 107.767079003906
Mean crit= 119.734510059634
Change in best IC: -0.482787127962979 / Change in mean IC: -1.01782597484616

After 50 generations:
Best model: Life.Exp~1+Illiteracy+Murder+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+Murder:Illiteracy+HS.Grad:Income+Frost:Illiteracy+Area:Illiteracy+Area:HS.Grad+Area:Frost
Crit= 106.484825428316
Mean crit= 118.837850251197
Change in best IC: -1.28225357559016 / Change in mean IC: -0.896659808437008

After 60 generations:
Best model: Life.Exp~1+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+Murder:Illiteracy+HS.Grad:Income+Frost:Illiteracy+Area:Illiteracy+Area:HS.Grad+Area:Frost
Crit= 106.157802181297
Mean crit= 117.937930951454
Change in best IC: -0.32702324701873 / Change in mean IC: -0.899919299743019

After 70 generations:
Best model: Life.Exp~1+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+Murder:Illiteracy+HS.Grad:Income+Frost:Illiteracy+Area:Illiteracy+Area:HS.Grad+Area:Frost
Crit= 106.157802181297
Mean crit= 117.282816077734
Change in best IC: 0 / Change in mean IC: -0.655114873719924

After 80 generations:
Best model: Life.Exp~1+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+Murder:Illiteracy+HS.Grad:Income+Frost:Illiteracy+Area:HS.Grad+Area:Frost
Crit= 105.409722894288
Mean crit= 116.56338733245
Change in best IC: -0.748079287009062 / Change in mean IC: -0.719428745283736

After 90 generations:
Best model: Life.Exp~1+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+Murder:Illiteracy+HS.Grad:Income+Frost:Illiteracy+Area:HS.Grad+Area:Frost
Crit= 105.409722894288
Mean crit= 115.946981441244
Change in best IC: 0 / Change in mean IC: -0.616405891206682

After 100 generations:
Best model: Life.Exp~1+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+Murder:Illiteracy+HS.Grad:Income+Frost:Illiteracy+Area:HS.Grad
Crit= 104.896280062123
Mean crit= 115.481629754491
Change in best IC: -0.513442832165367 / Change in mean IC: -0.465351686753081

After 110 generations:
Best model: Life.Exp~1+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+Murder:Illiteracy+HS.Grad:Income+Frost:Illiteracy+Area:HS.Grad
Crit= 104.896280062123
Mean crit= 115.262779652755
Change in best IC: 0 / Change in mean IC: -0.218850101735143

After 120 generations:
Best model: Life.Exp~1+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+Murder:Illiteracy+HS.Grad:Income+Area:HS.Grad
Crit= 104.619741900903
Mean crit= 114.761060953558
Change in best IC: -0.276538161220145 / Change in mean IC: -0.501718699197568

After 130 generations:
Best model: Life.Exp~1+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+Murder:Illiteracy+HS.Grad:Income+Area:HS.Grad
Crit= 104.619741900903
Mean crit= 114.218094565686
Change in best IC: 0 / Change in mean IC: -0.542966387872212

After 140 generations:
Best model: Life.Exp~1+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+Murder:Illiteracy+HS.Grad:Income+Area:HS.Grad
Crit= 104.619741900903
Mean crit= 113.87733027568
Change in best IC: 0 / Change in mean IC: -0.340764290005708

After 150 generations:
Best model: Life.Exp~1+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+Murder:Illiteracy+HS.Grad:Income+Area:HS.Grad
Crit= 104.619741900903
Mean crit= 113.377773184023
Change in best IC: 0 / Change in mean IC: -0.499557091656925

After 160 generations:
Best model: Life.Exp~1+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+Murder:Illiteracy+HS.Grad:Income+Area:HS.Grad
Crit= 104.619741900903
Mean crit= 112.936408744275
Change in best IC: 0 / Change in mean IC: -0.441364439748085

After 170 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Frost:Illiteracy+Area:HS.Grad
Crit= 104.240696237889
Mean crit= 112.374767889152
Change in best IC: -0.379045663014367 / Change in mean IC: -0.561640855123002

After 180 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Frost:Illiteracy+Area:HS.Grad
Crit= 104.240696237889
Mean crit= 112.191734079979
Change in best IC: 0 / Change in mean IC: -0.183033809172485

After 190 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 111.847419588383
Change in best IC: -1.70789247031102 / Change in mean IC: -0.344314491596307

After 200 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 111.681487443478
Change in best IC: 0 / Change in mean IC: -0.165932144905256

After 210 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 111.490883791464
Change in best IC: 0 / Change in mean IC: -0.190603652013962

After 220 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 111.048915132335
Change in best IC: 0 / Change in mean IC: -0.441968659128932

After 230 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 110.794435408639
Change in best IC: 0 / Change in mean IC: -0.254479723695809

After 240 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 110.659481414216
Change in best IC: 0 / Change in mean IC: -0.134953994423128

After 250 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 110.420410396091
Change in best IC: 0 / Change in mean IC: -0.239071018124633

After 260 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 110.238247249591
Change in best IC: 0 / Change in mean IC: -0.182163146500812

After 270 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 110.127409872649
Change in best IC: 0 / Change in mean IC: -0.110837376942044

After 280 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 109.941738741113
Change in best IC: 0 / Change in mean IC: -0.185671131535727

After 290 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 109.941738741113
Change in best IC: 0 / Change in mean IC: 0

After 300 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 109.70514716283
Change in best IC: 0 / Change in mean IC: -0.236591578282372

After 310 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 109.702695277215
Change in best IC: 0 / Change in mean IC: -0.00245188561598297

After 320 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 109.702695277215
Change in best IC: 0 / Change in mean IC: 0

After 330 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 109.467259046775
Change in best IC: 0 / Change in mean IC: -0.235436230439433

After 340 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 109.371114070213
Change in best IC: 0 / Change in mean IC: -0.0961449765623286

After 350 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 109.371114070213
Change in best IC: 0 / Change in mean IC: 0

After 360 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 109.253513143739
Change in best IC: 0 / Change in mean IC: -0.117600926474069

After 370 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 109.253513143739
Change in best IC: 0 / Change in mean IC: 0

After 380 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 109.248789040403
Change in best IC: 0 / Change in mean IC: -0.00472410333615869

After 390 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 109.239454135549
Change in best IC: 0 / Change in mean IC: -0.00933490485381583

After 400 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 109.124388507823
Change in best IC: 0 / Change in mean IC: -0.115065627726182

After 410 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 109.124388507823
Change in best IC: 0 / Change in mean IC: 0

After 420 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 108.987927933663
Change in best IC: 0 / Change in mean IC: -0.136460574159472

After 430 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 108.977268073661
Change in best IC: 0 / Change in mean IC: -0.0106598600016099

After 440 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 108.907304494592
Change in best IC: 0 / Change in mean IC: -0.0699635790691957

After 450 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 108.782112141053
Change in best IC: 0 / Change in mean IC: -0.125192353538878

After 460 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 108.782112141053
Change in best IC: 0 / Change in mean IC: 0

After 470 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 108.782112141053
Change in best IC: 0 / Change in mean IC: 0

After 480 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 108.782112141053
Change in best IC: 0 / Change in mean IC: 0

After 490 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 108.690924728918
Change in best IC: 0 / Change in mean IC: -0.0911874121348717

After 500 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 108.643783434824
Change in best IC: 0 / Change in mean IC: -0.0471412940946152

After 510 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 108.643783434824
Change in best IC: 0 / Change in mean IC: 0

After 520 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 108.643783434824
Change in best IC: 0 / Change in mean IC: 0

After 530 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 108.638168989089
Change in best IC: 0 / Change in mean IC: -0.00561444573493475

After 540 generations:
Best model: Life.Exp~1+Income+Illiteracy+Murder+Area+Illiteracy:Population+Illiteracy:Income+Murder:Population+Murder:Income+HS.Grad:Income+Area:HS.Grad
Crit= 102.532803767578
Mean crit= 108.593156721876
Improvements in best and average IC have bebingo en below the specified goals.
Algorithm is declared to have converged.
Completed.
  • Le meilleur modèle estimé.
> res3@objects[[1]]

Call:
fitfunc(formula = as.formula(x), data = data)

Coefficients:
          (Intercept)                 Income             Illiteracy  
            7.106e+01             -9.340e-04             -5.912e+00  
               Murder                   Area  Illiteracy:Population  
            8.315e-01              3.827e-05             -1.752e-04  
    Income:Illiteracy      Murder:Population          Income:Murder  
            1.481e-03              2.588e-05             -2.517e-04  
       Income:HS.Grad           Area:HS.Grad  
            2.145e-05             -6.152e-07  
  • Tableau des estimations des coefficients des variables au cours de la procédure de sélection
> coef(res3)
                           Estimate Uncond. variance Nb models Importance
HS.Grad:Murder        -2.035119e-05     4.692486e-08         9 0.03622506
Population            -2.274451e-06     9.212912e-11        11 0.04136915
HS.Grad:Population     4.849031e-08     3.313448e-14        15 0.04320520
Area:Murder           -8.583726e-09     1.856918e-15        11 0.04461762
Frost:HS.Grad          9.118326e-06     5.350379e-10        19 0.04632861
Area:Income            6.878406e-11     6.592464e-20        14 0.04716864
Frost:Income          -5.004471e-10     3.137407e-15        13 0.04845790
HS.Grad:Illiteracy     2.198167e-04     3.529037e-06        14 0.04979408
Area:Population        1.223993e-11     1.445403e-21        19 0.05046565
Income:Population     -1.830864e-10     2.727377e-18        15 0.05205386
Frost:Population       8.950759e-09     1.036719e-15        15 0.05296678
Frost:Murder           7.734782e-06     2.139507e-09        13 0.05596202
HS.Grad               -1.152236e-03     6.609670e-05        12 0.05851627
Frost                 -8.204460e-04     3.476918e-06        28 0.07838860
Area:Illiteracy        5.037313e-07     1.437526e-12        31 0.12261777
Area:Frost             7.647858e-09     2.511733e-16        34 0.15013489
Illiteracy:Murder     -2.390977e-02     1.974889e-03        49 0.27418656
Frost:Illiteracy      -1.220253e-03     4.868783e-06        55 0.36796805
Income                -6.136093e-04     5.719627e-07        46 0.63358759
Area                   3.431968e-05     2.722947e-10        73 0.93582283
HS.Grad:Income         1.947565e-05     5.621313e-11        86 0.97760376
Area:HS.Grad          -5.717879e-07     7.080020e-14        85 0.98562456
Illiteracy            -5.248835e+00     4.543168e+00        95 0.99085299
Murder                 8.997514e-01     1.624743e-01        94 0.99165402
Illiteracy:Population -1.688868e-04     5.475933e-09        87 0.99185763
Murder:Population      2.557989e-05     8.672196e-11        93 0.99523299
Illiteracy:Income      1.354579e-03     2.043549e-07        96 0.99912921
Income:Murder         -2.634268e-04     7.207920e-09        98 0.99922958
(Intercept)            7.025084e+01     7.416256e+00       100 1.00000000
                      +/- (alpha=0.05)
HS.Grad:Murder            4.385733e-04
Population                1.943297e-05
HS.Grad:Population        3.685367e-07
Area:Murder               8.724429e-08
Frost:HS.Grad             4.683094e-05
Area:Income               5.198338e-10
Frost:Income              1.134034e-07
HS.Grad:Illiteracy        3.803372e-03
Area:Population           7.697242e-11
Income:Population         3.343591e-09
Frost:Population          6.518853e-08
Frost:Murder              9.364778e-05
HS.Grad                   1.646003e-02
Frost                     3.775182e-03
Area:Illiteracy           2.427440e-06
Area:Frost                3.208687e-08
Illiteracy:Murder         8.997296e-02
Frost:Illiteracy          4.467359e-03
Income                    1.531174e-03
Area                      3.340875e-05
HS.Grad:Income            1.517957e-05
Area:HS.Grad              5.387135e-07
Illiteracy                4.315390e+00
Murder                    8.160806e-01
Illiteracy:Population     1.498200e-04
Murder:Population         1.885407e-05
Illiteracy:Income         9.152362e-04
Income:Murder             1.718880e-04
(Intercept)               5.513572e+00
  • l’importance de chaque variable dans la procédure de sélection
> plot(res3,type = "s")