Snažím se pochopit základní rozdíl mezi krokovou a zpětnou regresí v R pomocí funkce step. Pro postupnou regresi jsem použil následující příkaz
step(lm(mpg~wt+drat+disp+qsec,data=mtcars),direction="both")
Získal jsem níže uvedený výstup pro výše uvedený kód.
Pro zpětný výběr proměnných jsem použil následující příkaz
step(lm(mpg~wt+drat+disp+qsec,data=mtcars),direction="backward")
A dostal jsem níže uvedený výstup pro zpětný chod
Jak jsem pochopil, není-li zadán žádný parametr, postupný výběr funguje jako zpětný, pokud nejsou v R. parametru „upper“ a „lower“ zadány R. Přesto na výstupu stupňovitého výběru, ve 2. kroku je přidán + disp. Co se funkce snaží dosáhnout opětovným přidáním + disp v postupném výběru? Proč R přidává + disp ve 2. kroku, zatímco výsledky jsou stejné (hodnoty AIC a hodnoty výběru modelu) jako zpětný výběr. Jak přesně funguje R při postupném výběru?
Opravdu chci pochopit, jak tato funkce funguje v R. Předem děkuji za pomoc!
Odpověď
Možná by bylo snazší pochopit, jak se postupná regrese provádí, při pohledu na všech 15 možných lm modelů.
Zde je stručná informace o generování vzorců pro všech 15 kombinací.
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>
Hodnoty AIC pro každý model jsou extrahovány pomocí:
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
Vraťme se zpět k vaší postupné regrese. Hodnota extractAIC pro lm (mpg ~ wt + drat + disp + qsec) je 65,63 (ekvivalent k modelu 15 v seznamu výše).
Pokud model odebere disp (-disp), pak lm (mpg ~ wt + drat + qsec) je 63,891 (nebo model 11 v seznamu).
Pokud model ano neodstranit nic (žádný), pak je AIC stále 65,63
Pokud model odebere qsec (-qsec), pak lm (mpg ~ wt + drat + disp) je 65,908 (model 12).
atd.
Souhrn v zásadě odhaluje všechny možné postupné odstraňování jednoho termínu z vašeho celého modelu a porovnává hodnotu extractAIC jejich seřazením ve vzestupném pořadí. Jelikož se menší hodnota AIC pravděpodobně podobá modelu PRAVDY, krok si v prvním kroku ponechá model (-disp).
Proces se znovu opakuje, ale jako výchozí bod je zachován model (-disp). Výrazy jsou buď odečteny („zpět“), nebo odečteny / přidány („obě“), aby bylo možné srovnání modelů. Protože nejnižší srovnávací hodnotou AIC je stále model (-disp), jsou uvedeny proces zastavení a výsledné modely.
S ohledem na váš dotaz: „Co se funkce snaží dosáhnout opětovným přidáním + disp v postupném výběru? „, v tomto případě to vlastně nic nedělá, protože nejlepší model ze všech 15 modelů je model 11, tj. lm (mpg ~ wt + drat + qsec).
Ve složitých modelech s velkým počtem prediktorů, které vyžadují četné kroky k vyřešení, je však přidání termínu, který byl původně odstraněn, zásadní, aby poskytlo nejúplnější způsob porovnání těchto výrazů.
Doufám, že tato pomoc nějakým způsobem.
Komentáře
- " Jelikož se menší hodnota AIC podobá spíše PRAVDIVÝ model " je přímočarý nepravdivý. Postupné budování modelu je stejně pravděpodobné, že si uchová falešné prediktory, stejně jako odmítne pravé prediktory … mezi řadou dalších problémů: id = „794ecee2f7″>
stats.stackexchange.com/questions/115843/…
Odpověď
Zde zjednodušená odpověď. Nejprve se oba postupy snaží snížit AIC daného modelu, ale dělají to různými způsoby. Základní rozdíl pak spočívá v tom, že v postupu zpětného výběru můžete v libovolném kroku zahodit pouze proměnné z modelu, zatímco v postupném výběru můžete do modelu přidat také proměnné.
O výstupu v postupném výběr, výstup obecně zobrazuje objednané alternativy ke snížení AIC, takže první řádek v každém kroku je vaší nejlepší volbou. Potom je ve třetím řádku +disp
, protože přidání této proměnné do vašeho modelu by bylo vaší třetí nejlepší možností, jak snížit AIC. Ale samozřejmě, protože vaší nejlepší alternativou je <none>
, což znamená nedělat nic, postup se zastaví a poskytne vám stejné výsledky jako při zpětném výběru.