![](/img/trans.png)
[英]Hierarchical time series prediction using Fourier for xreg and newxreg
[英]Hierarchical forecast with xreg late in series using fable
我正在使用偉大的fable
package 並嘗試使用 arima 和 ets 模型創建分層預測,並與 td、mo、bu 和 min 跟蹤進行協調以比較並查看最佳方法。 我的系列在系列后期有一些需要回歸的效果,所以我正在嘗試創建一個二元回歸器來處理這個問題。 我已經閱讀了關於使用new_data參數添加具有分層預測的回歸量的new_data
1 和xreg
參數。 正如 Rob Hyndman 在鏈接 1 中所描述的那樣,我通過將數據拆分為訓練集和測試集並將測試傳遞給new_data
的方法取得了成功。 我在當前任務中遇到的問題是,需要建模的效果都在系列的后期,所以它們都在測試集中。
首先是我可重現的示例數據:
library(tidyverse)
library(forecast)
library(fable)
library(tsibble)
library(tsibbledata)
library(lubridate)
data <- aus_livestock %>%
filter(State %in% c("Tasmania", "New South Wales", "Queensland"),
as.Date(Month) > as.Date("2000-01-01")) %>%
aggregate_key(State, Count=sum(Count)) %>%
mutate(xreg=as.factor(if_else(as.Date(Month) > as.Date("2018-01-01") &
as.Date(Month) < as.Date("2018-10-01"), 1, 0)))
我過去曾成功做過這樣的事情:
train <- data %>%
filter(as.Date(Month) < as.Date("2017-10-01"))
test <- data %>%
filter(as.Date(Month) >= as.Date("2017-10-01"))
mod_data <- train %>%
model(ets=ETS(Count),
arima=ARIMA(Count ~ xreg)
) %>%
reconcile(bu_ets=bottom_up(ets),
td_ets=top_down(ets),
mint_ets=min_trace(ets),
bu_arima=bottom_up(arima),
td_arima=top_down(arima),
mint_arima=min_trace(arima)
)
forc_data <- mod_data %>%
forecast(new_data=test)
autoplot(forc_data,
data,
level=NULL)
但由於在這種情況下,訓練集中的回歸量全為零,這預計會提供錯誤Provided exogenous regressors are rank deficient, removing regressors: xreg1
。 我認為我需要做的是將我擁有的所有數據提供給 model,而不是將數據拆分為訓練和測試,但我不確定如何在new_data
文件沒有數據時使用 fable 預測 model。 我得到的最接近的是這樣的:
dates <- sort(rep(seq(as.Date("2019-01-01"), as.Date("2020-12-01"), "months"), 3))
future_data <- tibble(
Month=dates,
State=rep(c("Tasmania", "New South Wales", "Queensland"), 24),
Count=0
) %>%
mutate(Month=yearmonth(Month)) %>%
as_tsibble(index=Month, key=State) %>%
aggregate_key(State, Count=sum(Count)) %>%
mutate(xreg=factor(0, levels=c(0, 1))) %>%
select(-Count)
mod_data <- data %>%
model(ets=ETS(Count),
arima=ARIMA(Count ~ xreg)
) %>%
reconcile(bu_ets=bottom_up(ets),
td_ets=top_down(ets),
mint_ets=min_trace(ets),
bu_arima=bottom_up(arima),
td_arima=top_down(arima),
mint_arima=min_trace(arima)
)
forc_data <- mod_data %>%
forecast(new_data=future_data)
autoplot(forc_data,
data,
level=NULL)
Oddly this code causes my R Studio to crash when I try to run the forecast piece saying R session aborted R has encountered a fatal error
. 我認為這可能與代碼無關,因為我實際上是讓它在我的真實數據上工作,但預測看起來並不像我預期的那樣。
因此,總而言之,我想知道當所有回歸效應都需要在測試集期間發生時,我如何使用fable
來預測具有外生回歸量的層次序列。
提前感謝我能得到的任何幫助!
我認為不可能只在測試集中這樣做,因為 model 在訓練集中沒有什么可學習的。 即你只能在訓練過程中包含一個外生變量,如果它同時存在於訓練和測試集中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.