R语言一直对我来说有点神秘 - 所以虽然我知道线性回归是什么 - 下面的一些语法让我感到厌烦。
所以说我有以下内容:
x <- c(1, 2, 3, 4)
y <- c(2.1, 3.8, 6.5, 7.78)
lm1 <- lm(y~x)
我的理解是lm1包含线性模型,当我打印出来时确认(我认为):
> lm1
Call:
lm(formula = y ~ x)
Coefficients:
(Intercept) x
0.110 1.974
现在,当我想在生产模式下运行时,我会执行以下操作(我想预测x = 10和x = 20的值:
test <- c(10,20)
predict(lm1, test)
我得到以下内容:
eval中的错误(predvars,data,env):数字'envir'arg不是 长度一
任何帮助表示感谢。
> dput(x)
c(1, 2, 3, 4)
> dput(y)
c(2.1, 3.8, 6.5, 7.78)
> dput(test)
c(10, 20)
答案 0 :(得分:7)
predict()
需要newdata=
参数作为data.frame。它使用data.frame中列的名称来匹配公式中的变量。当您的模型具有多个预测变量时,这尤其必要。
你可以做到
predict(lm1, data.frame(x=test))
同样最好使用data.frame来适应您的模型。
dd<-data.frame(
x = c(1, 2, 3, 4),
y = c(2.1, 3.8, 6.5, 7.78)
)
lm1 <- lm(y~x, dd)
predict(lm1, data.frame(x=c(10,20)))
这通常会导致更少的惊喜。&#34;