On considère le modèle de régression \[ Y= X\beta +\epsilon\] Ou \(Y\) est est le vecteur de la réponse \(n\times 1\) est la matrice \(n\times p\) des variables explicatives \((X_1,\ldots,X_p)\)
\(\beta\) est le vecteur \(p\times 1\) inconnu et \(\epsilon\sim \mathcal{N}_p(0,\sigma^2 I_n)\) ou \(\sigma^2>0\) est la variance inconnue du modèle.
Nous supposons que \(p<n\) et que le vecteur constant \(\mathbf{1}\) fait toujours partie des variables explicatives.
Il y a \(2^{p-1}\) modèles de régression possibles, \(2^{30}=1 073 741 824\)
Comment alors choisir le meilleur modèle parmi ces modèles ?
Définir un critère quantifiant la qualité du modèle.
Le choix du critère dépend de l’objectif de la régression
Une fois il est fixé, il faut déterminer des procédures permettant de trouver le meilleur modèle.
Il y a différents objectifs de la régression
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} \]
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
Sachant que \(E(Y)=X_{12}\beta_{12}\)
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\}\).
Conclusion?
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.
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 ;
Estimation de \({\sigma}^2\) par \[SCR(p)/(n − p).\]
L’estimateur utilisé provient de l’estimateur trouvé pour le modèle complet.
\[\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}}),\]
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.
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.
\[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}\]
\[ \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.
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|\]
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|\]
\[\mbox{AIC}(\xi)=cte+ n\log \displaystyle\frac{SCR(\xi)}{n} +2|\xi|\]
\[\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.
La sélection de modèle peut être vue comme la recherche du modèle optimal, au sens d’un critère choisi, parmi toutes les possibilités.
Cela peut donc être vu comme une optimisation d’une fonction objectif (le critère). Pour cela, et à l’image des possibilités en optimisation, on peut soit faire une recherche exhaustive car le nombre de modèles possibles est fini, soit partir d’un point de départ et utiliser une méthode d’optimisation de la fonction objectif (recherche pas à pas).
Trouver le minimum global de la fonction objectif n’est pas garanti dans les recherches pas à pas et que seul un optimum local dépendant du point de départ choisi sera trouvé.
Si les variables explicatives sont orthogonales, alors l’optimum trouvé sera toujours l’optimum global.
leaps
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.
force.out = n
les colonnes a exclure de la procédure de sélectionné.> 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/75Income
Revenu par habitantIllitracy
taux alphabétisationLife.Exp
Espérance de vieMurder
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.
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
> plot(res1,scale="adjr2")
> plot(res1,scale="r2")
> plot(res1,scale="bic")
> 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
> 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
> 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
> res1.s$rsq
[1] 0.6097201 0.6628461 0.7126624 0.7360328 0.7361014 0.7361440 0.7361563
> res1.s$rss
[1] 34.46133 29.77036 25.37162 23.30804 23.30198 23.29822 23.29714
> 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
> res1.s$cp
[1] 16.126760 9.669894 3.739878 2.019659 4.008737 6.001959 8.000000
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
glmulti
glmulti
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électioncrit
spécifie le critère qui va eêtre utilisé pour la sélection du meilleur modèlemethod
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 interactionsglmulti
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.
> res2.s=summary(res2)
> res2.s$bestmodel
[1] "Life.Exp ~ 1 + Population + Murder + HS.Grad + Frost"
> 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
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"
> res2@crits[1:5] ## On retient les 5 meilleures valeurs.
[1] 115.7326 117.7196 117.7242 117.7309 117.9743
> ## Les formules des 5 meilleurs modèles
> for(j in 1:5){
+ res2@formulas[[j]]
+ }
> 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
> 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).
> 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
> 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.
> 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
Estimate
.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.).
Description de l’algorithme:
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
Description de l’algorithme:
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.
leaps
> 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
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
> 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
> 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
> 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
> 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
> 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
> 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
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.
> 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
> 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
> plot(res3,type = "s")