Skip to main content

R 编程中的 predict() 函数

作者:Prajwal CN

导语

R 中的 predict() 函数可以通过输入的数据预测数值。在 R 编程中,所有涉及建模的方面都会以自己的方式使用 predict() 函数。不过值得注意的是,无论在哪种情况下,predict() 函数的功能都保持不变。

R 语言中 predict() 函数的语法

基于输入的数据,R 语言中的 predict() 函数可以预测数值。

predict(object, newdata, interval)
  • object:从线性模型中继承的类
  • newdata:用于预测的输入数据
  • interval:区间计算类型

prediction() 函数举例

为了预测值,我们首先需要一些数据。在这个例子中,我们可以导入 R 自带的数据库——“Cars”。

df <- datasets::cars

这样,我们构建了一个包含速度 speed 与距离 dist 集合的数据框:

     speed dist
1 4 2
2 4 10
3 7 4
4 7 22
5 8 16
6 9 10
7 10 18
8 10 26
9 10 34
10 11 17

随后,基于这些数据,我们将使用 predict() 预测之后的值。

首先,我们需要为这个数据框计算一个线性模型:

# Creates a linear model 创建线性模型
my_linear_model <- lm(dist~speed, data = df)

# Prints the model results 打印模型结果
my_linear_model

执行以下代码以计算线性模型的结果:

Call:
lm(formula = dist ~ speed, data = df)

Coefficients:
(Intercept) speed
-17.579 3.932

线性模型根据我们输入的数据返回了汽车的速度。现在我们有了模型,就可以应用 predict() 函数了。

# Creating a data frame 创建一个数据框
variable_speed <- data.frame(speed = c(11,11,12,12,12,12,13,13,13,13))

# Fiting the linear model 拟合线性模型
linear_model <- lm(dist~speed, data = df)

# Predicts the future values 预测未来值
predict(linear_model, newdata = variable_speed)

以上代码会产出以下结果:

1        2        3        4        5
25.67740 25.67740 29.60981 29.60981 29.60981
6 7 8 9 10
29.60981 33.54222 33.54222 33.54222 33.54222

在借助了线性模型与之前的数据后,我们成功地预测了未来的距离值。

现在,我们还需检查预测值的“置信度”水平,看看我们的预测有多准确。

预测值的置信度

我们可以借助 predict() 函数中的置信度区间(confidence interval)衡量预测值中的不确定性。

# Input data 输入数据
variable_speed <- data.frame(speed = c(11,11,12,12,12,12,13,13,13,13))

# Fits the model 拟合模型
linear_model <- lm(dist~speed, data = df)

# Predicts the values with confidence interval 在置信度区间中预测值
predict(linear_model, newdata = variable_speed, interval = 'confidence')

以上代码会产出以下输出:

fit      lwr      upr
1 25.67740 19.96453 31.39028
2 25.67740 19.96453 31.39028
3 29.60981 24.39514 34.82448
4 29.60981 24.39514 34.82448
5 29.60981 24.39514 34.82448
6 29.60981 24.39514 34.82448
7 33.54222 28.73134 38.35310
8 33.54222 28.73134 38.35310
9 33.54222 28.73134 38.35310
10 33.54222 28.73134 38.35310

您可以在以上输出中看到预测值的置信区间。

基于这个输出,我们可以预测:行驶速度为11 - 13英里/小时的汽车可能会行驶19.9到31.1英里的距离。

结语

基于之前的数据,predict() 函数可以预测数值,并将这些值拟合至模型中。

您还可以使用置信区间检查预测的准确性。