Як використовувати функцію прогнозування з glm у r (з прикладами)


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

Коли ми підігнали модель, ми можемо використовувати функцію predict() для прогнозування значення відповіді нового спостереження.

Ця функція використовує такий синтаксис:

predict(object, newdata, type = “response”)

золото:

  • об’єкт: ім’я коригування моделі за допомогою функції glm().
  • newdata: ім’я нового кадру даних, для якого потрібно робити прогнози
  • тип: тип прогнозу, який потрібно зробити.

У наступному прикладі показано, як підігнати узагальнену лінійну модель у 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

Якщо назви стовпців не збігаються, ви отримаєте таке повідомлення про помилку:

Помилка в eval (predvars, data, env)

Майте це на увазі під час використання функції predict() .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання в R:

Як виконати просту лінійну регресію в R
Як виконати множинну лінійну регресію в R
Як виконати поліноміальну регресію в R
Як створити інтервал передбачення в R

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *