r - 如何创建具有每月循环模式的每日时间序列
问题描述
我有从 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
解决方案
在进行任何类型的预测之前,您需要做的第一件事是检测您是否有任何类型的季节性。我建议您添加更多数据,因为确定您是否有如此少的重复模式很复杂。无论如何,您可以尝试如下确定季节性:
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 来可视化不同的季节。
推荐阅读
- wcf - 在 WCF REST Web 服务上启用 HTTPS
- javascript - 打印机配置3英寸宽的纸张
- typescript - 错误:未捕获(承诺):错误:无法匹配任何路由。Angular 6 中的 URL 段
- android - Unity - iOS/Android 构建大小太高/太大,原因不明
- python - Spyder方法(Python)中的“a”,“c”,“f”是什么意思
- groovy - 带有闭包和空安全检查的 Groovy 集合排序导致异常
- javascript - 在 JavaScript 中将带小数的浮点数解析为 JSON 也为 1 为 1.00
- python - Python tkinter 按钮字体越来越像素化
- razor-pages - 在 asp-page 的 CSHTML 代码中使用 @local_variable
- c - 当你在 C 中调用隐式声明的函数时会发生什么?