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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *