我对数据集应用线性回归:
## 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)
现在我想使用这个拟合函数来知道
的预测值我通过网络找到了这个答案:
y2=predict(f0, data.frame(x=seq(0,100,1)))
但这与我想要的不同。我当然可以使用它们的参数手动实现这些函数,但我希望它具有通用性。
任何暗示欢迎!
答案 0 :(得分:2)
在线性回归中,您的最佳估计(无论您是否具有内部/外部)通常只是计算拟合值。也就是说,你有等式:
$$ y = \ beta_0 + \ beta_1 x_1 + \ dotso + \ beta_k x_k $$
简单地输入值。乘以$ \ beta_j $和sum。简单的方法是将数据存储在向量中。像这样:
$$ y = \ boldsymbol {\ beta}'X $$
其中$ \ boldsymbol {\ beta}'$是系数的行向量$(1 \次k)$和$ X $是列向量$(k \次1)$。因此,$ y $是一个标量(拟合/预测值)。在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)))
使用预测应该是您首选的方式。 它通过名称跟踪变量,因此您不会 必须按正确的顺序组织它才能获得一个吝啬的数字。