当使用原始数据作为输入时,R 中的 predict() 函数返回的预测值是多少?

机器算法验证 r 回归
2022-03-28 16:28:17

在数据集上运行表单回归后reg <- lm(y ~ x1 + x2, data=example),我可以使用

predict(reg, example, interval="prediction", level=0.95)

我想知道当我使用回归来预测实际数据集时,预测值实际上指的是什么。我不应该获得原始值吗?

1个回答

您正在使用的模型采用以下形式

yi=μ+β1x1i+β2x2i+ϵi (1)

在哪里ϵi是假设来自零均值正态分布的误差项。

您已经拟合了模型并获得了估计值:μ^,β^1, 和β^2.

现在,如果您将协变量值固定在其范围内,例如x1ix2i, 的预测值yi可以通过计算得到

yi=μ^+β^1x1i+β^2x2i (2)

如果您的模型完全适合您的数据,那么预测值就是实际值。但是,总的来说,y值不能精确地作为简单的线性组合获得x值(“所有模型都是错误的,但有些是有用的”)。换句话说,(1)中误差项的方差一般不为零。但是,基本上,模型 (1) 是一个很好的近似值,如果残差yiyi(或这些的缩放版本)是“小”的。

编辑

在您的评论中,您询问了predict()实际操作。这是一个简单的说明性示例。

    #generate a simple illustrative data set
> x <- runif(10)
> y <- 5 + 2.7 * x + rnorm(10, mean=0, sd=sqrt(0.15))
> 
>   #fit the model and store the coefficients
> regLin <- lm(y~x)
> coef <- coef(regLin)
> 
>   #use the predict() function
> y_star2 <- predict(regLin)
>   #use equation (2)
> y_star1 <- coef[1] + coef[2] * x
>   #compare
> cbind(y, y_star1, y_star2) 
          y  y_star1  y_star2
1  7.100217 6.813616 6.813616
2  6.186333 5.785473 5.785473
3  7.141016 7.492979 7.492979
4  5.121265 5.282990 5.282990
5  4.681924 4.849776 4.849776
6  6.102339 6.106751 6.106751
7  7.223215 7.156512 7.156512
8  5.158546 5.253380 5.253380
9  7.160201 7.198074 7.198074
10 5.555289 5.490793 5.490793