J'essaie de faire des prévisions hiérarchiques à la manière de atelier Rstudio.conf de Rob Hyndman , et je rencontre quelques problèmes. Voici mon code:
library(dplyr)
library(tsibbledata)
library(tsibble)
library(fable)
aus_retail_2013_tr <- aus_retail %>%
filter(Month <= yearmonth("2013 Dec"))
aus_retail_2013_vl <- aus_retail %>%
filter(Month > yearmonth("2013 Dec"))
hmod <- aus_retail_2013_tr %>%
aggregate_key(State*Industry, Turnover=sum(Turnover)) %>%
model(ar=ARIMA(log(Turnover))) %>%
reconcile(ar_adj=min_trace(ar))
fcasts_hmod <- forecast(hmod, aus_retail_2013_vl)
fcasts_hmod %>%
filter(is_aggregated(Industry), State == "Victoria") %>%
autoplot()
La sortie du graphique est ci-dessous.
Mes principaux problèmes sont:
ar
et ar_adj
les lignes sont identiques.Comment puis-je résoudre ces problèmes? Ce dernier est probablement dû au fait que toutes les séries chronologiques ne couvrent pas toute la période, mais comment puis-je faire en sorte que reconcile
ne saute pas les périodes manquantes?
C'est avec dplyr 0.8.5, fable 0.2.0, fabletools 0.1.3 et tsibble 0.8.6. J'obtiens les mêmes résultats sur Ubuntu/R 3.6.3 et Windows 10/R 4.0.0.
PS. Tenter de prévoir pour un horizon fixe entraîne une erreur:
> fcasts_hmod <- forecast(hmod, h="5 years")
Error: Reconciliation of non-normal forecasts is not yet supported.
Run `rlang::last_error()` to see where the error occurred.
Ces problèmes sont des bogues (ou plus, hors de portée de l'implémentation de réconciliation actuelle). Vous pouvez les signaler via l'URL BugReports du package ( https://github.com/tidyverts/fabletools/issues ).
Mes principaux problèmes sont:
Le rapprochement ne semble pas du tout avoir changé les prévisions. L'image indique que les lignes ar et ar_adj sont identiques.
Les prévisions ne concernent que la période allant de 2014 à 2015, alors que je sais que l'ensemble de données complet va jusqu'en 2018.
Les prévisions pour les modèles rapprochés devraient avoir des erreurs, ce qui est le comportement actuel dans la version de développement. Notez que votre argument forecast()
new_data
Contient 148 séries chronologiques, mais vous produisez des prévisions à partir de 181 modèles. En effet, les prévisions demandées concernent uniquement les séries de niveau inférieur (aus_retail_2013_vl
N'a pas été agrégé).
PS. Tenter de prévoir pour un horizon fixe entraîne une erreur:
Error: Reconciliation of non-normal forecasts is not yet supported. Run `rlang::last_error()` to see where the error occurred.```
Cela est dû au fait que votre modèle a une variable de réponse transformée en journal, qui, lorsqu'elle est rétrogradée, produit des prévisions qui ont une distribution logNormal. Le rapprochement des prévisions probabilistes est difficile et n'est actuellement mis en œuvre que pour les distributions normales. J'ajouterai la réconciliation sur les prévisions ponctuelles comme solution de repli ( https://github.com/tidyverts/fabletools/issues/216 ).