Як використовувати функцію predict() із lm() у r


Функцію lm() у R можна використовувати для підгонки моделей лінійної регресії.

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

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

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

золото:

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

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

Приклад: використання функції Predict() із lm() у R

Припустимо, у R є наступний кадр даних, який містить інформацію про різних баскетболістів:

 #create data frame
df <- data. frame (minutes=c(5, 10, 13, 14, 20, 22, 26, 34, 38, 40),
                 fouls=c(5, 5, 3, 4, 2, 1, 3, 2, 1, 1),
                 points=c(6, 8, 8, 7, 14, 10, 22, 24, 28, 30))

#view data frame
df

   minutes fouls points
1 5 5 6
2 10 5 8
3 13 3 8
4 14 4 7
5 20 2 14
6 22 1 10
7 26 3 22
8 34 2 24
9 38 1 28
10 40 1 30

Припустімо, ми хочемо застосувати наступну модель множинної лінійної регресії, використовуючи хвилини гри та загальну кількість фолів, щоб передбачити кількість очок, набраних кожним гравцем:

очки = β 0 + β 1 (хвилини) + β 2 (фоли)

Ми можемо використати функцію lm() , щоб адаптувати цю модель:

 #fit multiple linear regression model
fit <- lm(points ~ minutes + fouls, data=df)

#view summary of model
summary(fit)

Call:
lm(formula = points ~ minutes + fouls, data = df)

Residuals:
    Min 1Q Median 3Q Max 
-3.5241 -1.4782 0.5918 1.6073 2.0889 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -11.8949 4.5375 -2.621 0.0343 *  
minutes 0.9774 0.1086 9.000 4.26e-05 ***
fouls 2.1838 0.8398 2.600 0.0354 *  
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.148 on 7 degrees of freedom
Multiple R-squared: 0.959, Adjusted R-squared: 0.9473 
F-statistic: 81.93 on 2 and 7 DF, p-value: 1.392e-05

Використовуючи коефіцієнти з результатів моделі, ми можемо написати підігнане рівняння регресії:

очки = -11,8949 + 0,9774 (хвилини) + 2,1838 (фоли)

Потім ми можемо використати функцію predict() , щоб передбачити, скільки очок набере гравець, який грає протягом 15 хвилин і загалом робить 3 фоли:

 #define new observation
newdata = data. frame (minutes=15, fouls=3)

#use model to predict points value
predict(fit, newdata)

       1 
9.317731

Модель передбачає, що цей гравець набере 9,317731 балів.

Зауважте, що ми також можемо робити кілька прогнозів одночасно, якщо у нас є кадр даних, що містить кілька нових спостережень.

Наприклад, наведений нижче код показує, як використовувати підігнану регресійну модель для прогнозування очок трьох гравців:

 #define new data frame of three cars
newdata = data. frame (minutes=c(15, 20, 25),
                     fouls=c(3, 2, 1))

#view data frame
newdata

  minutes fouls
1 15 3
2 20 2
3 25 1

#use model to predict points for all three players
predict(model, newdata)

        1 2 3 
 9.317731 12.021032 14.724334 

Ось як інтерпретувати результат:

  • Очікувана кількість очок для гравця з 15 хвилинами і 3 фолами становить 9,32 .
  • Очікувана кількість очок для гравця з 20 хвилинами і 2 фолами становить 12,02 .
  • Очікувані очки для гравця з 25 хвилинами і 1 фолом становлять 14,72 .

Примітки щодо використання predict()

Назви стовпців у новому фреймі даних мають точно відповідати іменам стовпців у фреймі даних, які використовувалися для створення моделі.

Зауважте, що в нашому попередньому прикладі кадр даних, який ми використовували для створення моделі, містив такі імена стовпців для наших змінних предиктора:

  • хвилин
  • помилки

Отже, коли ми створили новий фрейм даних під назвою newdata, ми також переконалися, що назвали стовпці:

  • хвилин
  • помилки

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

 Error in eval(predvars, data, env)

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

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

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

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

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

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