Как использовать regsubsets() в r для выбора модели
Вы можете использовать функцию regsubsets() из пакета jumps в R, чтобы найти подмножество переменных-предикторов, которое создает лучшую модель регрессии.
В следующем примере показано, как использовать эту функцию на практике.
Пример. Использование regsubsets() для выбора модели в 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
Мы можем использовать функцию regsubsets() из пакета jumps , чтобы выполнить исчерпывающий поиск и найти лучшую модель регрессии:
library (leaps)
#find best regression model
bestSubsets <- regsubsets(hp ~ mpg + wt + drat + qsec, data=mtcars)
#view results
summary(bestSubsets)
Subset selection object
Call: regsubsets.formula(hp ~ mpg + wt + drat + qsec, data = mtcars)
4 Variables (and intercept)
Forced in Forced out
mpg FALSE FALSE
wt FALSE FALSE
drat FALSE FALSE
qsec FALSE FALSE
1 subsets of each size up to 4
Selection Algorithm: exhaustive
mpg wt drat qsec
1 ( 1 ) "*" " " " " " "
2 (1) " " "*" " " "*"
3 ( 1 ) “*” “*” “ “ “*”
4 ( 1 ) “*” “*” “*” “*”
Звездочки ( * ) внизу результата указывают, какие переменные-предикторы принадлежат лучшей модели регрессии для каждой возможной модели с различным количеством переменных-предикторов.
Вот как интерпретировать результат:
Для модели с одной переменной-предиктором лучшая модель регрессии создается с использованием миль на галлон в качестве переменной-предиктора.
Для модели с двумя переменными-предикторами лучшая модель регрессии создается с использованием wt и qsec в качестве переменных-предикторов.
Для модели с тремя переменными-предикторами лучшая модель регрессии создается с использованием миль на галлон , wt и qsec в качестве переменных-предикторов.
Для модели с четырьмя переменными-предикторами лучшая модель регрессии создается с использованием миль на галлон , wt , drat и qsec в качестве переменных-предикторов.
Обратите внимание, что вы также можете извлечь следующие показатели для каждой модели:
- rsq : значение r в квадрате для каждой модели.
- RSS : Остаточная сумма квадратов для каждой модели.
- adjr2 : скорректированное значение r-квадрата для каждой модели.
- cp : Cp Мальвы для каждой модели.
- bic : значение BIC для каждой модели.
Например, мы можем использовать следующий синтаксис для извлечения подобранного значения R-квадрата для каждой из четырех лучших моделей:
#view adjusted R-squared value of each model
summary(bestSubsets)$adjr2
[1] 0.5891853 0.7828169 0.7858829 0.7787005
По результату мы видим:
- Скорректированное значение R-квадрата для модели с миль на галлон в качестве предикторной переменной составляет 0,589 .
- Скорректированное значение R-квадрата для модели с wt и qsec в качестве переменных-предикторов составляет 0,783 .
- Скорректированное значение R-квадрата для модели с mp g , wt и qsec в качестве переменных-предикторов составляет 0,786 .
- Скорректированное значение R-квадрата для модели с mpg , wt , drat и qsec в качестве предикторных переменных составляет 0,779 .
Эти значения дают нам представление о том, насколько хорошо набор переменных-предикторов предсказал значение переменной ответа, скорректированной на основе количества переменных-предикторов в модели.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:
Как выполнить множественную линейную регрессию в R
Как выполнить кусочную регрессию в R
Как выполнить сплайн-регрессию в R