Skip to main content

  Join Slack   |   Documentation   |   Blog - Intro   |   Blog - v1.1

Orbit banner


GitHub release (latest SemVer) PyPI Build and Test Documentation Status PyPI - Python Version Downloads Conda Recipe Conda - Platform Conda (channel only) PyPI - License

User Notice

The default page of the repo is on dev branch. To install the dev version, please check the section Installing from Dev Branch. If you are looking for a stable version, please refer to the master branch here.

Disclaimer

This project

  • is stable and being incubated for long-term support. It may contain new experimental code, for which APIs are subject to change.
  • requires cmdstanpy as one of the core dependencies for Bayesian sampling.

Orbit: A Python Package for Bayesian Forecasting

Orbit is a Python package for Bayesian time series forecasting and inference. It provides a familiar and intuitive initialize-fit-predict interface for time series tasks, while utilizing probabilistic programming languages under the hood.

For details, check out our documentation and tutorials:

Currently, it supports concrete implementations for the following models:

  • Exponential Smoothing (ETS)
  • Local Global Trend (LGT)
  • Damped Local Trend (DLT)
  • Kernel Time-based Regression (KTR)

It also supports the following sampling/optimization methods for model estimation/inferences:

  • Markov-Chain Monte Carlo (MCMC) as a full sampling method
  • Maximum a Posteriori (MAP) as a point estimate method
  • Variational Inference (VI) as a hybrid-sampling method on approximate distribution

Installation

Installing Stable Release

Install the library either from PyPi or from the source with pip. Alternatively, you can also install it from Anaconda with conda:

With pip

  1. Installing from PyPI

    $ pip install orbit-ml
    
  2. Install from source

    $ git clone https://github.com/uber/orbit.git
    $ cd orbit
    $ pip install -r requirements.txt
    $ pip install .
    

With conda

The library can be installed from the conda-forge channel using conda.

$ conda install -c conda-forge orbit-ml

Installing from Dev Branch

$ pip install git+https://github.com/uber/orbit.git@dev

Quick Start with Damped-Local-Trend (DLT) Model

FULL Bayesian Prediction

from orbit.utils.dataset import load_iclaims
from orbit.models import DLT
from orbit.diagnostics.plot import plot_predicted_data

# log-transformed data
df = load_iclaims()
# train-test split
test_size = 52
train_df = df[:-test_size]
test_df = df[-test_size:]

dlt = DLT(
  response_col='claims', date_col='week',
  regressor_col=['trend.unemploy', 'trend.filling', 'trend.job'],
  seasonality=52,
)
dlt.fit(df=train_df)

# outcomes data frame
predicted_df = dlt.predict(df=test_df)

plot_predicted_data(
  training_actual_df=train_df, predicted_df=predicted_df,
  date_col=dlt.date_col, actual_col=dlt.response_col,
  test_actual_df=test_df
)

full-pred

Demo

Nowcasting with Regression in DLT:

Open All Collab

Backtest on M3 Data:

Open All Collab

More examples can be found under tutorials and examples.

Contributing

We welcome community contributors to the project. Before you start, please read our code of conduct and check out contributing guidelines first.

Versioning

We document versions and changes in our changelog.

References

Presentations

Check out the ongoing deck for scope and roadmap of the project. An older deck used in the meet-up during July 2021 can also be found here.

Citation

To cite Orbit in publications, refer to the following whitepaper:

Orbit: Probabilistic Forecast with Exponential Smoothing

Bibtex:

@misc{
    ng2020orbit,
    title={Orbit: Probabilistic Forecast with Exponential Smoothing},
    author={Edwin Ng,
        Zhishi Wang,
        Huigang Chen,
        Steve Yang,
        Slawek Smyl},
    year={2020}, eprint={2004.08492}, archivePrefix={arXiv}, primaryClass={stat.CO}
}

Papers

  • Bingham, E., Chen, J. P., Jankowiak, M., Obermeyer, F., Pradhan, N., Karaletsos, T., Singh, R., Szerlip, P., Horsfall, P., and Goodman, N. D. Pyro: Deep universal probabilistic programming. The Journal of Machine Learning Research, 20(1):973–978, 2019.
  • Hoffman, M.D. and Gelman, A. The No-U-Turn sampler: adaptively setting path lengths in Hamiltonian Monte Carlo. J. Mach. Learn. Res., 15(1), pp.1593-1623, 2014.
  • Hyndman, R., Koehler, A. B., Ord, J. K., and Snyder, R. D. Forecasting with exponential smoothing: the state space approach. Springer Science & Business Media, 2008.
  • Smyl, S. Zhang, Q. Fitting and Extending Exponential Smoothing Models with Stan. International Symposium on Forecasting, 2015.

Related projects

Metadata

Release files for orbit-ml 1.1.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for orbit-ml 1.1.5.1
File Size Uploaded
orbit_ml-1.1.5.1.tar.gz 448.3 kB Details

Release files / orbit_ml-1.1.5.1.tar.gz

Download URL orbit_ml-1.1.5.1.tar.gz
Size 448.3 kB
Tags Source
SHA-256 checksum
How to use checksums
f5895d4a999eff7d7dc536c84b62bbf73712e6e6d89ed0ecacaa0eedcdb0cb2a
BLAKE2b-256 checksum
How to use checksums
584711c116d66f56f7bf6488252de9b1c4638c0972edb91b1924c1a2bd7d2e9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.5
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page