Tidy Tools for Forecasting

Tidies up the forecasting modeling and prediction work flow, extends the 'broom' package with 'sw_tidy', 'sw_glance', 'sw_augment', and 'sw_tidy_decomp' functions for various forecasting models, and enables converting 'forecast' objects to "tidy" data frames with 'sw_sweep'.


Travis-CI Build Status codecov CRAN_Status_Badge

The sweep package extends the broom tools (tidy, glance, and augment) for performing forecasts and time series analysis in the "tidyverse". The package is geared towards "tidying" the forecast workflow used with Rob Hyndman's forecast package.


  • Designed for modeling and scaling forecasts using the the tidyverse tools in R for Data Science
  • Extends broom for model analysis (ARIMA, ETS, BATS, etc)
  • Tidies the forecast objects for easy plotting and "tidy" data manipulation
  • Integrates timetk to enable dates and datetimes (irregular time series) in the tidied forecast output


The package contains the following elements:

  1. model tidiers: sw_tidy, sw_glance, sw_augment, sw_tidy_decomp functions extend tidy, glance, and augment from the broom package specifically for models (ets(), Arima(), bats(), etc) used for forecasting.

  2. forecast tidier: sw_sweep converts a forecast object to a tibble that can be easily manipulated in the "tidyverse".

Making forecasts in the tidyverse

sweep enables converting a forecast object to tibble. The result is ability to use dplyr, tidyr, and ggplot natively to manipulate, analyze and visualize forecasts.

Forecasting multiple time series groups at scale

Often forecasts are required on grouped data to analyse trends in sub-categories. The good news is scaling from one time series to many is easy with the various sw_ functions in combination with dplyr and purrr.

Forecasting multiple models for accuracy

A common goal in forecasting is to compare different forecast models against each other. sweep helps in this area as well.

broom extensions for forecasting

If you are familiar with broom, you know how useful it is for retrieving "tidy" format model components. sweep extends this benefit to the forecast package workflow with the following functions:

  • sw_tidy: Returns model coefficients (single column)
  • sw_glance: Returns accuracy statistics (single row)
  • sw_augment: Returns residuals
  • sw_tidy_decomp: Returns seasonal decompositions
  • sw_sweep: Returns tidy forecast outputs.

The compatibility chart is listed below.

Object sw_tidy() sw_glance() sw_augment() sw_tidy_decomp() sw_sweep()
arima X X X
Arima X X X
ets X X X X
robets X X X X
bats X X X X
tbats X X X X
nnetar X X X
stl X
HoltWinters X X X X
StructTS X X X X
tslm X X X
decompose X
adf.test X X
Box.test X X
kpss.test X X
forecast X


Here's how to get started.

Development version with latest features:


Further Information

The sweep package includes several vignettes to help users get up to speed quickly:

  • SW00 - Introduction to sweep
  • SW01 - Forecasting Time Series Groups in the tidyverse
  • SW02 - Forecasting Using Multiple Models


sweep 0.2.0

  • Change to timetk from timekit.
  • Fix Issue #2 - sw_tidy fails when auto.arima() returns no terms (coefficients).

sweep 0.1.0

  • Initial release of sweep, a tool to "tidy" the forecast modeling and prediction workflow.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.2.0 by Matt Dancho, 7 months ago


Report a bug at https://github.com/business-science/sweep/issues

Browse source code at https://github.com/cran/sweep

Authors: Matt Dancho [aut, cre], Davis Vaughan [aut]

Documentation:   PDF Manual  

Task views: Time Series Analysis

GPL (>= 3) license

Imports broom, devtools, dplyr, forecast, lazyeval, lubridate, tibble, tidyr, timetk

Suggests forcats, knitr, rmarkdown, testthat, purrr, readr, robets, stringr, scales, tidyquant, tidyverse

See at CRAN