Как использовать функцию прогнозирования с glm в r (с примерами)
Функцию glm() в R можно использовать для подгонки обобщенных линейных моделей. Эта функция особенно полезна для подбора моделей логистической регрессии ,моделей регрессии Пуассона и других сложных моделей.
После того, как мы подогнали модель, мы можем использовать функцию предсказывания() , чтобы предсказать значение ответа нового наблюдения.
Эта функция использует следующий синтаксис:
предсказать (объект, новые данные, тип = «ответ»)
Золото:
- объект: имя корректировки модели с помощью функции glm().
- новые данные: имя нового фрейма данных для прогнозирования.
- type: Тип прогноза, который нужно сделать.
В следующем примере показано, как подогнать обобщенную линейную модель в R и как затем использовать ее для прогнозирования значения отклика нового наблюдения, которого она никогда раньше не видела.
Пример: использование функции прогноза с glm в R
В этом примере мы будем использовать встроенный набор данных R под названием mtcars :
#view first six rows of mtcars data frame
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
Мы применим следующую модель логистической регрессии, в которой мы используем переменные disp и hp для прогнозирования переменной ответа am (тип трансмиссии автомобиля: 0 = автоматическая, 1 = ручная).
#fit logistic regression model model <- glm(am ~ disp + hp, data=mtcars, family=binomial) #view model summary summary(model) Call: glm(formula = am ~ disp + hp, family = binomial, data = mtcars) Deviance Residuals: Min 1Q Median 3Q Max -1.9665 -0.3090 -0.0017 0.3934 1.3682 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 1.40342 1.36757 1.026 0.3048 available -0.09518 0.04800 -1.983 0.0474 * hp 0.12170 0.06777 1.796 0.0725 . --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 43,230 on 31 degrees of freedom Residual deviance: 16,713 on 29 degrees of freedom AIC: 22,713 Number of Fisher Scoring iterations: 8
Затем мы можем использовать эту модель для прогнозирования вероятности того, что новый автомобиль будет иметь автоматическую коробку передач (am=0) или механическую коробку передач (am=1), используя следующий код:
#define new observation
newdata = data. frame (disp=200, hp=100)
#use model to predict value of am
predict(model, newdata, type=" response ")
1
0.00422564
Модель предсказывает, что вероятность того, что новый автомобиль будет иметь механическую коробку передач (am=1), равна 0,004 . Это означает, что весьма вероятно, что этот новый автомобиль будет оснащен автоматической коробкой передач.
Обратите внимание, что мы также можем сделать несколько прогнозов одновременно, если у нас есть база данных, содержащая несколько новых автомобилей.
Например, следующий код показывает, как использовать подобранную модель для прогнозирования вероятности наличия механической коробки передач для трех новых автомобилей:
#define new data frame of three cars
newdata = data. frame (disp=c(200, 180, 160),
hp=c(100, 90, 108))
#view data frame
newdata
hp disp
1,200 100
2 180 90
3,160,108
#use model to predict value of am for all three cars
predict(model, newdata, type=" response ")
1 2 3
0.004225640 0.008361069 0.335916069
Вот как интерпретировать результат:
- Вероятность того, что у автомобиля 1 механическая коробка передач, равна 0,004 .
- Вероятность того, что у автомобиля 2 механическая коробка передач, равна 0,008 .
- Вероятность того, что у автомобиля 3 механическая коробка передач, равна 0,336 .
Комментарии
Имена столбцов в новом фрейме данных должны точно совпадать с именами столбцов в фрейме данных, которые использовались для создания модели.
Обратите внимание, что в нашем предыдущем примере кадр данных, который мы использовали для создания модели, содержал следующие имена столбцов для наших переменных-предикторов:
- отображать
- HP
Поэтому, когда мы создали новый фрейм данных под названием newdata, мы также позаботились о присвоении имен столбцам:
- отображать
- HP
Если имена столбцов не совпадают, вы получите следующее сообщение об ошибке:
Ошибка в оценке (predvars, data, env)
Имейте это в виду при использовании функции предсказывания() .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:
Как выполнить простую линейную регрессию в R
Как выполнить множественную линейную регрессию в R
Как выполнить полиномиальную регрессию в R
Как создать интервал прогнозирования в R