Как использовать stepaic в r для выбора функций


Информационный критерий Акаике ( AIC ) — это показатель, используемый для количественной оценки того, насколько хорошо модель соответствует набору данных.

Он рассчитывается следующим образом:

АИК = 2К – 2 ln (L)

Золото:

  • K: Количество параметров модели. Значение K по умолчанию равно 2, поэтому модель только с одной переменной-предиктором будет иметь значение K 2+1 = 3.
  • ln (L) : Логарифмическое правдоподобие модели. Большинство статистических программ могут автоматически рассчитать это значение.

AIC предназначен для поиска модели, которая объясняет наибольшее разнообразие данных, одновременно наказывая модели, использующие чрезмерное количество параметров.

Вы можете использовать функцию StepAIC() из пакета MASS в R для итеративного добавления и удаления переменных-предикторов из модели регрессии, пока не найдете набор переменных-предикторов (или «функций»), который создает модель с наименьшим значением AIC.

Эта функция использует следующий базовый синтаксис:

шагAIC(объект, направление,…)

Золото:

  • объект : имя скорректированной модели.
  • направление : тип используемого пошагового поиска («назад», «вперед» или «оба»)

В следующем примере показано, как использовать эту функцию на практике.

Пример: использование StepAIC() для выбора функций в R

В этом примере мы будем использовать набор данных mtcars , встроенный в R, который содержит измерения по 11 различным атрибутам для 32 разных автомобилей:

 #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

Предположим, мы хотим подогнать модель регрессии, используя hp в качестве переменной отклика и следующие потенциальные переменные-предикторы:

  • миль на галлон
  • масса
  • дерьмо
  • qsec

Мы можем использовать функцию StepAIC() из пакета MASS для добавления и вычитания различных переменных-предикторов из модели, пока не придем к модели с наименьшим возможным значением AIC:

 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  

Вот как интерпретировать результат:

(1) Во-первых, мы начинаем с подбора регрессионной модели с четырьмя переменными-предикторами. Эта модель имеет значение AIC 226,88 .

(2) Затем StepAIC определяет, что удаление drat в качестве предикторной переменной еще больше уменьшит значение AIC до 224,98 .

(3) Далее модель StepAIC определяет, что удаление миль на галлон в качестве предикторной переменной еще больше уменьшит значение AIC до 224,56 .

(4) Наконец, StepAIC определяет, что нет возможности дальнейшего уменьшения значения AIC путем добавления или удаления переменных.

Таким образом, окончательная модель:

хп = 441,26 + 38,67 (вес) – 23,47 (ксек)

Эта модель имеет значение AIC 224,56 .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:

Как выполнить множественную линейную регрессию в R
Как выполнить кусочную регрессию в R
Как выполнить сплайн-регрессию в R

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *