timemachines
Because why not do things in walk-forward incremental fashion with one line of code? Here yt is a vector or scalar, and we want to predict yt (or its first coordinate if a vector) three steps in advance.
from timemachines.skaters.somepackage.somevariety import something as f
for yt in y:
xt, xt_std, s = f(y=yt, s=s, k=3)
This emits a k-vector xt of forecasts, and corresponding k-vector xt_std of estimated standard errors. See skaters for choices of somepackage, somevariety and something. You can also ensemble, compose, bootstrap and do other things with one line of code.
See the docs.
Packages used
Skaters draw on functionality from popular python time-series packages like river, pydlm, tbats, pmdarima, statsmodels.tsa, neuralprophet, Facebook Prophet,
Uber's orbit, Facebook's greykite and more. See the docs.
What's a "skater"?
More abstractly:
$$
f : (y_t, state; k) \mapsto ( [\hat{y}(t+1),\hat{y}(t+2),\dots,\hat{y}(t+k) ], [\sigma(t+1),\dots,\sigma(t+k)], posterior\ state))
$$
where $\sigma(t+l)$ estimates the standard error of the prediction $\hat{y}(t+l)$.
If you prefer an legitimate (i.e. stateful) state machine, see FAQ question 1.
Skater function conventions
See docs/interface for description of skater inputs and outputs. Briefly:
x, w, s = f( y:Union[float,[float]], # Contemporaneously observerd data,
# ... including exogenous variables in y[1:], if any.
s=None, # Prior state
k:float=1, # Number of steps ahead to forecast. Typically integer.
a:[float]=None, # Variable(s) known in advance, or conditioning
t:float=None, # Time of observation (epoch seconds)
e:float=None, # Non-binding maximal computation time ("e for expiry"), in seconds
r:float=None) # Hyper-parameters ("r" stands for for hype(r)-pa(r)amete(r)s)
Contributions and capstone projects
Getting live help
- FAQ.
- See the Slack invite on my user page here.
- Office hours here.
- Learn how to deploy some of these models and try to win the daily $125 prize.
Oh what a mess the Python timeseries ecosystem is. So packages are not installed by default. See the methodical install instructions and be incremental for best results. The infamous xkcd cartoon really does describe the alternative quite well.
Cite
Thanks
@electronic{cottontimemachines,
title = {{Timemachines: A Python Package for Creating and Assessing Autonomous Time-Series Prediction Algorithms}},
year = {2021},
author = {Peter Cotton},
url = {https://github.com/microprediction/timemachines}
}
or something here.