【问题标题】:forecasting in fable ARIMA blowing up寓言 ARIMA 爆炸的预测
【发布时间】:2020-07-19 15:38:27
【问题描述】:

我正在尝试拟合包含假人的 ARIMA 模型(寓言包)。 这是我正在使用的代码

mod_region <- aggregated_region %>% 
  filter(SETTLEMENTDATE < '2020-02-11') %>% 
  model( 
    arima = ARIMA(sum ~ as.factor(Day))
  )
fc_region <- mod_region %>% 
  forecast(h='7 days’)

它给出了这个错误:

“错误:找不到对象‘Day’ 无法从提供的 new_data 计算所需的变量。 您的模型是否需要额外的变量来生成预测?”

我尝试在谷歌上查找,但什么也找不到。

我之前认为它可能会创建 7 个假人,这就是代码爆炸的原因,然后我使用 arima = ARIMA(sum ~ I(Day == ’Sunday’)) 但是在使用 forecast() 函数时会出现同样的错误。

您知道为什么会发生这种情况吗?

【问题讨论】:

  • 在调用模型函数之前尝试创建因子变量。
  • @RobHyndman 谢谢你的抢。我试着这样做。现在它给出了这个错误[5] variable lengths differ (found for 'xreg')
  • 请提供一个可重现的例子。
  • @RobHyndman 我已将一些数据上传到此处的文件中 (drive.google.com/file/d/1ZI95SnJOTVVtbil84eq7n1F5mei5GeJL/…),我正在使用此代码:
  • @RobHyndman aggregated_region &lt;- readRDS('aggregated_region.rds') aggregated_region_train &lt;- aggregated_region %&gt;% filter(Date &lt; '2020-02-11') xreg_region_new_m &lt;- aggregated_region %&gt;% filter(Date &gt;= '2020-02-11') xreg_region &lt;- as.factor(aggregated_region_train$Day) xreg_region_new &lt;- as.factor(xreg_region_new_m$Day) mod_region &lt;- aggregated_region_train %&gt;% model( arima = ARIMA(sum ~ xreg_region) ) fc_region &lt;- mod_region %&gt;% forecast(h='7 days', newdata = xreg_region_new)

标签: r forecasting fable-r


【解决方案1】:

首先,您需要在建模之前创建变量。所以在调用模型函数之前添加Day的因子版本。

其次,您需要 tsibble 中的所有变量,而不是像 cmets 那样单独的对象。

以下代码将适用于您的数据。

library(tidyverse)
library(tsibble)
library(fable)
aggregated_region <- readRDS('aggregated_region.rds') %>%
  mutate(Day = as.factor(Day))
train <- aggregated_region %>% 
  filter(Date < '2020-02-11')
test <- aggregated_region %>% 
  filter(Date >= '2020-02-11') 

mod_region <- train %>% 
  model(arima = ARIMA(sum ~ Day)) 
fc_region <- mod_region %>% 
  forecast(new_data = test)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-20
    • 2020-12-03
    • 1970-01-01
    • 2020-08-22
    相关资源
    最近更新 更多