Changelog
Source:NEWS.md
modeltime 1.2.1
CRAN release: 20220601
Trelliscope Plotting

plot_modeltime_forecast()
: Expose thefacet_trelliscope()
plotting parameters.
modeltime 1.2.0
CRAN release: 20220407
New Features
Many of the plotting functions have been upgraded for use with trelliscopejs
for easier visualization of many time series.

plot_modeltime_forecast()
: Gets a new argument
trelliscope
: Used for visualizing many time series.  Gets a new argument
.facet_strip_remove
to remove facet strips since trelliscope is automatically labeled.  Gets a new argument
.facet_nrow
to adjust grid with trelliscope.  The default argument for
facet_collapse = TRUE
was changed toFALSE
for better compatibility with Trelliscope JS. This may cause some plots to have multiple groups take up extra space in the strip.
 Gets a new argument
modeltime 1.1.0
CRAN release: 20211018
Spark Backend
Modeltime now has a Spark Backend
NEW Vignette  Modeltime Spark Backend describing how to set up Modeltime with the Spark Backend.
New Algorithms: Smooth Package Integration
If users install smooth
, the following models become available:
adam_reg()
: Interfaces with the ADAM forecasting algorithm insmooth
.exp_smoothing()
: A new engine “smooth_es” connects to the Exponential Smoothing algorithm insmooth::es()
. This algorithm has several advantages, most importantly that it can use xregs (unlike “ets” engine).
Nested Modeltime Improvements
 New extractor:
extract_nested_modeltime_table()
 Extracts a nested modeltime table by row id.
(potentially) Breaking Changes
extract_nested_train_split
andextract_nested_test_split
: Changed parameter from.data
to.object
for consistency with other “extract” functionsAdded a new logged feature to
modeltime_nested_fit()
to track the attribute “metric_set”, which is needed for ensembles. Old nested modeltime objects will need to be rerun to get this new attribute. This will be used in ensembles.
modeltime 1.0.0
CRAN release: 20210914
New Feature: Nested (Iterative) Forecasting
Nested (Iterative) Forecasting is aimed at making it easier to perform forecasting that is traditionally done in a forloop with models like ARIMA, Prophet, and Exponential Smoothing. Functionality has been added to:
Format data in a Nested Time Series structure

Data Preparation Utilities:
extend_timeseries()
,nest_timeseries()
, andsplit_nested_timeseris()
.
Nested Model Fitting (Train/Test)
modeltime_nested_fit()
: Fits many models to nested time series data and organizes in a “Nested Modeltime Table”. Logs Accuracy, Errors, and Test Forecasts.control_nested_fit()
: Used to control the fitting process including verbosity and parallel processing.Logging Extractors: Functions that retrieve logged information from the initial fitting process.
extract_nested_test_accuracy()
,extract_nested_error_report()
, andextract_nested_test_forecast()
.
Nested Model Selection
modeltime_nested_select_best()
: Selects the best model for each time series ID.Logging Extractors: Functions that retrieve logged information from the model selection process.
extract_nested_best_model_report()
Nested Model Refitting (Actual Data)
modeltime_nested_refit()
: Refits to the.future_data
. Logs Future Forecasts.control_nested_refit()
: Used to control the refitting process including verbosity and parallel processing.Logging Extractors: Functions that retrieve logged information from the refitting process.
extract_nested_future_forecast()
.
Vignette Improvements
 Forecasting with Global Models: Added more complete steps in the forecasting process so now user can see how to forecast each step from start to finish including future forecasting.
New Accuracy Metric Set and Yardstick Functions

extended_forecast_accuracy_metric_set()
: Adds the new MAAPE metric for handling intermittent data when MAPE returns Inf. 
maape()
: New yardstick metric that calculates “Mean Arctangent Absolute Percentage Error” (MAAPE). Used when MAPE returns Inf typically due to intermittent data.
Improvements

modeltime_fit_workflowset()
: Improved handling of Workflowset Descriptions, which now match thewflow_id
.
modeltime 0.7.0
CRAN release: 20210716
GroupWise Accuracy and Confidence Interval by Time Series ID
We’ve expanded Panel Data functionality to produce model accuracy and confidence interval estimates by a Time Series ID (#114). This is useful when you have a Global Model that produces forecasts for more than one time series. You can more easily obtain grouped accuracy and confidence interval estimates.
modeltime_calibrate()
: Gains anid
argument that is a quoted column name. This identifies that the residuals should be tracked by an time series identifier feature that indicates the time series groups.modeltime_accuracy()
: Gains aacc_by_id
argument that isTRUE
/FALSE
. If the data has been calibrated withid
, then the user can return local model accuracy by the identifier column. The accuracy data frame will return a row for each combination of Model ID and Time Series ID.modeltime_forecast()
: Gains aconf_by_id
argument that isTRUE
/FALSE
. If the data has been calibrated withid
, then the user can return local model confidence by the identifier column. The forecast data frame will return an extra column indicating the identifier column. The confidence intervals will be adjusted based on the local time series ID variance instead of the global model variance.
New Algorithms
THIEF: Temporal Hierarchical Forecasting

temporal_hierarchy()
: Implements thethief
package by Rob Hyndman and Nikolaos Kourentzes for “Temporal HIErarchical Forecasting”. #117
Bug Fixes
 Issue #111: Fix bug with
modeltime_fit_workflowset()
where the workflowset (wflw_id) order was not maintained.
modeltime 0.6.1
CRAN release: 20210613
Parallel Processing
New Vignette: Parallel Processing
parallel_start()
andparallel_stop()
: Helpers for setting up multicore processing.create_model_grid()
: Helper to generate model specifications with filledin parameters from a parameter grid (e.g.dials::grid_regular()
).control_refit()
andcontrol_fit_workflowset()
: Better printing.
Bug Fixes
 Issue #110: Fix bug with
cores > cores_available
.
modeltime 0.6.0
CRAN release: 20210530
Workflowset Integration
modeltime_fit_workflowset()
(#85) makes it easy to convert workflow_set
objects to Modeltime Tables (mdl_time_tbl
). Requires a refitting process that can now be performed in parallel or in sequence.
New Algorithms
 CROSTON (#5, #98)  This is a new engine that has been added to
exp_smoothing()
.  THETA (#5, #93)  This is a new engine that has been added to
exp_smoothing()
.
New Dials Parameters
exp_smoothing()
gained 3 new tunable parameters:

smooth_level()
: This is often called the “alpha” parameter used as the base level smoothing factor for exponential smoothing models. 
smooth_trend()
: This is often called the “beta” parameter used as the trend smoothing factor for exponential smoothing models. 
smooth_seasonal()
: This is often called the “gamma” parameter used as the seasonal smoothing factor for exponential smoothing models.
Parallel Processing

modeltime_refit()
: supports parallel processing. Seecontrol_refit()

modeltime_fit_workflowset()
: supports parallel processing. Seecontrol_workflowset()
Updates for parsnip >= 0.1.6

boost_tree(mtry)
: Mapping switched fromcolsample_bytree
tocolsample_bynode
.prophet_boost()
andarima_boost()
have been updated to reflect this change. https://github.com/tidymodels/parsnip/pull/499
General Improvements
 Improve Model Description of Recursive Models (#96)
Potential Breaking Changes
 We’ve added new parameters to Exponential Smoothing Models.
exp_smoothing()
models produced in prior versions may require refitting withmodeltime_refit()
to upgrade their internals with the new parameters.
modeltime 0.5.1
CRAN release: 20210403
Recursive Ensemble Predictions
 Add support for
recursive()
for ensembles. The new recursive ensemble functionality is inmodeltime.ensemble
>= 0.3.0.9000.
modeltime 0.5.0
CRAN release: 20210329
Recursive Panel Predictions

recursive()
(#71)  Received a full upgrade to work with Panel Data.  New Vignette: “Autoregressive Forecasting with Recursive”
Breaking Changes
 Deprecating
modeltime::metric_tweak()
foryardstick::metric_tweak()
. Theyardstick::metric_tweak()
has a required.name
argument in addition to.fn
, which is needed for tuning.
modeltime 0.4.2
CRAN release: 20210319
New Algorithms
Baseline algorithms (#5, #37) have been created for comparing highperformance methods with simple forecasting methods.

window_reg
: Windowbased methods such as mean, median, and even more complex seasonal models based on a forecasting window. The main tuning parameter iswindow_size
. 
naive_reg
: NAIVE and Seasonal NAIVE (SNAIVE) Regression Models
Yardstick Helpers

metric_tweak()
 Can modifyyardstick
metrics likemase()
, which have seasonal parameters. 
default_forecast_accuracy_metric_set()
 Gets a...
parameter that allows us to add more metrics beyond the defaults.
Modeltime Residual Tests
A new function is added modeltime_residuals_test()
(#62, #68). Tests are implemented:
 Shapiro Test  Test for Normality of residuals
 BoxPierce, LjungBox, and DurbinWatson Tests  Test for Autocorrelation of residuals
Fixes

plot_modeltime_forecast()
 When plotting a single point forecast,plot_modeltime_forecast()
now usesgeom_point()
instead ofgeom_line()
. Fixes #66.
modeltime 0.4.1
CRAN release: 20210117
Fixes

recursive()
&modeltime_refit()
: Now able to refit a recursive workflow or recursive fitted parsnip object.
modeltime 0.4.0
CRAN release: 20201123
New Functions

recursive()
: Turn a fitted model into a recursive predictor. (#49, #50) 
update_modeltime_model()
: New function to update a modeltime model inside a Modeltime Table.
Breaking Changes
 Removed
arima_workflow_tuned
dataset.
modeltime 0.3.1
CRAN release: 20201109
as_modeltime_table()
: New function to convert one or more fitted models stored in a list
to a Modeltime Table.
Bug Fixes
 Update
m750_models
: Fixes error “R parsnip Error: Internal error: Unknowncomposition
type.”
modeltime 0.3.0
CRAN release: 20201028
Panel Data
modeltime_forecast()
upgrades:

keep_data
: Gains a new argumentkeep_data
. This is useful when thenew_data
andactual_data
has important information needed in analyzing the forecast. 
arrange_index
: Gains a new argumentarrange_index
. By default, the forecast keeps the rows in the same order as the incoming data. Prior versions arranged Model Predictions by.index
, which impacts the users ability to match to Panel Data which is not likely to be arranged by date. Prediction bestpractices are to keep the original order of the data, which will be preserved by default. To get the old behavior, simply togglearrange_index = TRUE
.
modeltime_calibrate()
: Can now handle panel data.
modeltime_accuracy()
: Can now handle panel data.
plot_modeltime_forecast()
: Can handle panel data provided the data is grouped by an ID column prior to plotting.
Error Messaging

Calibration: Improve error messaging during calibration. Provide warnings if models fail. Provide report with
modeltime_calibrate(quiet = FALSE)
.
Compatibility
 Compatibility with
parsnip >= 0.1.4
. Usesset_encodings()
new parameterallow_sparse_x
.
modeltime 0.2.1
CRAN release: 20201008
Ensembles

modeltime_refit()
 Changes to improve fault tolerance and error handling / messaging when making ensembles.
modeltime 0.2.0
CRAN release: 20200928
Ensembles
 Integrates
modeltime.ensemble
, a new R package designed for forecasting with ensemble models.
New Workflow Helper Functions

add_modeltime_model()
 A helper function making it easy to add a fitted parsnip or workflow object to a modeltime table 
pluck_modeltime_model()
&pull_modeltime_model()
 A helper function making it easy to extract a model from a modeltime table
Improvements
 Documentation  Algorithms now identify default parameter values in the “Engine Details” Section in their respective documentation. E.g.
?prophet_boost

prophet_reg()
can now have regressors controlled viaset_engine()
using the following parameters:
regressors.mode
 Set toseasonality.mode
by default. 
regressors.prior.scale
 Set to 10,000 by default. 
regressors.standardize
 Set to “auto” by default.

Data Sets
Modeltime now includes 4 new data sets:

m750
 M750 Time Series Dataset 
m750_models
 3 Modeltime Models made on the M750 Dataset 
m750_splits
 Anrsplit
object containing Train/test splits of the M750 data 
m750_training_resamples
 A Time Series Cross Validationtime_series_cv
object made from thetraining(m750_splits)
Bug Fix

plot_modeltime_forecast()
fix issue with “ACTUAL” data being shown at bottom of legend list. Should be first item.
modeltime 0.1.0
CRAN release: 20200902
New Features
Forecast without Calibration/Refitting
Sometimes it’s important to make fast forecasts without calculating outofsample accuracy and refitting (which requires 2 rounds of model training). You can now bypass the modeltime_calibrate()
and modeltime_refit()
steps and jump straight into forecasting the future. Here’s an example with h = "3 years"
. Note that you will not get confidence intervals with this approach because calibration data is needed for this.
# Make forecasts without calibration/refitting (No Confidence Intervals)
#  This assumes the models have been trained on m750
modeltime_table(
model_fit_prophet,
model_fit_lm
) %>%
modeltime_forecast(
h = "3 years",
actual_data = m750
) %>%
plot_modeltime_forecast(.conf_interval_show = F)
Residual Analysis & Diagonstics
A common tool when forecasting and analyzing residuals, where residuals are .resid = .actual  .prediction
. The residuals may have autocorrelation or nonzero mean, which can indicate model improvement opportunities. In addition, users may which to inspect insample and outofsample residuals, which can display different results.

modeltime_residuals()
 A new function used to extract out residual information 
plot_modeltime_residuals()
 Visualizes the output ofmodeltime_residuals()
. Offers 3 plots: Time Plot  Residuals over time
 ACF Plot  Residual Autocorrelation vs Lags
 Seasonality  Residual Seasonality Plot
New Models
TBATS Model
Use seasonal_reg()
and set engine to “tbats”.
seasonal_reg(
seasonal_period_1 = "1 day",
seasonal_period_2 = "1 week"
) %>%
set_engine("tbats")
NNETAR Model
Use nnetar_reg()
and set engine to “nnetar”.
model_fit_nnetar < nnetar_reg() %>%
set_engine("nnetar")
Prophet Model  Logistic Growth Support

prophet_reg()
andprophet_boost()
: Now supports logistic growth. Set
growth = 'logistic'
and one or more oflogistic_cap
andlogistic_floor
to valid saturation boundaries.  New arguments making it easier to modify the
changepoint_num
,changepoint_range
,seasonality_yearly
,seasonality_weekly
,seasonality_daily
,logistic_cap
,logistic_floor
 Now supports logistic growth. Set
New Workflow Helper Functions

combine_modeltime_tables()
 A helper function making it easy to combine multiple modeltime tables. 
update_model_description()
 A helper function making it easier to update model descriptions.
Improvements
modeltime_refit()
: When modeltime model parameters update (e.g. when Auto ARIMA changes to a new model), the Model Description now alerts the user (e.g. “UPDATE: ARIMA(0,1,1)(1,1,1)[12]”).modeltime_calibrate()
: When training data is supplied in a time window that the model has previously been trained on (e.g.training(splits)
), the calibration calculation first inspects whether the “Fitted” data exists. If it iexists, it returns the “Fitted” data. This helps prevent sequencebased (e.g. ARIMA, ETS, TBATS models) from displaying odd results because these algorithms can only predict sequences directly following the training window. If “Fitted” data is being used, the.type
column will display “Fitted” instead of “Test”.
Bug Fixes

 Implement
actual_data
reconciliation strategies when recipe removes rows. Strategy attempts to fill predictors using “downup” strategy to preventNA
values from removing rows.  More descriptive errors when external regressors are required.
 Implement
modeltime_accuracy()
: Fix issue withnew_data
not recalibrating.prophet_reg()
andprophet_boost()
 Can now perform logistic growthgrowth = 'logistic'
. The user can supply “saturation” bounds usinglogistic_cap
and/orlogisitc_floor
.
Breaking Changes

seasonal_decomp()
has changed toseasonal_reg()
and now supports both TBATS and Seasonal Decomposition Models. 
prophet_reg()
&prophet_boost()
: Argument changes:
num_changepoints
has becomechangepoint_num

modeltime 0.0.2
CRAN release: 20200703
Confidence Interval Estimation

modeltime_forecast()
: Now estimates confidence intervals using centered standard deviation. The mean is assumed to be zero and residuals deviate from mean = 0.
Fixes
 Updates to work with
parsnip
0.1.2. 
prophet_boost()
: Setnthreads = 1
(default) to ensure parallelization is thread safe.