Reputation: 86
I'm using fable
and testing out using forecast(bootstrap = T)
with a reconciled hierarchical univariate model as shown below.
tourism_hts <- tourism |>
aggregate_key(State / Region, Trips = sum(Trips))
tourism_forecast <- tourism_hts |>
model(arima_model = ARIMA(Trips)) |>
reconcile(arima_td = top_down(arima_model)) |>
forecast(h=20, bootstrap = TRUE)
tourism_forecast |> filter(.model == "arima_td")
This produces a dist
variable which is simply a point estimate, not a distribution.
# A fable: 1,700 x 6 [1Q]
# Key: State, Region, .model [85]
State Region .model Quarter Trips .mean
<chr*> <chr*> <chr> <qtr> <dist> <dbl>
1 ACT Canberra arima_td 2018 Q1 666.0948 666.
2 ACT Canberra arima_td 2018 Q2 666.6314 667.
3 ACT Canberra arima_td 2018 Q3 673.8574 674.
4 ACT Canberra arima_td 2018 Q4 669.5495 670.
5 ACT Canberra arima_td 2019 Q1 669.8017 670.
6 ACT Canberra arima_td 2019 Q2 673.7087 674.
7 ACT Canberra arima_td 2019 Q3 679.0933 679.
8 ACT Canberra arima_td 2019 Q4 672.9738 673.
9 ACT Canberra arima_td 2020 Q1 669.2769 669.
10 ACT Canberra arima_td 2020 Q2 677.0714 677.
In contrast, we see that the base model actually does have a valid dist
variable
tourism_forecast
# A fable: 3,400 x 6 [1Q]
# Key: State, Region, .model [170]
State Region .model Quarter Trips .mean
<chr*> <chr*> <chr> <qtr> <dist> <dbl>
1 ACT Canberra arima_model 2018 Q1 sample[5000] 661.
2 ACT Canberra arima_model 2018 Q2 sample[5000] 660.
3 ACT Canberra arima_model 2018 Q3 sample[5000] 661.
4 ACT Canberra arima_model 2018 Q4 sample[5000] 660.
5 ACT Canberra arima_model 2019 Q1 sample[5000] 660.
6 ACT Canberra arima_model 2019 Q2 sample[5000] 662.
7 ACT Canberra arima_model 2019 Q3 sample[5000] 660.
8 ACT Canberra arima_model 2019 Q4 sample[5000] 660.
9 ACT Canberra arima_model 2020 Q1 sample[5000] 661.
10 ACT Canberra arima_model 2020 Q2 sample[5000] 660.
Should I expect that fable
will generate a valid interval for the reconciled model rather than a point estimate?
sessionInfo()
R version 4.3.1 (2023-06-16)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Sonoma 14.7.2
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib; LAPACK version 3.11.0
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
time zone: America/Chicago
tzcode source: internal
attached base packages:
[1] stats graphics grDevices datasets utils methods base
other attached packages:
[1] feasts_0.3.2 tsibbledata_0.4.1 fpp3_1.0.1 tsibble_1.1.5 fable_0.3.4 fabletools_0.4.2 lubridate_1.9.3
[9] forcats_1.0.0 stringr_1.5.1 dplyr_1.1.4 purrr_1.0.2 readr_2.1.5 tidyr_1.3.1 tibble_3.2.1 ggplot2_3.5.1
[17] tidyverse_2.0.0
loaded via a namespace (and not attached):
[1] rappdirs_0.3.3 utf8_1.2.4 generics_0.1.3 anytime_0.3.9 renv_1.0.7 lattice_0.21-8 stringi_1.8.4
[8] digest_0.6.36 hms_1.1.3 magrittr_2.0.3 grid_4.3.1 timechange_0.3.0 rprojroot_2.0.4 DBI_1.2.3
[15] fansi_1.0.6 scales_1.3.0 cli_3.6.3 rlang_1.1.4 crayon_1.5.3 ellipsis_0.3.2 munsell_0.5.1
[22] withr_3.0.1 yaml_2.3.10 tools_4.3.1 tzdb_0.4.0 colorspace_2.1-0 here_1.0.1 vctrs_0.6.5
[29] R6_2.5.1 lifecycle_1.0.4 urca_1.3-4 pkgconfig_2.0.3 progressr_0.14.0 pillar_1.9.0 gtable_0.3.5
[36] glue_1.7.0 Rcpp_1.0.13 xfun_0.45 tidyselect_1.2.1 rstudioapi_0.16.0 knitr_1.47 farver_2.1.2
[43] nlme_3.1-162 labeling_0.4.3 compiler_4.3.1 distributional_0.4.0
Upvotes: 0
Views: 17