首页 文章

如何识别时间序列中的最佳频率?

提问于
浏览
2

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

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

我正在使用:

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

FID_TS_Observed <- HoltWinters(FID_TS)

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

enter image description here

这是我的第一个预测 FID_TS_Observed

enter image description here

当我查看去年的历史时,它们在前3个月开始低,并从第3个月开始增加到11个,当时它们再次减少 .

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

有什么方法可以按周和按月分配频率?另一件事是,我在去年使用整个Holt-Winters方法还是只使用其中的一部分会有什么不同吗?

提前致谢 :)

2 回答

  • 0

    通常,频率(或季节性,您似乎在帖子中使用可互换的词语)由领域知识决定 . 例如,如果我在餐馆业务,我正在分析每小时的客户数据集,我知道我将有24小时的频率,午餐时间和晚餐时间有尖峰,另有168小时频率(24 * 7)因为我的客户会有每周模式 .

    如果由于某种原因,您没有领域知识,可以使用ACF和PACF以及Fourrier分析来查找数据的最佳频率 .

    有什么方法可以按周和按月放置频率?

    有了Holt-Winters,没有 . HW只需要一个季节性组件 . 对于多个季节性组件,您应该尝试TBATS . 随着小西吴的出局,FB先知可以模拟多个季节性,而谷歌的BSTS包也可以 .

    另一件事,我在去年使用整个Holt-Winters方法或仅使用其中的一部分会有什么不同吗?

    是的,它确实 . 我想要对季节性进行建模,然后你需要至少两倍的季节性时间才能对其进行建模(最好是更多),否则你的模型无法知道尖峰是季节性变化还是只是一次性冲动 . 因此,例如,为了模拟每周季节性,您需要至少14天的培训数据(加上您将用于测试的任何内容,并且对于每年的季节性,您将需要至少730天的数据等等....

  • -1

    看起来您有每日数据,并且您希望预测未来三个月 . 这里的问题是您需要每日预测或每周预测还是仅需要每月预测?我想你可能需要每天或每周的预测 . 如果您需要每周预测,可能更容易按周对数据进行分组,然后运行预测 .

    用于日常数据的一个非常好的工具是Facebook的新Prophet包 . 它将使用数据框而不是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.
    

相关问题