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


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

#define new observation
new <- data.frame(x1=c(5), x2=c(10), x3=c(12.5))

#use fitted model to predict the response value for the new observation
predict(model, newdata=new)

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

Пример. Прогнозирование значений с использованием подобранной модели множественной линейной регрессии

Предположим, у нас есть следующий набор данных в R, который содержит информацию о баскетболистах:

#create data frame
df <- data.frame(rating=c(67, 75, 79, 85, 90, 96, 97),
 points=c(8, 12, 16, 15, 22, 28, 24),
 assists=c(4, 6, 6, 5, 3, 8, 7),
 rebounds=c(1, 4, 3, 3, 2, 6, 7))

#view data frame
df

 rating points assists rebounds
1 67 8 4 1
2 75 12 6 4
3 79 16 6 3
4 85 15 5 3
5 90 22 3 2
6 96 28 8 6
7 97 24 7 7

Теперь предположим, что мы подгоняем модель множественной линейной регрессии, используя очки , передачи и подборы в качестве переменных-предикторов и рейтинг в качестве переменной ответа :

#fit multiple linear regression model
model <- lm(rating ~ points + assists + rebounds, data=df)

#view model summary
summary(model)

Call:
lm(formula = rating ~ points + assists + rebounds, data = df)

Residuals:
 1 2 3 4 5 6 7 
-1.5902 -1.7181 0.2413 4.8597 -1.0201 -0.6082 -0.1644 

Coefficients:
 Estimate Std. Error t value Pr(>|t|) 
(Intercept) 66.4355 6.6932 9.926 0.00218 \*\*
points 1.2152 0.2788 4.359 0.02232 \* 
assists -2.5968 1.6263 -1.597 0.20860 
rebounds 2.8202 1.6118 1.750 0.17847 
---
Signif. codes: 0 '\*\*\*' 0.001 '\*\*' 0.01 '\*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.193 on 3 degrees of freedom
Multiple R-squared: 0.9589, Adjusted R-squared: 0.9179 
F-statistic: 23.35 on 3 and 3 DF, p-value: 0.01396

Из значений в столбце Estimate мы можем написать подобранную модель регрессии:

Рейтинг = 66,4355 + 1,2151 (очки) – 2,5968 (передачи) + 2,8202 (подборы)

Мы можем использовать следующий код, чтобы предсказать рейтинг нового игрока, набравшего 20 очков, 5 передач и 2 подбора:

#define new player
new <- data.frame(points=c(20), assists=c(5), rebounds=c(2))

#use the fitted model to predict the rating for the new player
predict(model, newdata=new)

 1 
83.39607

Модель предсказывает, что этот новый игрок будет иметь рейтинг 83,39607 .

Мы можем подтвердить, что это правильно, подставив значения для нового игрока в подходящее уравнение регрессии:

  • Рейтинг = 66,4355 + 1,2151 (очки) – 2,5968 (передачи) + 2,8202 (подборы)
  • Рейтинг = 66,4355 + 1,2151(20) – 2,5968(5) + 2,8202(2)
  • Рейтинг = 83,39

Это соответствует значению, которое мы рассчитали с помощью функции predict() в R.

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

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

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.