将模型拟合到高频时间序列并使用寓言进行短期预测

Fitting a model to a high frequency timeseries and forecasting on the short term using fable

我有一个具有相当高频率(15 分钟)的值的时间序列。时间序列没有缺失值,并显示一些每日和每周的周期性成分。

我正在尝试在 R 中使用 fable 对其建模,但我似乎找不到任何像样的结果,我想知道我是否做错了什么。

这是我的代码,使用可下载的示例数据集:

library(tsibble)
library(fable)
library(dplyr)
library(lubridate)

download.file("https://srv-file7.gofile.io/download/9yo0cg/so_data.csv", destfile = "so_data.csv", method = "wget")
csv = read.csv("so_data.csv") %>%
    mutate(time = ymd_hms(time)) %>%
    as_tsibble(index = time)

# Take a look
csv %>% summary
csv %>% autoplot

这是时间序列: 如您所见,它非常有规律,每天都有很好的周期性。让我们尝试使用一些模型的默认设置对其进行建模:

csv %>%
    model(
        ets = ETS(value),
        arima = ARIMA(value),
        snaive = SNAIVE(value)
    ) %>%
    forecast(h = "1 week") %>%
    autoplot(csv)

所有这些都失败了:

我对这个过程的有限理解在这里显然是错误的,默认值在这种情况下没有用。然而,我尝试调整它们,不幸的是,我无法捕捉到更好的东西。无论如何,由于我是该领域的菜鸟,我不明白这是否是由于:

您的 15 分钟频率数据显示出多种季节性模式。这些模型产生的预测质量很差,因为它们并非旨在捕获这些模式(因此它们不是)。

您的代码看起来不错,并且(在视觉上)数据似乎具有合适的模型应该捕获的强大模式。

目前有两个更复杂的模型可以与寓言一起使用,它们应该能够捕捉多种季节性模式,从而为您提供更好的预测。他们是: