如何确定时间序列中的最佳频率?

Eva*_*ssa 5 statistics r time-series forecasting holtwinters

我有一个按天分组的数据库指标,我需要预测未来 3 个月的数据。这些数据具有季节性(我相信季节性是一周中的几天)。

我想使用使用 R 的 Holt Winters 方法,我需要创建一个时间序列对象,它要求频率,(我认为是 7)。但是我怎么知道我是否确定?有识别最佳频率的功能吗?

我正在使用:

FID_TS <- ts(FID_DataSet$Value, frequency=7)

FID_TS_Observed <- HoltWinters(FID_TS)
Run Code Online (Sandbox Code Playgroud)

如果我用 分解这些数据decompose(FID_TS),我有:

在此处输入图片说明

这是我的第一个预测FID_TS_Observed

在此处输入图片说明

当我查看去年的历史时,它们在前 3 个月开始较低,然后从第 3 个月增加到 11 个月,然后再次下降。

也许我的每日数据,每天都有每周季节性(频率 = 7)和每月季节性(频率 = 7x30 = 210)?我需要过去 365 天?

有什么办法可以按星期几和按月放置频率?另一件事,我在 Holt-Winters 方法中使用整个去年或其中的一部分有什么不同吗?

提前致谢 :)

小智 1

您似乎有每日数据,并且想要预测未来三个月的数据。这里的问题是您需要每日预测或每周预测还是仅每月预测?我想您可能需要每日或每周的天气预报。如果您需要每周预测,首先按周对数据进行分组,然后运行预测可能会更容易。

Facebook 的新 Prophet 包是一个非常好的用于日常数据处理的工具。它将使用 dataframe 而不是 ts 项目,这使得它更容易处理。您可以通过某些内置函数(例如plot_components)快速获取每日(如果您有每小时数据左右)、每周和每月的季节性数据。这是Facebook的快速入门教程。他们有 Python 和 R 的 API。

这里有一些快速代码,用于使用 Prophet 绘制每周和每月的季节性(是否有)。

library(prophet)
library(dplyr)
df <- FID_DataSet %>% rename(ds = date, y = Value)
m <- prophet(df)
future <- make_future_dataframe(m, periods = 365)
forecast <- predict(m, future)
plot(m, forecast) # plot out the forecast
prophet_plot_components(m, forecast) # plot out the components: trend, weekly and yearly seasonality if there is any.
Run Code Online (Sandbox Code Playgroud)