如何使用每月骑行模式创建每日时间序列

时间:2019-01-10 07:15:13

标签: r time-series arima

我有一系列从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 

2 个答案:

答案 0 :(得分:0)

由于问题中没有提供可复制的示例,因此以下示例可以帮助您更好地可视化数据。

使用数据集public class FindLarge { private String longestWord; public String longestWord(String sen) { String arr[] = sen.split(" "); // seperates each word in the string and stores it in array longestWord = arr[0]; // Assume first word to be the largest word for (String a : arr) if (longestWord.length() < a.length()) // check length of each word longestWord = a; return longestWord; } public static void main(String[] args) { FindLarge fl=new FindLarge(); String longestWord=fl.longestWord("Hello Welcome to Java"); // string to be checked System.out.println("Longest Word: "+ longestWord); // Final Output } 和库economics,您可以轻松地绘制时间序列。

ggplot2

plot1

对于您的问题,您只需要传递library(ggplot2) theme_set(theme_minimal()) # Basic line plot ggplot(data = economics, aes(x = date, y = pop))+ geom_line(color = "#00AFBB", size = 2) x=Date即可获得以下图表。关于您的第二个关于按时间序列预测销售额的问题,您可以在这里查看这个问题:Time series prediction using R

答案 1 :(得分:0)

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

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可视化不同的季节。