Regresie pas cu pas în R – Cum funcționează?

Încerc să înțeleg diferența de bază dintre regresia în trepte și înapoi în R folosind funcția de pas. Pentru regresia în trepte am folosit următoarea comandă

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

Am obținut rezultatul de mai jos pentru codul de mai sus.

înainte

Pentru selectarea variabilelor înapoi am folosit următoarea comandă

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

Și am obținut rezultatul de mai jos pentru versiunea înapoi

înapoi

Oricât am înțeles, când nu este specificat niciun parametru, selecția în trepte acționează ca înapoi, cu excepția cazului în care parametrul „superior” și „inferior” sunt specificate în R. Cu toate acestea, în ieșirea selecției în trepte, există un + disp care se adaugă în pasul 2. Care este funcția care încearcă să realizeze prin adăugarea din nou a + disp în selecția pas cu pas? De ce R adaugă + disp în pasul 2, în timp ce rezultatele sunt aceleași (valorile AIC și valorile de selecție a modelului) ca și selecția inversă. Cum funcționează exact R în selecția în trepte?

Chiar vreau să înțeleg cum funcționează această funcție în R. Vă mulțumim anticipat pentru ajutor!

Răspuns

Poate că ar fi mai ușor să înțelegem cum se face regresia treptată, examinând toate cele 15 modele posibile de lm.

Aici „un rapid pentru a genera formula pentru toate cele 15 combinații.

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> 

Valorile AIC pentru fiecare model sunt extrase cu:

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 

Să revenim la regresia dvs. de pași. Valoarea extractAIC pentru lm (mpg ~ wt + drat + disp + qsec) este 65,63 (echivalent cu modelul 15 din lista de mai sus).

Dacă modelul elimină disp (-disp), atunci lm (mpg ~ wt + drat + qsec) este 63.891 (sau modelul 11 din listă).

Dacă modelul face nu eliminați nimic (niciunul), atunci AIC este încă 65,63

Dacă modelul elimină qsec (-qsec), atunci lm (mpg ~ wt + drat + disp) este 65,908 (model 12).

etc.

Practic rezumatul dezvăluie eliminarea treptată posibilă a unui termen din modelul complet și compară valoarea extractAIC, listându-le în ordine crescătoare. Deoarece valoarea AIC mai mică este mai probabil să semene cu modelul TRUTH, pasul păstrează modelul (-disp) la pasul unu.

Procesul se repetă din nou, dar cu modelul păstrat (-disp) ca punct de plecare. Termenii sunt fie scădați („înapoi”), fie scăși / adăugați („ambii”) pentru a permite compararea modelelor. Deoarece cea mai mică valoare AIC în comparație este în continuare modelul (-disp), oprirea procesului și modelele rezultate date.

În ceea ce privește interogarea dvs.: „Care este funcția care încearcă să realizeze prin adăugarea din nou a + disp în selecția pas cu pas? „, în acest caz, nu face cu adevărat nimic, pentru că cel mai bun model din toate cele 15 modele este modelul 11, adică lm (mpg ~ wt + drat + qsec).

Cu toate acestea, în modelele complicate cu un număr mare de predictori care necesită numeroși pași pentru a rezolva, adăugarea înapoi a unui termen care a fost eliminat inițial este esențială pentru a oferi cel mai exhaustiv mod de comparare a termenilor.

Sper că acest ajutor într-un fel.

Comentarii

  • " Deoarece valoarea AIC mai mică este mai probabil să semene cu Modelul ADEVAR " este fals fals. Construirea modelului pas cu pas este la fel de probabil să păstreze predictori falși, ca să respingă predictorii adevărați … printre o serie de alte probleme: stats.stackexchange.com/questions/115843/…
  • Evident că ' este o minciună. Acesta este ' motivul pentru care selecția modelului bazată pe criterii unice (cum ar fi regresia în trepte) este un pic naivă.
  • @Alexis adoră recomandările dvs. în răspunsul din link.

Răspuns

Aici un răspuns simplificat. În primul rând, ambele proceduri încearcă să reducă AIC-ul unui model dat, dar o fac în moduri diferite. Apoi, diferența de bază este că în procedura de selecție inversă puteți renunța la variabile din model doar la orice pas, în timp ce în selecția treptată puteți adăuga și variabile la model.

Despre ieșirea în trepte selecție, în general, ieșirea vă arată alternative comandate pentru a reduce AIC, astfel încât primul rând la orice pas este cea mai bună opțiune. Apoi, există un +disp în al treilea rând, deoarece adăugarea variabilei la modelul dvs. ar fi a treia cea mai bună opțiune pentru reducerea AIC. Dar, evident, întrucât cea mai bună alternativă este <none>, asta înseamnă să nu faceți nimic, procedura se oprește și vă oferă aceleași rezultate ca și la selecția inversă.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *