fable.tbats is a wrapper around the implementation of tbats originally from the forecast package, though it now works without this dependency.
pak::pkg_install("JSzitas/fable.tbats")
Used just like any model in fable:
library(tsibbledata)
library(fable)
library(fable.tbats)
library(dplyr)
# fit models to the pelt dataset until 1930:
train <- pelt %>%
filter(Year < 1930)
test <- pelt %>%
filter(Year >= 1930)
models <- train %>%
model( ets = ETS(Lynx),
bats = BATS(Lynx),
tbats = TBATS(Lynx)
)
# generate forecasts on the test set
forecasts <- forecast(models, test)
# visualize
autoplot(forecasts, pelt)
Similarly, accuracy calculation works:
train_accuracies <- accuracy(models)
knitr::kable(train_accuracies)
| .model | .type | ME | RMSE | MAE | MPE | MAPE | MASE | RMSSE | ACF1 | |:-------|:---------|-----------:|----------:|---------:|-----------:|---------:|----------:|----------:|----------:| | ets | Training | -77.59902 | 12891.891 | 9824.778 | -20.073965 | 52.20456 | 0.9934890 | 0.9948210 | 0.5352087 | | bats | Training | 1768.39519 | 8540.088 | 6105.791 | -2.816831 | 27.18703 | 0.6174222 | 0.6590080 | 0.1656173 | | tbats | Training | 1653.48581 | 7955.411 | 5577.862 | -3.003260 | 26.36744 | 0.5640376 | 0.6138906 | 0.0367109 |
test_accuracies <- accuracy(forecasts, test)
knitr::kable(test_accuracies)
| .model | .type | ME | RMSE | MAE | MPE | MAPE | MASE | RMSSE | ACF1 | |:-------|:------|-----------:|----------:|----------:|----------:|---------:|-----:|------:|----------:| | bats | Test | -10363.643 | 16253.210 | 10829.331 | -40.43004 | 43.33877 | NaN | NaN | 0.4460149 | | ets | Test | 1061.473 | 10669.984 | 9770.000 | -36.63239 | 71.41690 | NaN | NaN | 0.5558575 | | tbats | Test | -1898.560 | 3444.412 | 3208.959 | -16.86434 | 24.23634 | NaN | NaN | 0.1667398 |
As does refitting:
models <- refit( models, pelt )
Of the functionality available in the forecast package, only forecast::tbats.components() is missing.
Fitting bats/tbats to a few long series can (potentially) be slower using this wrapper than using the forecast package. This is due to the fact that the internal tbats/bats algorithm always executes sequentially (i.e. with use.parallel = FALSE ) to prevent issues with nested parallelism (as the fabletools::model function is taken to be responsible for handling parallelization).
This should never be a problem on many time series, but does lead to a significant slow-down if you are only modelling a single/few time series. Nonetheless, in those cases the fasster package might be much better suited for your use case anyways.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.