Como usar stepaic em r para seleção de recursos
O Critério de Informação de Akaike ( AIC ) é uma métrica usada para quantificar quão bem um modelo se ajusta a um conjunto de dados.
É calculado da seguinte forma:
AIC = 2K – 2 ln (L)
Ouro:
- K: O número de parâmetros do modelo. O valor padrão de K é 2, portanto, um modelo com apenas uma variável preditora terá um valor K de 2+1 = 3.
- ln (L) : A probabilidade logarítmica do modelo. A maioria dos softwares estatísticos pode calcular automaticamente esse valor para você.
O AIC foi projetado para encontrar o modelo que explica a maior variação nos dados, ao mesmo tempo que penaliza modelos que utilizam um número excessivo de parâmetros.
Você pode usar a função stepAIC() do pacote MASS em R para adicionar e remover iterativamente variáveis preditoras de um modelo de regressão até encontrar o conjunto de variáveis preditoras (ou “recursos”) que produz o modelo com o valor AIC mais baixo.
Esta função usa a seguinte sintaxe básica:
stepAIC(objeto, direção,…)
Ouro:
- object : O nome de um modelo ajustado
- direção : o tipo de pesquisa passo a passo (“para trás”, “para frente” ou “ambos”)
O exemplo a seguir mostra como usar esta função na prática.
Exemplo: usando stepAIC() para seleção de recursos em R
Para este exemplo, usaremos o conjunto de dados mtcars integrado ao R, que contém medições de 11 atributos diferentes para 32 carros diferentes:
#view first six rows of mtcars dataset
head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3,460 20.22 1 0 3 1
Suponha que queiramos ajustar um modelo de regressão usando hp como variável de resposta e as seguintes variáveis preditoras potenciais:
- mpg
- peso
- merda
- qsec
Podemos usar a função stepAIC() do pacote MASS para adicionar e subtrair várias variáveis preditoras do modelo até chegarmos ao modelo com o valor AIC mais baixo possível:
library (MASS)
#fit initial multiple linear regression model
model <- lm(hp ~ mpg + wt + drat + qsec, data=mtcars)
#use both forward and backward selection to find model with lowest AIC
stepAIC(model, direction=" both ")
Start: AIC=226.88
hp ~ mpg + wt + drat + qsec
Df Sum of Sq RSS AIC
- drat 1 94.9 28183 224.98
- mpg 1 1519.4 29608 226.56
none 28088 226.88
- wt 1 3861.9 31950 229.00
-qsec 1 28102.2 56190 247.06
Step: AIC=224.98
hp ~ mpg + wt + qsec
Df Sum of Sq RSS AIC
- mpg 1 1424.5 29608 224.56
none 28183 224.98
+ drat 1 94.9 28088 226.88
- wt 1 3797.9 31981 227.03
-qsec 1 29625.1 57808 245.97
Step: AIC=224.56
hp ~ wt + qsec
Df Sum of Sq RSS AIC
none 29608 224.56
+ mpg 1 1425 28183 224.98
+ drat 1 0 29608 226.56
- wt 1 43026 72633 251.28
-qsec 1 52881 82489 255.35
Call:
lm(formula = hp ~ wt + qsec, data = mtcars)
Coefficients:
(Intercept) wt qsec
441.26 38.67 -23.47
Veja como interpretar o resultado:
(1) Primeiro, começamos ajustando um modelo de regressão com as quatro variáveis preditoras. Este modelo tem um valor AIC de 226,88 .
(2) Em seguida, stepAIC determina que a remoção de drat como variável preditora reduzirá ainda mais o valor AIC para 224,98 .
(3) Em seguida, o modelo stepAIC determina que a remoção de mpg como variável preditora reduzirá ainda mais o valor AIC para 224,56 .
(4) Finalmente, o stepAIC determina que não há como reduzir ainda mais o valor do AIC adicionando ou removendo variáveis.
O modelo final é portanto:
HP = 441,26 + 38,67 (peso) – 23,47 (qseg)
Este modelo tem um valor AIC de 224,56 .
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns em R:
Como realizar regressão linear múltipla em R
Como realizar regressão por partes em R
Como realizar regressão spline em R