Regressão passo a passo em R - Como funciona?

15

Estou tentando entender a diferença básica entre regressão stepwise e backward em R usando a função step. Para regressão gradual, usei o seguinte comando

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

Eu tenho a saída abaixo para o código acima.

frente

Para seleção de variável para trás, usei o seguinte comando

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

E eu tenho a saída abaixo para trás

para trás

Tanto quanto eu entendi, quando nenhum parâmetro é especificado, a seleção por etapas atua como retrocedida, a menos que o parâmetro "superior" e "inferior" sejam especificados em R. No entanto, na saída da seleção por etapas, há um + disp adicionado em o segundo passo. Qual é a função que está tentando alcançar adicionando + disp novamente na seleção gradual? Por que R está adicionando + disp na 2ª etapa, enquanto os resultados são os mesmos (valores AIC e valores de seleção de modelo) que a seleção anterior. Como R está funcionando exatamente na seleção gradual?

Eu realmente quero entender como esta função está funcionando na R. Agradecemos antecipadamente a ajuda!


fonte

Respostas:

16

Talvez seja mais fácil entender como a regressão passo a passo está sendo feita, analisando todos os 15 possíveis modelos de filme.

Aqui está uma rápida para gerar a fórmula para todas as 15 combinações.

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>

Os valores de AIC para cada modelo são extraídos com:

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

Vamos voltar à sua regressão passo a passo. O valor extractAIC para lm (mpg ~ wt + drat + disp + qsec) é 65,63 (equivalente ao modelo 15 na lista acima).

Se o modelo remover disp (-disp), então lm (mpg ~ wt + drat + qsec) será 63.891 (ou modelo 11 na lista).

Se o modelo não remover nada (nenhum), o AIC ainda será 65,63

Se o modelo remover qsec (-qsec), então lm (mpg ~ wt + drat + disp) será 65,908 (modelo 12).

etc.

Basicamente, o resumo revela a possível remoção gradual de um termo de seu modelo completo e compara o valor extractAIC, listando-os em ordem crescente. Como o valor menor do AIC é mais provável de se assemelhar ao modelo TRUTH, mantenha o modelo (-disp) na etapa um.

O processo é repetido novamente, mas com o modelo retido (-disp) como ponto de partida. Os termos são subtraídos ("para trás") ou subtraídos / adicionados ("ambos") para permitir a comparação dos modelos. Como o valor mais baixo da AIC em comparação ainda é o modelo (-disp), a parada do processo e os modelos resultantes são fornecidos.

Com relação à sua consulta: "Qual é a função que está tentando alcançar adicionando + disp novamente na seleção gradual?", Nesse caso, ele realmente não faz nada, porque o melhor modelo em todos os 15 modelos é o modelo 11 , ou seja, lm (mpg ~ wt + drat + qsec).

No entanto, em modelos complicados com grande número de preditores que exigem várias etapas para serem resolvidos, a adição de um termo que foi removido inicialmente é essencial para fornecer a maneira mais exaustiva de comparar os termos.

Espero que isso ajude de alguma forma.

Adam Quek
fonte
6
"Como o valor menor do AIC é mais provável de se assemelhar ao modelo TRUTH", isso é falso. Passo a passo a construção do modelo é quase igualmente propensos a reter falsos como preditores para rejeitar os verdadeiros preditores ... entre uma série de outros problemas: stats.stackexchange.com/questions/115843/...
Alexis
2
Obviamente é uma mentira. É por isso que a seleção de modelos com base em critérios únicos (como regressão por etapas) é um pouco ingênua.
Adam Quek
@Alexis adora suas recomendações na sua resposta no link.
Adam Quek
3

Aqui uma resposta simplificada. Primeiro, ambos os procedimentos tentam reduzir a AIC de um determinado modelo, mas fazem isso de maneiras diferentes. Então, a diferença básica é que, no procedimento de seleção reversa, você só pode descartar variáveis ​​do modelo em qualquer etapa, enquanto na seleção gradual, você também pode adicionar variáveis ​​ao modelo.

Sobre a saída na seleção passo a passo, em geral, a saída mostra alternativas ordenadas para reduzir seu AIC, portanto, a primeira linha em qualquer etapa é sua melhor opção. Depois, existe um +dispna terceira linha, porque adicionar essa variável ao seu modelo seria sua terceira melhor opção para diminuir o seu AIC. Mas, obviamente, como sua melhor alternativa é <none>, isso significa não fazer nada, o procedimento é interrompido e fornece os mesmos resultados da seleção para trás.

Ayar Paco
fonte