首页 > 解决方案 > 如何创建具有每月循环模式的每日时间序列

问题描述

我有从 2018 年 1 月 1 日到 2018 年 10 月 15 日的每日销售额的一系列数据,示例如下所示。已经观察到销售额存在一些每月的循环模式,比如每个月的月底总有一个销售高峰,而月中的金额会有轻微的波动。此外,总体而言,6、7、8 月份的销售额高于其他月份。现在我需要预测 2018 年 10 月 15 日之后 10 天的销售额。我是时间序列和 ARIMA 的新手。这里我有两个问题:
1.如何创建这样一个每日时间序列并用日期绘制它?
2. 如何设置循环(或频率)以显示每月循环模式?

Date             SalesAmount
1/1/2018     31,380.31 
1/2/2018     384,418.10 
1/3/2018     1,268,633.28 
1/4/2018     1,197,742.76 
1/5/2018     417,143.36 
1/6/2018     693,172.65 
1/8/2018     840,384.76 
1/9/2018     1,955,909.69 
1/10/2018    1,619,242.52 
1/11/2018    2,267,017.06 
1/12/2018    2,198,519.36 
1/13/2018    584,448.06 
1/15/2018    1,123,662.63 
1/16/2018    2,010,443.35 
1/17/2018    958,514.85 
1/18/2018    2,190,741.31 
1/19/2018    811,623.08 
1/20/2018    2,016,031.26 
1/21/2018    146,946.29 
1/22/2018    1,946,640.57 

标签: rtime-seriesarima

解决方案


在进行任何类型的预测之前,您需要做的第一件事是检测您是否有任何类型的季节性。我建议您添加更多数据,因为确定您是否有如此少的重复模式很复杂。无论如何,您可以尝试如下确定季节性:

library(readr)
test <- read_table2("C:/Users/Z003WNWH/Desktop/test.txt", 
col_types = cols(Date = col_date(format = "%m/%d/%Y"), 
SalesAmount = col_number()))
p<-periodogram(test$SalesAmount)
topF = data.table(freq=p$freq, spec=p$spec) %>% arrange(desc(spec))
1/topF

当您将添加更多数据时,您可以尝试使用 ggseasonplot 来可视化不同的季节。


推荐阅读