如何在 r 中将 predict() 函数与 lm() 一起使用


R 中的lm()函数可用于拟合线性回归模型。

一旦我们拟合了模型,我们就可以使用predict()函数来预测新观察的响应值。

该函数使用以下语法:

预测(对象,新数据,类型=“响应”)

金子:

  • object:使用glm()函数进行模型调整的名称
  • newdata:要进行预测的新数据框的名称
  • type:要进行的预测的类型。

以下示例演示如何使用lm()函数在 R 中拟合线性回归模型,然后如何使用Predict()函数来预测模型以前从未见过的新观测值的响应值。

示例:在 R 中使用 Predict() 函数和 lm()

假设我们在 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 中创建预测区间

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注