Як використовувати функцію 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