Пошаговая регрессия в 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")

И я получил ниже вывод для обратной

назад

Насколько я понял, когда не указан ни один параметр, пошаговое выделение действует как обратный, если в R. не указаны параметры "верхний" и "нижний". Однако в выводе пошагового выделения есть + disp, который добавляется в 2-й шаг. Чего пытается добиться функция, снова добавив + disp в пошаговом выборе? Почему R добавляет + disp на 2-м шаге, тогда как результаты совпадают (значения AIC и значения выбора модели) с обратным выбором. Как именно R работает в пошаговом выборе?

Я очень хочу понять, как эта функция работает в R. Заранее спасибо за помощь!

Ответы:


16

Возможно, было бы легче понять, как осуществляется поэтапная регрессия, если посмотреть на все 15 возможных моделей ЛМ.

Вот быстрый способ создать формулу для всех 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

Давайте вернемся к вашей ступенчатой ​​регрессии. Значение extractAIC для 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).

и т.п.

По сути, в сводке раскрываются все возможные пошаговые исключения однократных выражений из вашей полной модели и сравнивается значение extractAIC, перечисляя их в порядке возрастания. Поскольку меньшее значение AIC, скорее всего, будет напоминать модель TRUTH, при первом шаге сохраните модель (-disp).

Процесс повторяется снова, но с сохраненной (-disp) моделью в качестве отправной точки. Термины либо вычитаются («назад»), либо вычитаются / добавляются («оба») для сравнения моделей. Поскольку самым низким значением AIC для сравнения по-прежнему является модель (-disp), приводятся остановка процесса и результирующие модели.

Что касается вашего запроса: «Чего пытается достичь функция, снова добавив + disp в пошаговом выделении?», В этом случае она ничего не делает, потому что лучшая модель из всех 15 моделей - модель 11 то есть lm (mpg ~ wt + drat + qsec).

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

Надеюсь, что это поможет в некотором роде.


6
«Поскольку меньшее значение AIC скорее всего будет напоминать модель ИСТИНА», то это ложное утверждение. Пошаговое построение модели примерно с такой же вероятностью сохранит ложные предикторы, как и отклонение истинных предикторов ... среди множества других проблем: stats.stackexchange.com/questions/115843/…
Алексис

2
Очевидно, это ложь. Вот почему выбор модели на основе одного критерия (например, ступенчатая регрессия) немного наивен.
Адам Квек

@ Алексис любит ваши рекомендации в ответе по ссылке.
Адам Квек

3

Здесь упрощенный ответ. Во-первых, обе процедуры пытаются уменьшить AIC данной модели, но они делают это по-разному. Тогда основное отличие состоит в том, что в процедуре обратного выбора вы можете отбрасывать только переменные из модели на любом этапе, тогда как при пошаговом выборе вы также можете добавлять переменные в модель.

Что касается вывода в пошаговом выборе, то в общем случае вывод показывает, что вы заказали альтернативы для уменьшения AIC, поэтому первая строка на любом шаге - ваш лучший вариант. Затем +dispв третьем ряду есть, потому что добавление этой переменной в вашу модель будет вашим третьим лучшим вариантом для уменьшения AIC. Но, очевидно, поскольку ваша лучшая альтернатива означает <none>, что вы ничего не делаете, процедура останавливается и дает вам те же результаты, что и при обратном выборе.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.