Vaiheittainen regressio R: ssä – miten se toimii?

Yritän ymmärtää R: n vaiheittaisen ja taaksepäin tapahtuvan regressioiden välisen eron käyttämällä step-funktiota. Portaittaiseen regressioon käytin seuraavaa komentoa.

 step(lm(mpg~wt+drat+disp+qsec,data=mtcars),direction="both") 

Sain alla olevan tuotoksen yllä olevalle koodille.

eteenpäin

Muuttujien taaksepäin valintaan käytin seuraavaa komentoa

 step(lm(mpg~wt+drat+disp+qsec,data=mtcars),direction="backward") 

Ja sain alla olevan tuotoksen taaksepäin

taaksepäin

Niin paljon kuin olen ymmärtänyt, jos mitään parametria ei ole määritelty, portaittainen valinta toimii taaksepäin, ellei parametreja ”ylempi” ja ”alempi” ole määritelty R: ssä. on + disp, joka lisätään toiseen vaiheeseen. Mitä toiminto yrittää saavuttaa lisäämällä + disp uudelleen vaiheittaiseen valintaan? Miksi R lisää + disp: n toisessa vaiheessa, kun taas tulokset ovat samat (AIC-arvot ja mallin valinta-arvot) kuin taaksepäin valinta. Kuinka R toimii tarkalleen asteittaisessa valinnassa?

Haluan todella ymmärtää, miten tämä toiminto toimii R: ssä. Kiitos jo etukäteen avusta!

Vastaus

Ehkä olisi helpompaa ymmärtää, miten asteittainen regressio tapahtuu, tarkastelemalla kaikkia 15 mahdollista lm-mallia.

Tässä on pika, jolla luodaan kaava kaikille 15 yhdistelmälle.

library(leaps) tmp<-regsubsets(mpg ~ wt + drat + disp + qsec, data=mtcars, nbest=1000, really.big=T, intercept=F) all.mods <- summary(tmp)[[1]] all.mods <- lapply(1:nrow(all.mods, function(x)as.formula(paste("mpg~", paste(names(which(all.mods[x,])), collapse="+")))) head(all.mods) [[1]] mpg ~ drat <environment: 0x0000000013a678d8> [[2]] mpg ~ qsec <environment: 0x0000000013a6b3b0> [[3]] mpg ~ wt <environment: 0x0000000013a6df28> [[4]] mpg ~ disp <environment: 0x0000000013a70aa0> [[5]] mpg ~ wt + qsec <environment: 0x0000000013a74540> [[6]] mpg ~ drat + disp <environment: 0x0000000013a76f68> 

Kunkin mallin AIC-arvot puretaan seuraavasti:

all.lm<-lapply(all.mods, lm, mtcars) sapply(all.lm, extractAIC)[2,] [1] 97.98786 111.77605 73.21736 77.39732 63.90843 77.92493 74.15591 79.02978 91.24052 71.35572 [11] 63.89108 65.90826 78.68074 72.97352 65.62733 

Palataan ”takaisin-regressioon”. ExtractAIC-arvo lm: lle (mpg ~ wt + drat + disp + qsec) on 65,63 (vastaa mallia 15 yllä olevassa luettelossa).

Jos malli poistaa disp (-disp), niin lm (mpg ~ wt + drat + qsec) on 63.891 (tai malli 11 luettelossa).

Jos malli tekee ei poista mitään (ei mitään), niin AIC on edelleen 65,63

Jos malli poistaa qsec (-qsec), niin lm (mpg ~ wt + drat + disp) on 65,908 (malli 12).

jne.

Yhteenveto paljastaa pohjimmiltaan yhden termin mahdollisen vaiheittaisen poistamisen koko mallistasi ja vertaa extractAIC-arvoa luetteloimalla ne nousevassa järjestyksessä. Koska pienempi AIC-arvo muistuttaa todennäköisemmin TRUTH-mallia, askel säilyttää (-disp) -mallin vaiheessa 1.

Prosessi toistetaan uudelleen, mutta lähtökohtana on säilytetty (-disp) malli. Termit joko vähennetään (”taaksepäin”) tai vähennetään / lisätään (”molemmat”) mallien vertailun mahdollistamiseksi. Koska alin AIC-arvo on edelleen (-disp) -malli, prosessin pysäytys ja tuloksena olevat mallit.

Kyselysi suhteen: ”Mikä on funktio, jota yritetään saavuttaa lisäämällä + disp uudelleen asteittaisessa valinnassa? ”, tässä tapauksessa se ei todellakaan tee mitään, koska kaikkien 15 mallin paras malli on malli 11, eli lm (mpg ~ wt + drat + qsec).

Kuitenkin monimutkaisissa malleissa, joissa on paljon ennustimia ja joiden ratkaiseminen vaatii lukuisia vaiheita, alun perin poistetun termin lisääminen on kriittinen, jotta saadaan kattavin tapa verrata termejä. jollakin tavalla.

Kommentit

  • " Koska pienempi AIC-arvo muistuttaa todennäköisemmin TOTUUS-malli " on suoraan väärä. Vaiheittainen mallin rakentaminen säilyttää suunnilleen yhtä todennäköiset väärät ennustajat kuin hylkäävät tosi ennustajat … joukon muita ongelmia: stats.stackexchange.com/questions/115843/…
  • Ilmeisesti se ' sa valhe. Siksi ' miksi yksittäisiin kriteereihin perustuva mallin valinta (kuten asteittainen regressio) on melko naiivi.
  • @Alexis rakastaa suosituksiasi vastauksessasi linkkiin.

Vastaa

Tässä yksinkertaistettu vastaus. Ensinnäkin molemmat menettelyt yrittävät vähentää tietyn mallin AIC: tä, mutta ne tekevät sen eri tavoin. Sitten perusero on, että taaksepäin valinnassa voit hylätä mallin muuttujat vain missä tahansa vaiheessa, kun taas vaiheittaisessa valinnassa voit myös lisätä muuttujia malliin.

Tietoja vaiheittain tuotetusta valinta, tulos yleensä näyttää tilaamasi vaihtoehdot AIC: n vähentämiseksi, joten ensimmäinen vaihtoehto missä tahansa vaiheessa on paras vaihtoehto. Sitten kolmannella rivillä on +disp, koska kyseisen muuttujan lisääminen malliin olisi kolmanneksi paras vaihtoehto vähentää AIC: täsi. Mutta tietysti, koska paras vaihtoehto on <none>, se tarkoittaa, että et tee mitään, toimenpide pysähtyy ja antaa sinulle samat tulokset kuin taaksepäin valinnassa.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *