Як використовувати stepaic у r для вибору функцій
Інформаційний критерій Akaike ( AIC ) — це показник, який використовується для кількісного визначення того, наскільки модель відповідає набору даних.
Він розраховується таким чином:
AIC = 2K – 2 ln (L)
золото:
- K: Кількість параметрів моделі. Значення K за замовчуванням дорівнює 2, тому модель лише з однією змінною предиктора матиме значення K 2+1 = 3.
- ln (L) : логарифм правдоподібності моделі. Більшість статистичних програм можуть автоматично обчислити це значення для вас.
AIC розроблено, щоб знайти модель, яка пояснює найбільшу варіацію в даних, водночас штрафуючи моделі, які використовують надмірну кількість параметрів.
Ви можете використовувати функцію stepAIC() із пакета MASS у R, щоб ітеративно додавати та видаляти змінні предикторів із регресійної моделі, доки не знайдете набір змінних предикторів (або «функцій»), які створюють модель із найнижчим значенням AIC.
Ця функція використовує такий базовий синтаксис:
stepAIC(об’єкт, напрямок, …)
золото:
- об’єкт : назва налаштованої моделі
- напрямок : тип покрокового пошуку для використання («назад», «вперед» або «обидва»)
У наступному прикладі показано, як використовувати цю функцію на практиці.
Приклад: використання 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 шляхом додавання або видалення змінних.
Отже, остаточна модель:
hp = 441,26 + 38,67 (вага) – 23,47 (qsec)
Ця модель має значення AIC 224,56 .
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові завдання в R:
Як виконати множинну лінійну регресію в R
Як виконати кускову регресію в R
Як виконати сплайн-регресію в R