如何使用用于预测的回归 lm 函数

How to use a regression lm function used for prediction

我对数据集应用线性回归:

## Random set 
set.seed(123)
i0=0
imax = 100
x = seq(0,imax,1)
y = c(i0)
for( i in 1:imax ){
i1 = rnorm( n = 1, mean = i0, sd = 1)   
y = c( y, i1 )
i0 = i1
}
plot(x,y)

## Build a data frame out of it
d0 = data.frame( x, y )

## Apply a linear regression 
f0 = lm( d0$y ~ d0$x )

## Plot the fitted function
abline(f0)

现在我想使用这个拟合函数来了解

的预测值
  1. 内插值(例如 x=3.5)
  2. 外推值(例如 x=110)

我在网上只找到了这个答案:

y2=predict(f0, data.frame(x=seq(0,100,1)))

但这和我想要的不一样。我当然可以使用它们的参数手动实现这些功能,但我想让它通用。

欢迎任何提示!

在线性回归中,您的最佳估计(无论您是否 inter/extra 推算)始终只是计算拟合值。也就是说,您有等式:

$$ y = \beta_0 + \beta_1 x_1 + \dotso + \beta_k x_k $$

您只需输入值即可。乘以 $\beta_j$,然后求和。做到这一点的简单方法是将数据存储在向量中。像这样:

$$ y = \boldsymbol{\beta}'X $$

其中 $\boldsymbol{\beta}'$ 是系数 $(1 \times k)$ 的行向量,$X$ 是列向量 $(k \times 1)$。因此 $y$ 是一个标量(fitted/predicted 值)。在 R 中它会像:

# Generate data:
x <- rgamma(n = 1000, shape =  2)
y <- 5 + 0.5*x + rnorm(1000)
reg1 <- lm(y ~ x)

# Now for doing unit prediction:
some_new_x <- 5 # This is the new value of x you wish to predict for
intercept  <- 1 # This is always 1
coef(reg1) %*% c(intercept, some_new_x)

# We can also do predictions for an entire data frame:
x <- seq(from = 1, to = 1000, by = 1)
predict(reg1, newdata = data.frame(cbind(1, x)))

使用预测确实应该是您的首选方式。 它按名称跟踪变量,因此您不必 必须以正确的顺序组织它才能得到一个有意义的数字。