Анализировать временные ряды без дат - PullRequest
2 голосов
/ 06 апреля 2019

У меня есть такие данные:

dat
# A tibble: 34 x 2
   date_block_num  sales
            <int>  <dbl>
 1              0 131479
 2              1 128090
 3              2 147142
 4              3 107190
 5              4 106970
 6              5 125381
 7              6 116966
 8              7 125291
 9              8 133332
10              9 127541
# ... with 24 more rows

date_block_num - месяц каждого года. sales продажи товара. Например, в исходных данных date_block_num 0 имеет 63 224 строки / дела, поскольку продажи носят дневной характер и относятся к разным товарам в разных магазинах. Было бы также интересно анализировать данные ежедневно, но R не может обработать этот объем данных.

Я хочу разложить временные ряды, чтобы проанализировать тренд, сезонность и случайные компоненты. Всего временной ряд насчитывает 33 месяца (начало: 01.01.2013, конец - 01.10.2015).

Это мой подход.

library(forecast)
ts(dat, frequency = 12) %>%
  decompose() %>%
  autoplot()

enter image description here

Однако, кажется, это неправильно, сравните первый из четырех графиков выше и этот:

plot(dat, type = "l")

enter image description here

structure(list(date_block_num = 0:33, sales = c(131479, 128090, 
147142, 107190, 106970, 125381, 116966, 125291, 133332, 127541, 
130009, 183342, 116899, 109687, 115297, 96556, 97790, 97429, 
91280, 102721, 99208, 107422, 117845, 168755, 110971, 84198, 
82014, 77827, 72295, 64114, 63187, 66079, 72843, 71056)), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -34L))

Ответы [ 2 ]

2 голосов
/ 06 апреля 2019

Проблема в том, что ts(dat) создает двумерный временной ряд:

ts(dat, frequency = 12)
      date_block_num  sales
Jan 1              0 131479
Feb 1              1 128090

И после этого разлагается только первый столбец (date_block_num).Попробуйте это

ts(dat$sales, frequency = 12) %>% 
  decompose() %>%
  autoplot()
2 голосов
/ 06 апреля 2019

Проблема возникает при пропуске обоих столбцов dat вместо sales one:

ts(dat$sales, frequency = 12) %>%
  decompose() %>%
  autoplot()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...