Как использовать функцию predict() с lm() в r
Функцию lm() в R можно использовать для подбора моделей линейной регрессии.
После того, как мы подогнали модель, мы можем использовать функцию предсказывания() , чтобы предсказать значение ответа нового наблюдения .
Эта функция использует следующий синтаксис:
предсказать (объект, новые данные, тип = «ответ»)
Золото:
- объект: имя корректировки модели с помощью функции glm().
- новые данные: имя нового фрейма данных для прогнозирования.
- type: Тип прогноза, который нужно сделать.
В следующем примере показано, как использовать функцию 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 (фолы)
Затем мы можем использовать функцию прогнозирования() , чтобы предсказать, сколько очков наберет игрок, играющий в течение 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)
Имейте это в виду при использовании функции предсказывания() .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:
Как выполнить простую линейную регрессию в R
Как выполнить множественную линейную регрессию в R
Как выполнить полиномиальную регрессию в R
Как создать интервал прогнозирования в R