Как показать дату вместо периодов по оси x на графике прогноза временных рядов?

У меня есть простой набор данных временных рядов: 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, что имеет смысл для объяснения моих данных.
Но я теряюсь в тоннах объяснений в Интернете, терпя неудачу с каждым найденным методом.
Я очень признателен, если кто-нибудь может помочь с этим вопросом.


person HW-Scientist    schedule 29.11.2017    source источник
comment
Пожалуйста, поделитесь выводом dput(df1) или head(dput(df1),60) в описании вопроса, чтобы кто-то мог легко воспроизвести data.frame с вашей стороны и выработать решение.   -  person tushaR    schedule 29.11.2017
comment
Спасибо за предложение, но я не понял, как это работает...   -  person HW-Scientist    schedule 10.01.2018


Ответы (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) )

Последние две строки по существу копируют подход отсюда Заменить ось X собственными значениями.

Вы можете редактировать метки и их расположение, редактируя параметры 'at=' и 'lables='.

Вот как выглядит результат

person Otto Kässi    schedule 29.11.2017
comment
Если вам надоест построение графиков на основе R, вы также можете взглянуть на это: r-bloggers.com/holt-winters-forecast-using-ggplot2 - person Otto Kässi; 29.11.2017
comment
Большое спасибо, Отто! Я работал со статьей, размещенной на р-блогерах, но пока не получилось. - person HW-Scientist; 10.01.2018
comment
Да, я тоже попробовал функцию r-bloggers. Кажется, что это не работает с текущей версией ggplot2. Жалость. - person Otto Kässi; 18.01.2018