Skip to main content

Orbit is a package for bayesian time series modeling and inference.

Project description

docs/img/orbit-banner.png

Disclaimer: Orbit requires PyStan as a system dependency. PyStan is licensed under GPLv3 , which is a free, copyleft license for software.

Orbit is a Python package for time series modeling and inference using Bayesian sampling methods for model estimation. It provides a familiar and intuitive initialize-fit-predict interface for working with time series tasks, while utilizing probabilistic modeling under the hood.

The initial release supports concrete implementation for the following models:

  • Local Global Trend (LGT)

  • Damped Local Trend (DLT)

Both models, which are variants of exponential smoothing, support seasonality and exogenous (time-independent) features.

The initial release also supports the following sampling methods for model estimation:

  • 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

Prerequisites

Install from PyPi:

pip install orbit-ml

Install from GitHub:

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

Quick Start

Load data

import pandas as pd
import numpy as np
from orbit.utils.dataset import load_iclaims

df = load_iclaims()
df[['claims', 'trend.unemploy', 'trend.filling', 'trend.job']] =\
    df[['claims', 'trend.unemploy', 'trend.filling', 'trend.job']].apply(np.log)

test_size=52
train_df=df[:-test_size]
test_df=df[-test_size:]

Damped-Local-Trend (DLT) Model with FULL Bayesian Prediction

from orbit.models.dlt import DLTFull
from orbit.diagnostics.plot import plot_predicted_data

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

# predicted df
predicted_df = dlt.predict(df=test_df)

# plot predictions
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
)
docs/img/dlt-mcmc-pred.png

References

Documentation

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

  • 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.

  • 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.

  • Taylor, S. J. and Letham, B. Forecasting at scale. The American Statistician, 72(1):37–45, 2018.

  • 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

orbit-ml-1.0.6.tar.gz (62.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

orbit_ml-1.0.6-py3-none-any.whl (73.4 kB view details)

Uploaded Python 3

File details

Details for the file orbit-ml-1.0.6.tar.gz.

File metadata

  • Download URL: orbit-ml-1.0.6.tar.gz
  • Upload date:
  • Size: 62.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.5

File hashes

Hashes for orbit-ml-1.0.6.tar.gz
Algorithm Hash digest
SHA256 88dc66355d476ff668b66e1a1a842975adbd3ad1f4c6a8f7e6b0471b1908c13b
MD5 a2295b4ba289b25e9b6eefa104c77c20
BLAKE2b-256 94917f8ea81faf5c1cba78bf725621354c1c39ac43348d24623e3300de375d64

See more details on using hashes here.

File details

Details for the file orbit_ml-1.0.6-py3-none-any.whl.

File metadata

  • Download URL: orbit_ml-1.0.6-py3-none-any.whl
  • Upload date:
  • Size: 73.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.5

File hashes

Hashes for orbit_ml-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 d42316b605dc6be7565024092dee4dc3e10ad9f5870b7a6aba8d0e1ccb7976d6
MD5 6aa07f86ccced329171a605d77df202b
BLAKE2b-256 9df4fb6731739a96157638002aa1d11ae173364783e6146b79214d434d88a04f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page