• Stars
    star
    3,846
  • Rank 11,422 (Top 0.3 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created about 3 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Lightning ⚡️ fast forecasting with statistical and econometric models.

Nixtla   Tweet  Slack

All Contributors

Statistical ⚡️ Forecast

Lightning fast forecasting with statistical and econometric models

CI Python PyPi conda-nixtla License docs Downloads

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.

Installation

You can install StatsForecast with:

pip install statsforecast

or

conda install -c conda-forge statsforecast

Vist our Installation Guide for further instructions.

Quick Start

Minimal Example

from statsforecast import StatsForecast
from statsforecast.models import AutoARIMA

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.

Why?

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.

Features

  • Fastest and most accurate implementations of AutoARIMA, AutoETS, AutoCES, MSTL and Theta in Python.
  • Out-of-the-box compatibility with Spark, Dask, and Ray.
  • Probabilistic Forecasting and Confidence Intervals.
  • Support for exogenous Variables and static covariates.
  • Anomaly Detection.
  • Familiar sklearn syntax: .fit and .predict.

Highlights

  • Inclusion of exogenous variables and prediction intervals for ARIMA.
  • 20x faster than pmdarima.
  • 1.5x faster than R.
  • 500x faster than Prophet.
  • 4x faster than statsmodels.
  • Compiled to high performance machine code through numba.
  • 1,000,000 series in 30 min with ray.
  • Replace FB-Prophet in two lines of code and gain speed and accuracy. Check the experiments here.
  • Fit 10 benchmark models on 1,000,000 series in under 5 min.

Missing something? Please open an issue or write us in Slack

Examples and Guides

📚 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

Models

Automatic Forecasting

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
AutoARIMA
AutoETS
AutoCES
AutoTheta

ARIMA Family

These models exploit the existing autocorrelations in the time series.

Model Point Forecast Probabilistic Forecast Insample fitted values Probabilistic fitted values
ARIMA
AutoRegressive

Theta Family

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
Theta
OptimizedTheta
DynamicTheta
DynamicOptimizedTheta

Multiple Seasonalities

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
MSTL

GARCH and ARCH Models

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
GARCH
ARCH

Baseline Models

Classical models for establishing baseline.

Model Point Forecast Probabilistic Forecast Insample fitted values Probabilistic fitted values
HistoricAverage
Naive
RandomWalkWithDrift
SeasonalNaive
WindowAverage
SeasonalWindowAverage

Exponential Smoothing

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
SimpleExponentialSmoothing
SimpleExponentialSmoothingOptimized
SeasonalExponentialSmoothing
SeasonalExponentialSmoothingOptimized
Holt
HoltWinters

Sparse or Intermittent

Suited for series with very few non-zero observations

Model Point Forecast Probabilistic Forecast Insample fitted values Probabilistic fitted values
ADIDA
CrostonClassic
CrostonOptimized
CrostonSBA
IMAPA
TSB

🔨 How to contribute

See CONTRIBUTING.md.

Citing

@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}
}

Contributors

Thanks goes to these wonderful people (emoji key):

fede
fede

💻 🚧
José Morales
José Morales

💻 🚧
Sugato Ray
Sugato Ray

💻
Jeff Tackes
Jeff Tackes

🐛
darinkist
darinkist

🤔
Alec Helyar
Alec Helyar

💬
Dave Hirschfeld
Dave Hirschfeld

💬
mergenthaler
mergenthaler

💻
Kin
Kin

💻
Yasslight90
Yasslight90

🤔
asinig
asinig

🤔
Philip Gillißen
Philip Gillißen

💻
Sebastian Hagn
Sebastian Hagn

🐛
Han Wang
Han Wang

💻
Ben Jeffrey
Ben Jeffrey

🐛
Beliavsky
Beliavsky

📖
Mariana Menchero García
Mariana Menchero García

💻
Nikhil Gupta
Nikhil Gupta

🐛
JD
JD

🐛
josh attenberg
josh attenberg

💻
JeroenPeterBos
JeroenPeterBos

💻
Jeroen Van Der Donckt
Jeroen Van Der Donckt

💻
Roymprog
Roymprog

📖
Nelson Cárdenas Bolaño
Nelson Cárdenas Bolaño

📖
Kyle Schmaus
Kyle Schmaus

💻
Akmal Soliev
Akmal Soliev

💻
Nick To
Nick To

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

More Repositories

1

neuralforecast

Scalable and user friendly neural 🧠 forecasting algorithms.
Python
3,001
star
2

nixtla

TimeGPT-1: production ready pre-trained Time Series Foundation Model for forecasting and anomaly detection. Generative pretrained transformer for time series trained on over 100B data points. It's capable of accurately predicting various domains such as retail, electricity, finance, and IoT with just a few lines of code 🚀.
Jupyter Notebook
2,208
star
3

hierarchicalforecast

Probabilistic Hierarchical forecasting 👑 with statistical and econometric methods.
Python
568
star
4

mlforecast

Scalable machine 🤖 learning for time series forecasting.
Python
501
star
5

tsfeatures

Calculates various features from time series data. Python implementation of the R package tsfeatures.
Python
362
star
6

Nixtla

Automated time series processing and forecasting.
Python
253
star
7

transfer-learning-time-series

Transfer 🤗 Learning for Time Series Forecasting
Jupyter Notebook
123
star
8

datasetsforecast

Datasets for time series forecasting
Jupyter Notebook
38
star
9

fpp3-python

Forecasting: principles and practice in python
Jupyter Notebook
13
star
10

timegpt-forecaster-streamlit

TimeGPT forecaster example using streamlit
Python
12
star
11

vantage

Use TimeGPT to predict cloud costs and detect anomalies.
Python
11
star
12

public-slides

Nixtla Public Slides
Python
6
star
13

nixtlats

6
star
14

popol-vuh

Popol Vuh: Nixtla's operating system
Python
6
star
15

utilsforecast

Python
4
star
16

nixtlar

R SDK for TimeGPT
R
3
star
17

m4-forecasts

ZIP version of M4 forecasts uploaded to https://github.com/Mcompetitions/M4-methods/tree/master/Point%20Forecasts.
2
star
18

m5-forecasts

ZIP version of dataset and forecasts uploaded to https://drive.google.com/drive/folders/1D6EWdVSaOtrP1LEFh1REjI3vej6iUS_4.
2
star
19

nixtla-commons

Nixtla shared assets
CSS
2
star
20

blog

Jupyter Notebook
1
star
21

docs

MDX
1
star
22

how-to-contribute-nixtlaverse

Instruction to contribute to the Nixtla libraries
1
star