2012-04-17 83 views
0

我有时间序列数据:图纸预测线在R图

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 

有人可以告诉我我做错了什么吗?

+0

我建议你仔细阅读'?abline',并将其与'?lines'进行比较,并考虑您的'abline'调用是否具有任何意义,参考文档。 – joran 2012-04-17 18:42:45

回答

3

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

尝试

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

而且,你不会是能够的predict()值传递到abline一样,如果没有一些多余的修饰。既然你没有做任何复杂的预测,但真的只是想绘制线性拟合,可以使用绘图

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

如果你分开你的变量,然后使用predict的newdata参数的行,你应该能够得到实际的预测。这可能是最干净的方式。例如:

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

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

+0

我改正了,仍然有问题。 abline(x.pre,col =“red”)命令不起作用 – 2012-04-17 18:34:51

+0

是的,我可以做abline(x.lm,col =“red”),但我希望能够提前预测。你知道怎么做吗? – 2012-04-17 18:46:18

+0

已更新,以处理特定的预测。 – 2012-04-17 19:12:29