Как использовать функцию 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *