分析没有日期的时间序列

时间:2019-04-06 10:20:04

标签: r ggplot2 time-series forecasting

我有这种数据:

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个月(开始日期:2013年1月1日;结束日期:2015年10月1日)。

这是我的方法。

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 个答案:

答案 0 :(得分:2)

问题是由于传递了dat的两列而不是仅传递sales的一列:

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

enter image description here

答案 1 :(得分:2)

问题是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()