【问题标题】:How can I implement both hourly and weekly seasonality in Fable - R Package using season() function?如何使用 season() 函数在 Fable - R Package 中实现每小时和每周的季节性?
【发布时间】:2020-10-31 20:41:56
【问题描述】:

我必须为 2000 个不同的时间序列创建每小时预测。我的系列中每小时和每周的季节性很强。为了处理每小时的季节性,我使用了season("day") 选项。但是,我想season("week") 每周会创建 168 个假人,这将是计算问题。

您知道使用 tsibble 或 fabletools 包创建工作日假人的快速方法吗?

ts_forecast1 <- train%>% filter(store_number==288) %>% collect()%>% 
mutate(store_number = factor(store_number)) %>% group_by(store_number) %>%  
filter(sales!=0) %>% tsibble::fill_gaps(sales=100) %>%
fabletools::model(Arima = ARIMA(log(sales) ~  season("day") +fourier("week", K = 8)))

【问题讨论】:

    标签: forecasting fable-r tsibble


    【解决方案1】:

    您的代码已经包含答案。

    season("day") 将创建 23 个虚拟变量,因为一天有 24 小时。 season("week") 将在一周的 168 小时内创建 167 个虚拟变量。要使用更少的系数,请将season() 替换为fourier() 并使用K 来控制系数的数量(等于K 的两倍)。

    【讨论】:

    • 我认为这里最重要的问题是为算法找到正确的 K。在你的书otexts.com/fpp2/complexseasonality.html 中有一些关于用fourier() 解决季节性问题的例子,但我仍然不确定正确的水平。虽然我使用了书中给出的 for 循环来找到最准确的 K,但由于系数限制的数量,我无法运行循环。我正在使用具有每小时数据的 tsibble 对象,但我仍然收到 K 必须不大于 period/2 错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 2014-07-03
    • 1970-01-01
    相关资源
    最近更新 更多