首页 > 解决方案 > 如何通过 R 中的寓言动态回归获得 CV 预测

问题描述

我正在使用交叉验证拟合动态回归,但无法生成预测。

根据FPP3 的这个页面,想法是创建一个具有协变量值的未来数据对象,然后使用新的未来数据进行预测。每当我这样做时,我都会收到一个关键错误,“提供的数据包含与模型不同的关键结构。”

设置和模型拟合:

library(fable)
library(tidyverse)
library(tidyquant)

apple = tq_get("AAPL") %>%
  select(symbol, date, open, close, volume) %>%
  mutate(day_prior_result = case_when(lag(close) > lag(open) ~ 'up',
                                      TRUE ~ 'down')) %>%
  as_tsibble() %>%
  mutate(day = row_number()) %>%
  update_tsibble(index = day, regular = TRUE) %>%
  select(-date)

apple_cv = apple %>%
  stretch_tsibble(.init=750, .step=1)

apple_fit = apple_cv %>%
  model(
    arima = ARIMA(close ~ day_prior_result)
  )

如果我尝试通过简单地从 CV 数据创建新数据来进行预测,则不会day_prior_result生成协变量的值:

apple_fit %>% forecast(new_data(apple_cv, 1))

结果是 :

Error: Problem with `mutate()` column `arima`.
ℹ `arima = (function (object, ...) ...`.
x object 'day_prior_result' not found

如果我通过加入生成具有协变量值的未来数据集,然后将其传递给预测(),我会得到一个关键结构错误。

apple_new = apple_cv %>%
  new_data(1) %>%
  as_tibble() %>%
  left_join(apple_cv %>% as_tibble() %>% select(day, day_prior_result)) %>%
  distinct() %>%
  as_tsibble(index=day, key = .id, regular=TRUE)

结果是:

Error: Provided data contains a different key structure to the models.

真的不确定第二种方法哪里出错了。两个 tsibble 对象的结构看起来是一样的。

在此处输入图像描述

在此处输入图像描述

标签: rforecastingtidyquantfable

解决方案


推荐阅读