Skip to main content

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

Project description

docs/img/orbit-icon-small.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

DATA_FILE = "./examples/data/iclaims_example.csv"
df = pd.read_csv(DATA_FILE, parse_dates=['week'])
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:]

Local-Global-Trend (LGT) Model with FULL Bayesian Prediction

from orbit.models.lgt import LGTFull
from orbit.diagnostics.plot import plot_predicted_data

lgt = LGTFull(
    response_col='claims',
    date_col='week',
    regressor_col=['trend.unemploy', 'trend.filling', 'trend.job'],
    seasonality=52,
    prediction_percentiles=[5, 95],
)
lgt.fit(df=train_df)

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

# plot predictions
plot_predicted_data(
    training_actual_df=train_df, predicted_df=predicted_df,
    date_col=lgt.date_col, actual_col=lgt.response_col,
    pred_col='prediction', test_actual_df=test_df
)
docs/img/lgt-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.

  • Hewamalage, H., Bergmeir, C., and Bandara, K. Recurrent neural networks for time series forecasting: Current status and future directions. arXiv preprint arXiv:1909.00590, 2019.

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.5.tar.gz (60.8 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.5-py3-none-any.whl (71.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: orbit-ml-1.0.5.tar.gz
  • Upload date:
  • Size: 60.8 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.5.tar.gz
Algorithm Hash digest
SHA256 90f6c54f410529bd414c9d058d0435db5d2679996214877b7e79efb0cd91fc63
MD5 1b8bd7903a464cb7fe8c1cd3e6afbd7d
BLAKE2b-256 d2e6448efa1068543786a722a392696e74cb458cc4a19eb22a52bf098040bb7e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orbit_ml-1.0.5-py3-none-any.whl
  • Upload date:
  • Size: 71.5 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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f06fd316e5449b2370ea5a486bcf769e8773c21e749626d5b45410366a9a6a21
MD5 3de6adbbeb8dac7fdb40798924471ee4
BLAKE2b-256 238988f929aabb2c62e851feb3d60f9966ec9d12b0b0e51fec7dbdf248db267f

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