我有时间序列数据:
输出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 :(得分: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年的预测。我相信data.frame(x=1997:2000)
中的“x”必须与放入lm()
的变量匹配为x变量。在你的情况下,它有一个美元符号访问器,这使整个事情更复杂。我只是采用上面的方法,将输入到lm()
函数中的x组件重命名为有效的变量名,稍后可以引用。