如何在 r 中使用 glm 的预测函数(带有示例)


R 中的glm()函数可用于拟合广义线性模型。此功能对于拟合逻辑回归模型泊松回归模型和其他复杂模型特别有用。

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

该函数使用以下语法:

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

金子:

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

以下示例展示了如何在 R 中拟合广义线性模型,以及如何使用该模型来预测以前从未见过的新观测值的响应值。

示例:在 R 中使用带有 glm 的预测函数

对于此示例,我们将使用名为mtcars的内置 R 数据集:

 #view first six rows of mtcars data frame
head(mtcars)

                   mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3,460 20.22 1 0 3 1

我们将拟合以下逻辑回归模型,其中使用变量disphp来预测响应变量am (汽车的变速箱类型:0 = 自动,1 = 手动)。

 #fit logistic regression model
model <- glm(am ~ disp + hp, data=mtcars, family=binomial)

#view model summary
summary(model)

Call:
glm(formula = am ~ disp + hp, family = binomial, data = mtcars)

Deviance Residuals: 
    Min 1Q Median 3Q Max  
-1.9665 -0.3090 -0.0017 0.3934 1.3682  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)  
(Intercept) 1.40342 1.36757 1.026 0.3048  
available -0.09518 0.04800 -1.983 0.0474 *
hp 0.12170 0.06777 1.796 0.0725 .
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 43,230 on 31 degrees of freedom
Residual deviance: 16,713 on 29 degrees of freedom
AIC: 22,713

Number of Fisher Scoring iterations: 8

然后,我们可以使用此模型来使用以下代码来预测新车拥有自动变速箱 (am=0) 或手动变速箱 (am=1) 的概率:

 #define new observation
newdata = data. frame (disp=200, hp=100)

#use model to predict value of am
predict(model, newdata, type=" response ")

         1 
0.00422564

该模型预测新车配备手动变速箱(am=1)的概率为0.004 。这意味着这款新车很有可能会配备自动变速箱。

请注意,如果我们有一个包含多辆新车的数据库,我们也可以一次进行多个预测。

例如,以下代码展示了如何使用拟合模型来预测三辆新车采用手动变速箱的概率:

 #define new data frame of three cars
newdata = data. frame (disp=c(200, 180, 160),
                     hp=c(100, 90, 108))

#view data frame
newdata

  hp disp
1,200 100
2 180 90
3,160,108

#use model to predict value of am for all three cars
predict(model, newdata, type=" response ")

          1 2 3 
0.004225640 0.008361069 0.335916069 

以下是如何解释结果:

  • 汽车 1 配备手动变速箱的概率为0.004
  • 汽车 2 配备手动变速箱的概率为0.008
  • 汽车 3 配备手动变速箱的概率为0.336

评论

新数据框中的列名称必须与用于创建模型的数据框中的列名称完全匹配。

请注意,在前面的示例中,我们用于创建模型的数据框包含预测变量的以下列名称:

  • 展示
  • 生命值

因此,当我们创建名为newdata 的新数据框时,我们也要确保为列命名:

  • 展示
  • 生命值

如果列名称不匹配,您将收到以下错误消息:

eval 错误(predvars、数据、env)

使用Predict()函数时请记住这一点。

其他资源

以下教程解释了如何在 R 中执行其他常见任务:

如何在 R 中执行简单线性回归
如何在 R 中执行多元线性回归
如何在 R 中执行多项式回归
如何在 R 中创建预测区间

添加评论

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