理解R

时间:2015-07-05 01:12:56

标签: r

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)

1 个答案:

答案 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;