Time series forecasting suite using statistical models
StatsForecast offers a collection of widely used univariate time series forecasting models, including automatic ARIMA
, ETS
, CES
, and Theta
modeling optimized for high performance using numba
. It also includes a large battery of benchmarking models.
You can install StatsForecast
with:
pip install statsforecast
or
conda install -c conda-forge statsforecast
Vist our Installation Guide for further instructions.
Minimal Example
from statsforecast import StatsForecast
from statsforecast.models import AutoARIMA
from statsforecast.utils import AirPassengersDF
df = AirPassengersDF
sf = StatsForecast(
models = [AutoARIMA(season_length = 12)],
freq = 'M'
)
sf.fit(df)
sf.predict(h=12, level=[95])
Get Started with this quick guide.
Follow this end-to-end walkthrough for best practices.
Current Python alternatives for statistical models are slow, inaccurate and don't scale well. So we created a library that can be used to forecast in production environments or as benchmarks. StatsForecast
includes an extensive battery of models that can efficiently fit millions of time series.
AutoARIMA
, AutoETS
, AutoCES
, MSTL
and Theta
in Python..fit
and .predict
.exogenous variables
and prediction intervals
for ARIMA.pmdarima
.R
.Prophet
.statsmodels
.numba
.Missing something? Please open an issue or write us in
π End to End Walkthrough: Model training, evaluation and selection for multiple time series
π Anomaly Detection: detect anomalies for time series using in-sample prediction intervals.
π©βπ¬ Cross Validation: robust modelβs performance evaluation.
βοΈ Multiple Seasonalities: how to forecast data with multiple seasonalities using an MSTL.
π Predict Demand Peaks: electricity load forecasting for detecting daily peaks and reducing electric bills.
π Intermittent Demand: forecast series with very few non-zero observations.
π‘οΈ Exogenous Regressors: like weather or prices
Automatic forecasting tools search for the best parameters and select the best possible model for a group of time series. These tools are useful for large collections of univariate time series.
Model | Point Forecast | Probabilistic Forecast | Insample fitted values | Probabilistic fitted values | Exogenous features |
---|---|---|---|---|---|
AutoARIMA | β | β | β | β | β |
AutoETS | β | β | β | β | |
AutoCES | β | β | β | β | |
AutoTheta | β | β | β | β |
These models exploit the existing autocorrelations in the time series.
Model | Point Forecast | Probabilistic Forecast | Insample fitted values | Probabilistic fitted values | Exogenous features |
---|---|---|---|---|---|
ARIMA | β | β | β | β | β |
AutoRegressive | β | β | β | β | β |
Fit two theta lines to a deseasonalized time series, using different techniques to obtain and combine the two theta lines to produce the final forecasts.
Model | Point Forecast | Probabilistic Forecast | Insample fitted values | Probabilistic fitted values | Exogenous features |
---|---|---|---|---|---|
Theta | β | β | β | β | |
OptimizedTheta | β | β | β | β | |
DynamicTheta | β | β | β | β | |
DynamicOptimizedTheta | β | β | β | β |
Suited for signals with more than one clear seasonality. Useful for low-frequency data like electricity and logs.
Model | Point Forecast | Probabilistic Forecast | Insample fitted values | Probabilistic fitted values | Exogenous features |
---|---|---|---|---|---|
MSTL | β | β | β | β | If trend forecaster supports |
Suited for modeling time series that exhibit non-constant volatility over time. The ARCH model is a particular case of GARCH.
Model | Point Forecast | Probabilistic Forecast | Insample fitted values | Probabilistic fitted values | Exogenous features |
---|---|---|---|---|---|
GARCH | β | β | β | β | |
ARCH | β | β | β | β |
Classical models for establishing baseline.
Model | Point Forecast | Probabilistic Forecast | Insample fitted values | Probabilistic fitted values | Exogenous features |
---|---|---|---|---|---|
HistoricAverage | β | β | β | β | |
Naive | β | β | β | β | |
RandomWalkWithDrift | β | β | β | β | |
SeasonalNaive | β | β | β | β | |
WindowAverage | β | ||||
SeasonalWindowAverage | β |
Uses a weighted average of all past observations where the weights decrease exponentially into the past. Suitable for data with clear trend and/or seasonality. Use the SimpleExponential
family for data with no clear trend or seasonality.
Model | Point Forecast | Probabilistic Forecast | Insample fitted values | Probabilistic fitted values | Exogenous features |
---|---|---|---|---|---|
SimpleExponentialSmoothing | β | ||||
SimpleExponentialSmoothingOptimized | β | ||||
SeasonalExponentialSmoothing | β | ||||
SeasonalExponentialSmoothingOptimized | β | ||||
Holt | β | β | β | β | |
HoltWinters | β | β | β | β |
Suited for series with very few non-zero observations
Model | Point Forecast | Probabilistic Forecast | Insample fitted values | Probabilistic fitted values | Exogenous features |
---|---|---|---|---|---|
ADIDA | β | ||||
CrostonClassic | β | ||||
CrostonOptimized | β | ||||
CrostonSBA | β | ||||
IMAPA | β | ||||
TSB | β |
See CONTRIBUTING.md.
@misc{garza2022statsforecast,
author={Federico Garza, Max Mergenthaler Canseco, Cristian ChallΓΊ, Kin G. Olivares},
title = {{StatsForecast}: Lightning fast forecasting with statistical and econometric models},
year={2022},
howpublished={{PyCon} Salt Lake City, Utah, US 2022},
url={https://github.com/Nixtla/statsforecast}
}
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!