0

我有一个时间序列数据:

x数据帧的输出:

Date  vol
1990  12
1991  13
1992  15
1994  18
1995  20
1996  35

我正在尝试绘制这些数据并预测未来 4 年,如下所示:

plot(x$Date, x$vol, col="blue")
x.lm<-lm(x$Vol ~ x$Date)
x.pre<-predict(x.lm, n.ahead=4)
abline(x.pre, col="red")

我收到此错误:

Error in int_abline(a = a, b = b, h = h, v = v, untf = untf, ...) : 
  invalid a=, b= specification

谁能告诉我我做错了什么?

4

1 回答 1

4

您在 中将“Vol”大写x.lm<-lm(x$Vol ~ x$Date)

尝试

x.lm<-lm(x$vol ~ x$Date)

此外,如果不进行一些额外的修改,您将无法像这样传递predict()into的值。abline由于您没有进行任何复杂的预测,而只是想绘制线性拟合,您可以使用

abline(x.lm, col="red")

如果您将变量分开,然后在 中使用 newdata 参数predict,您应该能够获得实际的预测。这可能是最干净的方法。例如:

y <- x$vol
x <- x$Date
x.lm <- lm(y~x)
predict(x.lm, data.frame(x=1997:2000))

这将返回 1997 - 2000 年的预测。我相信“x”中的“x”data.frame(x=1997:2000)必须与您lm()作为 x 变量输入的变量匹配。在您的情况下,它有一个美元符号访问器,这使整个事情变得更加复杂。我只是采用上面的方法,并将输入到您的lm()函数中的 x 组件重命名为可以稍后引用的有效变量名。

于 2012-04-17T18:30:14.917 回答