在r中绘制预测值

时间:2012-08-06 14:28:10

标签: r

我有月度数据,我想绘制预测值:

z <- structure(list(Date = structure(c(14610, 14641, 14669, 14700, 
14730, 14761, 14791, 14822, 14853, 14883, 14914, 14944, 14975, 
15006, 15034, 15065, 15095, 15126, 15156, 15187, 15218, 15248, 
15279, 15309, 15340, 15371, 15400, 15431, 15461), class = "Date"), 
    Value = c(4.5e+07, 5.1e+07, 5.6e+07, 5.6e+07, 5.9e+07, 6e+07, 
    6e+07, 6e+07, 6.4e+07, 6.5e+07, 7.5e+07, 7.3e+07, 7.4e+07, 
    8e+07, 8.7e+07, 9.1e+07, 9.2e+07, 9.6e+07, 1.09e+08, 1.08e+08, 
    1.23e+08, 1.29e+08, 1.33e+08, 1.43e+08, 1.27e+08, 1.27e+08, 
    1.23e+08, 1.21e+08, 1.3e+08)), .Names = c("Date", "Value"
), row.names = c(NA, -29L), class = "data.frame")

a <- seq(as.Date(tail(z, 1)$Date), by="month", length=5) 
a <- data.frame(Date = a) 
z.lm <- lm(Value ~ Date, data=x) 
z.pre<-predict(z.lm, newdata=a)

我可以将z数据绘制为: 这有效:

 plot(z$Date, z$Value, type="l", col="blue", 
      xlim=(c(as.Date(head(x,1)$Date)), c(as.Date(tail(a,1)$Date)), xaxt="n"))

 axis(1, z$Date, format(z$Date, "%b %Y"), cex.axis = .7) 

当我尝试将预测值绘制为:

lines(z.pre, col="red")

我没有收到错误,但我没有看到红线图添加到原始图中。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您需要正确指定xlimylim个参数。其中每个都应该是长度为2的数字向量。

函数range()对此非常方便。尝试:

plot(x$Date, x$Value, type="l", col="blue", xaxt="n",
     xlim=range(c(a$Date, x$Date)),
     ylim=range(c(z.pre, x$Value))
)

axis(1, x$Date, format(x$Date, "%b %Y"), cex.axis = .7) 

lines(a$Date, z.pre, col="red")

enter image description here