Поетапна регресія в R - Як це працює?


15

Я намагаюся зрозуміти основну різницю між покроковою і зворотною регресією в R за допомогою функції кроку. Для поетапної регресії я використав таку команду

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

Я отримав нижче вихід для вищевказаного коду.

вперед

Для вибору зворотної змінної я використав таку команду

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

І я отримав нижчий вихід для відсталого

відсталий

Наскільки я зрозумів, коли жоден параметр не вказаний, ступінчастий вибір виступає як зворотний, якщо параметри "верхній" і "нижній" не вказані в Р. Тим не менш, у висновку поетапного вибору є + disp, який додається в 2-й крок. Якої функції намагається досягти, додавши + disp знову у покроковому виділенні? Чому R додає + disp на другому кроці, тоді як результати такі ж (значення AIC та значення вибору моделі), як і назад. Яким чином R точно працює у покроковому відборі?

Я дуже хочу зрозуміти, як ця функція працює в Р. Дякую заздалегідь за допомогу!

Відповіді:


17

Можливо, було б простіше зрозуміти, як здійснюється покрокова регресія, переглянувши всі 15 можливих lm-моделей.

Ось швидке повідомлення для створення формули для всіх 15 комбінацій.

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>

Значення AIC для кожної моделі витягуються за допомогою:

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

Повернемося до вашої крокової регресії. Значення extraAIC для lm (mpg ~ wt + drat + disp + qsec) становить 65,63 (еквівалентно моделі 15 у списку вище).

Якщо модель видалити disp (-disp), то lm (mpg ~ wt + drat + qsec) становить 63.891 (або модель 11 у списку).

Якщо модель нічого не видаляє (жодного), то AIC все ще 65,63

Якщо модель видалити qsec (-qsec), то lm (mpg ~ wt + drat + disp) дорівнює 65.908 (модель 12).

тощо.

В основному, підсумки розкривають все можливе поетапне вилучення однозначного терміну з вашої повної моделі та порівняють значення ExtraAIC, перераховуючи їх у порядку зростання. Оскільки менше значення AIC швидше нагадує модель ІСТИНА, крок збереже (-disp) модель на першому кроці.

Процес повторюється знову, але із збереженою (-дисп) моделлю як вихідною точкою. Умови або віднімаються ("назад"), або віднімаються / додаються ("обидва"), щоб дозволити порівняння моделей. Оскільки найнижчим значенням AIC у порівнянні все ще є (-disp) модель, зупинка процесу та наведені результати моделей.

Що стосується вашого запиту: "Якої функції намагаються досягти, додавши + disp знову при поетапному виборі?", В цьому випадку це насправді нічого не робить, тому що найкраща модель з усіх 15 моделей - модель 11 , тобто lm (mpg ~ wt + drat + qsec).

Однак у складних моделях з великою кількістю предикторів, які потребують численних кроків, щоб вирішити, додавання терміна, який було видалено спочатку, є критичним для забезпечення найбільш вичерпного способу порівняння термінів.

Сподіваюся, що ця допомога в чомусь допоможе.


6
"Оскільки менше значення AIC швидше нагадує модель ІСТИНА", це пряма помилка. Поетапна
Алексіс,

2
Очевидно, це брехня. Ось чому вибір моделей на основі єдиних критеріїв (як ступінчаста регресія) є наївною.
Адам Квек

@Alexis любить ваші рекомендації у своїй відповіді за посиланням.
Адам Кек

3

Тут спрощена відповідь. По-перше, обидві процедури намагаються зменшити АПК даної моделі, але вони роблять це різними способами. Тоді, основна відмінність полягає в тому, що в процедурі відбору назад ви можете відкинути змінні від моделі на будь-якому кроці, тоді як при поетапному виділенні ви також можете додавати змінні в модель.

Щодо результатів у покроковому виборі, загалом вихідний показник показує вам упорядковані альтернативи для зменшення АПК, тому перший рядок на будь-якому кроці - найкращий варіант. Потім, +dispв третьому ряду є, оскільки додавання цієї змінної до вашої моделі буде вашим третім найкращим варіантом для зменшення AIC. Але очевидно, що, як ваша найкраща альтернатива <none>, це означає, що нічого не робити, процедура зупиняється і дає ті ж результати, що і при відборі назад.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.