Skip to main content

pyhts

A python package for hierarchical forecasting, inspired by the hts package in R.

Features

  • Support pupular forecast reconciliation models in the literature, e.g. ols, wls, mint et al. Forecasting with temporal hierarchies will be supported in the future.
  • Multiple methods for the construction of hierarchy.
  • Use different base forecasters for different hierarchical levels.
  • Sklearn-like API.

Quick Demo

  • Load the Australia tourism flows data.
from pyhts import load_tourism

tourism_data = load_tourism()
train = tourism_data.iloc[:, 4:-12].T.values
test = tourism_data.iloc[:, -12:].T.values
  • Define the hierarchy.
from pyhts import Hierarchy

hierarchy = Hierarchy.new(tourism_data, [('state', 'region', 'city')])
print(hierarchy.node_name)
  • Create an ols forecasting reconciliation model with sklearn-like API.
from pyhts import HFModel

model_ols = HFModel(hierarchy=hierarchy, base_forecasters="arima",
                    hf_method="comb", comb_method="ols")
  • Fit the model and produce forecasts.
model_ols.fit(train)
ols = model_ols.predict(horizon=12)
  • model.fit() fits the baseforecasters and computes the weighting matrix used to reconcile the base forecasts.

  • model.predict() calculates the base forecasts for all levels and reconciles the base forecasts.

  • Obtain coherent forecasts of all the hierarchical levels.
all_level_ols = hierarchy.aggregate_ts(ols)
  • fit other methods using fitted base forecasters
model_wlss = HFModel(hierarchy, base_forecasters=model_ols.base_forecasters,
                     hf_method="comb", comb_method="wls", weights="structural")
model_wlss.fit(train)
wlss = model_wlss.predict(horizon=12)

model_wlsv = HFModel(hierarchy, base_forecasters=model_ols.base_forecasters,
                     hf_method="comb", comb_method="mint", weights="variance")
model_wlsv.fit(train)
wlsv = model_wlsv.predict(horizon=12)

model_shrink = HFModel(hierarchy, base_forecasters=model_ols.base_forecasters,
                       hf_method="comb", comb_method="mint", weights="shrinkage")
model_shrink.fit(train)
shrink = model_shrink.predict(horizon=12)
  • Evaluate the forecasting accuracy.
# accuracy of reconciled forecasts
accuracy = [hierarchy.accuracy(test, fcast, hist=train, measure=['mase', 'rmse'])
            for fcast in (ols, wlss, wlsv, shrink)]

# accuracy of base forecasts
base_forecasts = model_ols.generate_base_forecast(horizon=12)
accuracy_base = hierarchy.accuracy_base(test, base_forecasts, hist=train, measure=['mase', 'rmse'])

Because of the incoherence of base forecasts, base_forecasts are forecasts of all time series in the hierarchy, while coherent forecasts are forecasts of the bottom-level time series.

Documentation

See documentation here.

Metadata

Release files for pyhts 0.2.0

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

Source distribution (sdist)

Source distribution for pyhts 0.2.0
File Size Uploaded
pyhts-0.2.0.tar.gz 116.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyhts 0.2.0
File Interpreter ABI Platform
pyhts-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 233.5 kB

Release files / pyhts-0.2.0.tar.gz

Download URL pyhts-0.2.0.tar.gz
Size 116.9 kB
Tags Source
SHA-256 checksum
How to use checksums
c9109b8f0a7751f52a57f80a217bcb8ee89b3ce95acdc1c17ccbf95c6e15c1b2
BLAKE2b-256 checksum
How to use checksums
e1ea4f62bbebe907b85ace432695c0431281add46270e90a2555794eb15fab5e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / pyhts-0.2.0-py3-none-any.whl

Download URL pyhts-0.2.0-py3-none-any.whl
Size 116.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3c8e0ab1ecae33d9bf3dae428d99421af88b96b54c9544318b6e7b841d1f6bfb
BLAKE2b-256 checksum
How to use checksums
d65c49ec6598734642a57416b5da8d8bc032c8317fbaf2f7ec494458c97a5ae6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.1

2 release files

0.1.0

2 release files

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