Data s ktorými sme sa stretli v predchádzajúcich cvičeniach nám priamo určovali a ešte aj budú určovať vesmír. Vo väčšine prípadov dokonca obsahovali len nutné a relevantné regresory. Realny svet nám túto výhodu neposkytuje, zväčša si regresory musíme zvoliť v rámci možností sami.
Málo regresorov (tolko aby sme ich vedeli obzrieť okom) nám dáva veľkú výhodu pri voľbe modelu. Po prvé môžeme podľa oka rozhotnuť použití jednotlivých regresorov a po druhé každý regresor preskúmame aj z hľadiska významu (predikovať cenu ropy na základe veľkosti topánok priemerneho muža je kus “nevhodné”).
Veľa regresorov zatienuje predošlé možnosti, ťažko si ich znázrnime, vieme o každom z nich len čosi ak vôbec niečo (zväčša len názov).
V oboch prípadoch sa môžeme dostať do situácie kde si musíme vybrať model. Na to bolo navrhnutých niekoľko metód, mier, ale aj trikov aby ste sa vedeli rozhodnúť. V nasledujúcom cvičení nebudeme uvažovať transformácie ani diagnostiku modelu, ukážeme si len umelo výhody a nevýchody jednotlivých metód.
Vezmime dáta seatpos
, tento krát obzrite dáta, ale nevykreslujte žiadne obrázky. Kedže je regresorov 9 na konci okom skontrolujeme či by model vyhovoval nášmu odhadu. Ako prvé použite Backward elimination na výber vhodného modelu pričom začnite plným modelom s hipcenter
. Hranicu signifikanicie zoberte 5%.
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 436.432128 166.571619 2.6201 0.01384
## Age 0.775716 0.570329 1.3601 0.18427
## Weight 0.026313 0.330970 0.0795 0.93718
## HtShoes -2.692408 9.753035 -0.2761 0.78446
## Ht 0.601345 10.129874 0.0594 0.95307
## Seated 0.533752 3.761894 0.1419 0.88815
## Arm -1.328069 3.900197 -0.3405 0.73592
## Thigh -1.143119 2.660024 -0.4297 0.67056
## Leg -6.439046 4.713860 -1.3660 0.18245
##
## n = 38, p = 9, Residual SE = 37.72029, R-Squared = 0.69
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 436.84207 163.64104 2.6695 0.01214
## Age 0.76574 0.53590 1.4289 0.16337
## Weight 0.02897 0.32244 0.0898 0.92901
## HtShoes -2.13409 2.53896 -0.8405 0.40726
## Seated 0.54959 3.68958 0.1490 0.88258
## Arm -1.30087 3.80833 -0.3416 0.73504
## Thigh -1.09039 2.46534 -0.4423 0.66145
## Leg -6.40612 4.60272 -1.3918 0.17421
##
## n = 38, p = 8, Residual SE = 37.08854, R-Squared = 0.69
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 427.50734 124.38767 3.4369 0.001696
## Age 0.77573 0.51579 1.5040 0.142709
## HtShoes -2.08235 2.43289 -0.8559 0.398613
## Seated 0.58582 3.60833 0.1624 0.872083
## Arm -1.28258 3.74154 -0.3428 0.734067
## Thigh -1.11535 2.41013 -0.4628 0.646758
## Leg -6.35716 4.49663 -1.4138 0.167396
##
## n = 38, p = 7, Residual SE = 36.49034, R-Squared = 0.69
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 436.54632 109.52662 3.9858 0.0003645
## Age 0.76671 0.50493 1.5185 0.1387169
## HtShoes -1.77157 1.47856 -1.1982 0.2396483
## Arm -1.33899 3.66826 -0.3650 0.7174980
## Thigh -1.19826 2.31930 -0.5166 0.6089553
## Leg -6.49097 4.35267 -1.4913 0.1456860
##
## n = 38, p = 6, Residual SE = 35.93092, R-Squared = 0.69
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 445.79773 105.14516 4.2398 0.0001695
## Age 0.65246 0.39097 1.6688 0.1046161
## HtShoes -1.91711 1.40497 -1.3645 0.1816360
## Thigh -1.37321 2.23923 -0.6133 0.5439130
## Leg -6.95019 4.11181 -1.6903 0.1003972
##
## n = 38, p = 5, Residual SE = 35.45591, R-Squared = 0.68
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 456.21365 102.80779 4.4375 9.092e-05
## Age 0.59983 0.37792 1.5872 0.12173
## HtShoes -2.30226 1.24520 -1.8489 0.07318
## Leg -6.82975 4.06926 -1.6784 0.10244
##
## n = 38, p = 4, Residual SE = 35.12909, R-Squared = 0.68
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 493.7938 102.1923 4.8320 2.662e-05
## HtShoes -2.4955 1.2658 -1.9714 0.05662
## Leg -6.3693 4.1461 -1.5362 0.13347
##
## n = 38, p = 3, Residual SE = 35.88337, R-Squared = 0.66
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 565.59266 92.57945 6.1093 4.967e-07
## HtShoes -4.26209 0.53906 -7.9065 2.207e-09
##
## n = 38, p = 2, Residual SE = 36.55490, R-Squared = 0.63
Vybraný citát z Faraway (2015): “We include it here because the method is still used but should be discouraged.”
Informačné kritériá sú jedni z najpoužívanejších pri voľbe modelu. Kritérium je miera vzdialenosti modelu od dát, to znamená, že neporovnávame sub modely, ale vzdialenosti. Spočítajte AIC pomocou rovnomennej funkcie plného modelu.
## [1] 393.4634
Číslo samé o sebe nám veľa nepovie jediné čo vieme je, že by malo byť čo najbližšie k 0. Nula je už zase nie dobre lebo to by znamenalo, že model sú dáta. Keby máme iný podľa nás “vhodnejší” model môžeme porovnať.
Pred tým než začneme je vhodné si urobiť pod množinu modelov, takých ktoré budú obsahovať vždy o jeden parameter menej. Na to môzeme použiť funkciu regsubsets
z knižnice leaps
. Funkcia používa niekoľko algoritmov na vytvorenie “najvhodnejších” modelov. Je to len jedna z možnosí ako urobiť podmnožinu modelov.
summary(regsubsets(hipcenter~.,data=seatpos))
## Subset selection object
## Call: regsubsets.formula(hipcenter ~ ., data = seatpos)
## 8 Variables (and intercept)
## Forced in Forced out
## Age FALSE FALSE
## Weight FALSE FALSE
## HtShoes FALSE FALSE
## Ht FALSE FALSE
## Seated FALSE FALSE
## Arm FALSE FALSE
## Thigh FALSE FALSE
## Leg FALSE FALSE
## 1 subsets of each size up to 8
## Selection Algorithm: exhaustive
## Age Weight HtShoes Ht Seated Arm Thigh Leg
## 1 ( 1 ) " " " " " " "*" " " " " " " " "
## 2 ( 1 ) " " " " " " "*" " " " " " " "*"
## 3 ( 1 ) "*" " " " " "*" " " " " " " "*"
## 4 ( 1 ) "*" " " "*" " " " " " " "*" "*"
## 5 ( 1 ) "*" " " "*" " " " " "*" "*" "*"
## 6 ( 1 ) "*" " " "*" " " "*" "*" "*" "*"
## 7 ( 1 ) "*" "*" "*" " " "*" "*" "*" "*"
## 8 ( 1 ) "*" "*" "*" "*" "*" "*" "*" "*"
Vráťme sa k téme, AIC vieme spočítať aj sami podľa vzorca \[nlog(RSS/n)+2p\] spočítajte AIC submodelov z funkcie. (hint. RSS viete dostať zo summary funkcie zavolaním $rss
)
Teraz vezmime funkciu step
ktorá tiež používa AIC na voľbu vhodného modelu a použite ju na náš plný model.
##
## Call:
## lm(formula = hipcenter ~ Age + HtShoes + Leg, data = seatpos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -79.269 -22.770 -4.342 21.853 60.907
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 456.2137 102.8078 4.438 9.09e-05 ***
## Age 0.5998 0.3779 1.587 0.1217
## HtShoes -2.3023 1.2452 -1.849 0.0732 .
## Leg -6.8297 4.0693 -1.678 0.1024
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 35.13 on 34 degrees of freedom
## Multiple R-squared: 0.6813, Adjusted R-squared: 0.6531
## F-statistic: 24.22 on 3 and 34 DF, p-value: 1.437e-08
Máme podmožinu submodelov, čo je veľká výhoda a porovnajme ich \(R^2\). Vo výstupe funkcie regsubsets
nájdeme pod $adjr2
tiež zo summary.
Podobným nástrojom je aj miera Mallow Cp \[C_p=\frac{RSS_p}{\sigma^2} + 2p -n.\] Tu prichádza, znova vhod použitie funkcie regsubsets
, ktorá tiež počíta aj tieto hodnoty a zavolať ich môžete pomocou $cp
na summary.
step
.Treba si uvedomiť, že použitie akéjkoľvek funkcie na vytvorenie submodelov má svoje hranice a možnosti. Preto ich rady treba brať informačne. Využite vaše skúsenosti nadobudnuté z predchádzajúcich kurzov a pokúste sa zložiť model podľa toho.
Vezmite dáta stackloss
a fitnite do dát podľa vás optimálny model s temp
ako odozvou, pričom využite: