【问题标题】:How to show to date instead of periods at x-axis in time series forecast plot?如何在时间序列预测图中显示日期而不是 x 轴上的周期?
【发布时间】:2017-11-29 09:08:32
【问题描述】:

我有一个简单的时间序列数据集:df1,格式如下:

    Item | Date     | Var
      1  | 20000101 | 12
      2  | 20000102 | 13
      3  | 20000103 | 16
      4  | 20000104 | 18
      5  | 20000105 | 29
      6  | 20000106 | 36
      ...
      ...
      ...
      ...
      365| 20001231 | 78

我的代码是:

    varts <- ts(df1$var, frequency=7)
    comp <- decompose(varts)
    plot(comp)
    fcmodel <- HoltWinters(varts)
    plot(forecast(fcmodel, h=30, level=c(80,95)))

我得到了一个简单的预测图,但 x 轴的范围是 0 到 50 而不是日期。
我想在 x 轴上显示带有真实日期的图,这对解释我的数据很有意义。
但是我迷失在网络上的大量解释中,我找到的每一种方法都失败了。
如果有人可以帮助解决这个问题,我真的很感激。

【问题讨论】:

  • 请在问题描述中分享dput(df1)head(dput(df1),60) 的输出,以便有人可以轻松地在您的终端复制data.frame 并制定解决方案。
  • 感谢您的建议,但我不知道这是如何工作的......

标签: r forecasting holtwinters


【解决方案1】:
library(forecast)
library(lubridate)

# generate dummy data
df1 <- data.frame(seq(1, 365, 1), seq(as.Date('2000-01-01'), as.Date('2000-12-30'), 1), round(100*runif(365), 0))
names(df1) <- c('item','date','var')

varts <- ts(df1$var, frequency=7)
comp <- decompose(varts)
plot(comp)
fcmodel <- HoltWinters(varts)

plot(forecast(fcmodel, h=30, level=c(80,95)), xaxt='n')
axis(1, at=seq(0, 80,10) , las=2, labels=seq(as.Date('2000-01-01'), as.Date('2000-12-31')+weeks(30), length.out=9) )

最后两行基本上复制了这里Replace X-axis with own values 的方法。

您可以通过编辑“at=”和“lables=”参数来编辑标签及其位置。

【讨论】:

  • 当你厌倦了基础 R 绘图时,你可能还想看看这个:r-bloggers.com/holt-winters-forecast-using-ggplot2
  • 非常感谢,奥托!我一直在研究 r-bloggers 上发布的文章,但现在还没有成功。
  • 是的,我也尝试了 r-bloggers 功能。似乎它不适用于当前版本的 ggplot2。可惜。
猜你喜欢
  • 2015-06-19
  • 2016-02-16
  • 1970-01-01
  • 2020-03-11
  • 2015-08-13
  • 1970-01-01
  • 2021-08-21
  • 2016-01-03
  • 2021-06-24
相关资源
最近更新 更多