Как использовать predict() с моделью логистической регрессии в r


После того, как мы подогнали модель логистической регрессии в R, мы можем использовать функцию предсказывания() , чтобы предсказать значение ответа нового наблюдения, которого модель никогда раньше не видела.

Эта функция использует следующий синтаксис:

предсказать (объект, новые данные, тип = «ответ»)

Золото:

  • объект: имя модели логистической регрессии.
  • новые данные: имя нового фрейма данных для прогнозирования.
  • type: тип прогноза, который нужно сделать.

В следующем примере показано, как использовать эту функцию на практике.

Пример. Использование Predict() с моделью логистической регрессии в R

В этом примере мы будем использовать встроенный набор данных R под названием mtcars :

 #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

Мы применим следующую модель логистической регрессии, в которой мы используем переменные 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) или механическую коробку передач ( утра =1):

 #define new data frame
newdata = data. frame (disp=c(200, 180, 160, 140, 120, 120, 100, 160),
                     hp=c(100, 90, 108, 90, 80, 90, 80, 90),
                     am=c(0, 0, 0, 1, 0, 1, 1, 1))

#view data frame
newdata

#use model to predict value of am for all new cars
newdata$am_prob <- predict(model, newdata, type=" response ")

#view updated data frame
newdata

  disp hp am am_prob
1 200 100 0 0.004225640
2 180 90 0 0.008361069
3 160 108 0 0.335916069
4 140 90 1 0.275162866
5 120 80 0 0.429961894
6 120 90 1 0.718090728
7 100 80 1 0.835013994
8 160 90 1 0.053546152

Вот как интерпретировать результат:

  • Вероятность того, что у автомобиля 1 механическая коробка передач, равна 0,004 .
  • Вероятность того, что у автомобиля 2 механическая коробка передач, равна 0,008 .
  • Вероятность того, что у автомобиля 3 механическая коробка передач, равна 0,336 .

И так далее.

Мы также можем использовать функцию table() для создания матрицы путаницы, которая отображает фактические значения am в сравнении со значениями, предсказанными моделью:

 #create vector that contains 0 or 1 depending on predicted value of am
am_pred = rep(0, dim(newdata)[1])
am_pred[newdata$am_prob > .5] = 1

#create confusion matrix
table(am_pred, newdata$am)

am_pred 0 1
      0 4 2
      1 0 2

Наконец, мы можем использовать функцию Mean() для расчета процента наблюдений в новой базе данных, для которых модель правильно предсказала значение am :

 #calculate percentage of observations the model correctly predicted response value for
mean(am_pred == newdata$am)

[1] 0.75

Мы видим, что модель правильно предсказала значение am для 75% автомобилей в новой базе данных.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:

Как выполнить простую линейную регрессию в R
Как выполнить множественную линейную регрессию в R
Как выполнить полиномиальную регрессию в R
Как создать интервал прогнозирования в R

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *