Jeg prøver å forstå den grunnleggende forskjellen mellom trinnvis og bakovergående regresjon i R ved hjelp av trinnfunksjonen. For trinnvis regresjon brukte jeg følgende kommando
step(lm(mpg~wt+drat+disp+qsec,data=mtcars),direction="both")
Jeg fikk utdataene nedenfor for ovennevnte kode.
For tilbakevendende variabelvalg brukte jeg følgende kommando
step(lm(mpg~wt+drat+disp+qsec,data=mtcars),direction="backward")
Og jeg fikk utdataene nedenfor for bakover
Så mye som jeg har forstått, når ingen parameter er spesifisert, fungerer trinnvis valg som bakover med mindre parameteren «øvre» og «nedre» er spesifisert i R. Likevel i utgangen av trinnvis valg, det er en + disp som legges til i 2. trinn. Hva prøver funksjonen å oppnå ved å legge til + disp igjen i trinnvis valg? Hvorfor legger R til + disp i andre trinn, mens resultatene er de samme (AIC-verdier og modellvalgverdier) som det bakoverliggende valget. Hvordan fungerer R akkurat i trinnvis valg?
Jeg vil virkelig forstå hvordan denne funksjonen fungerer i R. Takk på forhånd for hjelpen!
Svar
Kanskje ville det være lettere å forstå hvordan trinnvis regresjon gjøres ved å se på alle de 15 mulige lm-modellene.
Her er «en quickie for å generere formel for alle 15 kombinasjoner.
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>
AIC-verdier for hver av modellen ekstraheres med:
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
La oss gå tilbake til trinnregresjonen. ExtractAIC-verdien for lm (mpg ~ wt + drat + disp + qsec) er 65,63 (tilsvarer modell 15 i listen ovenfor).
Hvis modellen fjerner disp (-disp), er lm (mpg ~ wt + drat + qsec) 63.891 (eller modell 11 i listen).
Hvis modellen gjør det ikke fjerne noe (ingen), så er AIC fortsatt 65.63
Hvis modellen fjerner qsec (-qsec), er lm (mpg ~ wt + drat + disp) 65,908 (modell 12).
osv.
I utgangspunktet avslører sammendraget den mulige trinnvise fjerningen av en periode fra hele modellen din og sammenlign extractAIC-verdien ved å føre dem opp i stigende rekkefølge. Siden det er mer sannsynlig at den mindre AIC-verdien ligner på SANNHET-modellen, må du beholde (-disp) -modellen i trinn en.
Prosessen gjentas igjen, men med den beholdte (-disp) modellen som utgangspunkt. Begrepene blir enten trukket fra («bakover») eller trukket / lagt til («begge») for å tillate sammenligning av modellene. Siden den laveste AIC-verdien i sammenligning fremdeles er (-disp) -modellen, er prosessstopp og resulterende modeller gitt.
Når det gjelder spørsmålet ditt: «Hva prøver du å oppnå ved å legge til + disp igjen i trinnvis valg? «, i dette tilfellet gjør det ikke noe, for den beste modellen på tvers av alle 15 modellene er modell 11, dvs. lm (mpg ~ wt + drat + qsec).
I kompliserte modeller med stort antall prediktorer som krever mange trinn for å løse, er det imidlertid viktig å legge til et begrep som ble fjernet i begynnelsen for å gi den mest uttømmende måten å sammenligne vilkårene på.
Håper dette på en eller annen måte.
Kommentarer
- " Siden den mindre AIC-verdien er mer sannsynlig å ligne SANNHETSMODELL " er rett opp falsk. Trinnvis modellbygging er omtrent like sannsynlig å beholde falske prediktorer som å avvise ekte prediktorer … blant en rekke andre problemer: stats.stackexchange.com/questions/115843/…
- Det er åpenbart ' en løgn. Det er ' hvorfor modellvalg basert på enkle kriterier (som trinnvis regresjon) er litt naivt.
- @Alexis elsker anbefalingene dine i svaret ditt i lenken.
Svar
Her et forenklet svar. For det første prøver begge prosedyrer å redusere AIC for en gitt modell, men de gjør det på forskjellige måter. Deretter er den grunnleggende forskjellen at i tilbakevendingsprosedyren kan du bare forkaste variabler fra modellen i hvilket som helst trinn, mens du i trinnvis markering også kan legge til variabler i modellen.
Om utgangen i trinnvis valg, generelt viser utdataene at du har bestilt alternativer for å redusere AIC, så den første raden på et hvilket som helst trinn er det beste alternativet. Deretter er det en +disp
i den tredje raden, fordi å legge den variabelen til modellen din ville være det tredje beste alternativet for å redusere AIC. Men tydeligvis, som ditt beste alternativ er <none>
, betyr det at du ikke gjør noe, prosedyren stopper og gir deg de samme resultatene som i tilbakevalg.