Created
March 7, 2020 17:09
-
-
Save fehiepsi/723d972054f031cbc5ec88c677b2a4d8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Forecasting I: univariate, heavy tailed\n", | |
"\n", | |
"This tutorial introduces the [pyro.contrib.forecast](http://docs.pyro.ai/en/latest/contrib.forecast.html) module, a framework for forecasting with Pyro models. This tutorial covers only univariate models and simple likelihoods. This tutorial assumes the reader is already familiar with [SVI](http://pyro.ai/examples/svi_part_ii.html) and [tensor shapes](http://pyro.ai/examples/tensor_shapes.html).\n", | |
"\n", | |
"#### Summary\n", | |
"\n", | |
"- To create a forecasting model:\n", | |
" 1. Create a subclass of the [ForecastingModel](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.forecaster.ForecastingModel) class.\n", | |
" 2. Implement the [.model(zero_data, covariates)](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.forecaster.ForecastingModel.model) method using standard Pyro syntax.\n", | |
" 3. Sample all time-local variables inside the [self.time_plate](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.forecaster.ForecastingModel.time_plate) context.\n", | |
" 4. Finally call the [.predict(noise_dist, prediction)](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.forecaster.ForecastingModel.predict) method.\n", | |
"- To train a forecasting model, create a [Forecaster](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.forecaster.Forecaster) object.\n", | |
" - Training can be flaky, you'll need to tune hyperparameters and randomly restart.\n", | |
" - Reparameterization can help learning, e.g. [LocScaleReparam](http://docs.pyro.ai/en/latest/infer.reparam.html#pyro.infer.reparam.loc_scale.LocScaleReparam).\n", | |
"- To forecast the future, draw samples from a `Forecaster` object conditioned on data and covariates.\n", | |
"- To model seasonality, use helpers [periodic_features()](http://docs.pyro.ai/en/latest/ops.html#pyro.ops.tensor_utils.periodic_features), [periodic_repeat()](http://docs.pyro.ai/en/latest/ops.html#pyro.ops.tensor_utils.periodic_repeat), and [periodic_cumsum()](http://docs.pyro.ai/en/latest/ops.html#pyro.ops.tensor_utils.periodic_cumsum).\n", | |
"- To model heavy-tailed data, use [Stable](http://docs.pyro.ai/en/latest/distributions.html#stable) distributions and [StableReparam](http://docs.pyro.ai/en/latest/infer.reparam.html#pyro.infer.reparam.stable.StableReparam).\n", | |
"- To evaluate results, use the [backtest()](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.evaluate.eval_crps) helper or low-level loss functions." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import torch\n", | |
"import pyro\n", | |
"import pyro.distributions as dist\n", | |
"import pyro.poutine as poutine\n", | |
"from pyro.contrib.examples.bart import load_bart_od\n", | |
"from pyro.contrib.forecast import ForecastingModel, HMCForecaster, backtest, eval_crps\n", | |
"from pyro.infer.reparam import LocScaleReparam, StableReparam\n", | |
"from pyro.ops.tensor_utils import periodic_cumsum, periodic_repeat, periodic_features\n", | |
"from pyro.ops.stats import quantile\n", | |
"import matplotlib.pyplot as plt\n", | |
"\n", | |
"%matplotlib inline\n", | |
"assert pyro.__version__.startswith('1.2.1')\n", | |
"pyro.enable_validation(True)\n", | |
"pyro.set_rng_seed(20200221)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"dict_keys(['stations', 'start_date', 'counts'])\n", | |
"torch.Size([78888, 50, 50])\n", | |
"12TH 16TH 19TH 24TH ANTC ASHB BALB BAYF BERY CAST CIVC COLM COLS CONC DALY DBRK DELN DUBL EMBR FRMT FTVL GLEN HAYW LAFY LAKE MCAR MLBR MLPT MONT NBRK NCON OAKL ORIN PCTR PHIL PITT PLZA POWL RICH ROCK SANL SBRN SFIA SHAY SSAN UCTY WARM WCRK WDUB WOAK\n" | |
] | |
} | |
], | |
"source": [ | |
"dataset = load_bart_od()\n", | |
"print(dataset.keys())\n", | |
"print(dataset[\"counts\"].shape)\n", | |
"print(\" \".join(dataset[\"stations\"]))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Intro to Pyro's forecasting framework\n", | |
"\n", | |
"Pyro's forecasting framework consists of:\n", | |
"- a [ForecastingModel](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.forecaster.ForecastingModel) base class, whose ``.model()`` method can be implemented for custom forecasting models,\n", | |
"- a [Forecaster](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.forecaster.Forecaster) class that trains and forecasts using ``ForecastingModel``s, and\n", | |
"- a [backtest()](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.evaluate.backtest) helper to evaluate models on a number of metrics.\n", | |
"\n", | |
"Consider a simple univariate dataset, say weekly [BART train](https://www.bart.gov/about/reports/ridership) ridership aggregated over all stations in the network. This data roughly logarithmic, so we log-transform for modeling." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 648x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"T, O, D = dataset[\"counts\"].shape\n", | |
"data = dataset[\"counts\"][:T // (24 * 7) * 24 * 7].reshape(T // (24 * 7), -1).sum(-1).log()\n", | |
"data = data.unsqueeze(-1)\n", | |
"plt.figure(figsize=(9, 3))\n", | |
"plt.plot(data)\n", | |
"plt.title(\"Total weekly ridership\")\n", | |
"plt.ylabel(\"log(# rides)\")\n", | |
"plt.xlabel(\"Week after 2011-01-01\")\n", | |
"plt.xlim(0, len(data));" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's start with a simple log-linear regression model, with no trend or seasonality. Note that while this example is univariate, Pyro's forecasting framework is multivariate, so we'll often need to reshape using `.unsqueeze(-1)`, `.expand([1])`, and `.to_event(1)`." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# First we need some boilerplate to create a class and define a .model() method.\n", | |
"class Model1(ForecastingModel):\n", | |
" # We then implement the .model() method. Since this is a generative model, it shouldn't\n", | |
" # look at data; however it is convenient to see the shape of data we're supposed to\n", | |
" # generate, so this inputs a zeros_like(data) tensor instead of the actual data.\n", | |
" def model(self, zero_data, covariates):\n", | |
" data_dim = zero_data.size(-1) # Should be 1 in this univariate tutorial.\n", | |
" feature_dim = covariates.size(-1)\n", | |
"\n", | |
" # The first part of the model is a probabilistic program to create a prediction.\n", | |
" # We use the zero_data as a template for the shape of the prediction.\n", | |
" bias = pyro.sample(\"bias\", dist.Normal(0, 10).expand([data_dim]).to_event(1))\n", | |
" weight = pyro.sample(\"weight\", dist.Normal(0, 0.1).expand([feature_dim]).to_event(1))\n", | |
" prediction = bias + (weight * covariates).sum(-1, keepdim=True)\n", | |
" # The prediction should have the same shape as zero_data (duration, obs_dim),\n", | |
" # but may have additional sample dimensions on the left.\n", | |
" assert prediction.shape[-2:] == zero_data.shape\n", | |
"\n", | |
" # The next part of the model creates a likelihood or noise distribution.\n", | |
" # Again we'll be Bayesian and write this as a probabilistic program with\n", | |
" # priors over parameters, and again we'll use zero_data as a noise template.\n", | |
" noise_scale = pyro.sample(\"noise_scale\", dist.LogNormal(-5, 5).expand([1]).to_event(1))\n", | |
" noise_dist = dist.Normal(zero_data, noise_scale)\n", | |
"\n", | |
" # The final step is to call the .predict() method.\n", | |
" self.predict(noise_dist, prediction)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can now train this model by creating a [Forecaster](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.forecaster.Forecaster) object. We'll split the data into `[T0,T1)` for training and `[T1,T2)` for testing." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"T0 = 0 # begining\n", | |
"T2 = data.size(-2) # end\n", | |
"T1 = T2 - 52 # train/test split" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"Sample: 100%|██████████| 2000/2000 [00:39, 50.90it/s, step size=3.95e-01, acc. prob=0.930]" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"\n", | |
" mean std median 5.0% 95.0% n_eff r_hat\n", | |
" bias[0] 14.58 0.01 14.58 14.56 14.59 501.54 1.00\n", | |
" weight[0] 0.12 0.02 0.12 0.08 0.14 513.97 1.00\n", | |
"noise_scale[0] 0.13 0.00 0.13 0.12 0.13 592.00 1.00\n", | |
"\n", | |
"Number of divergences: 0\n", | |
"CPU times: user 39.4 s, sys: 194 ms, total: 39.6 s\n", | |
"Wall time: 39.3 s\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"%%time\n", | |
"pyro.set_rng_seed(1)\n", | |
"pyro.clear_param_store()\n", | |
"time = torch.arange(float(T2)) / 365\n", | |
"covariates = torch.stack([time], dim=-1)\n", | |
"forecaster = HMCForecaster(Model1(), data[:T1], covariates[:T1])" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Next we can evaluate by drawing posterior samples from the forecaster, passing in full covariates but only partial data. We'll use Pyro's [quantile()](http://docs.pyro.ai/en/latest/ops.html#pyro.ops.stats.quantile) function to plot median and an 80% confidence interval. To evaluate fit we'll use [eval_crps()](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.evaluate.eval_crps) to compute [Continuous Ranked Probability Score](https://www.stat.washington.edu/raftery/Research/PDF/Gneiting2007jasa.pdf); this is an good metric to assess distributional fit of a heavy-tailed distribution." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"torch.Size([1000, 52, 1]) torch.Size([52])\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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T0/CQ0TkqaeekpCQEKlRo4Y88MADIqJZOfR1u3btKiIi8+fPl65du0paWpp8/PHHRmfAz89PEhISyq1TSkqK0egD8t1330n9+vXl3nvvdcr3448/Ol0frteMbmnatGmTsc7o0aMFkBdffFEACQ0NFaWUzJs3Tw4ePFhme7p169lnn5WBAweK3W6XLl26yG+//SYDBgyQlJQU+e233wSQl156SUQ06827774rEyZMkLi4OImPjzfKMmHCBOnevbvEx8dLu3bt3HYqSkpK3Fp6zBw8eNC4l37++Wd54okn5JNPPpF33323jFD5/PPPneo0dOhQJ8E5bdo0ERHJycmR5557To4dO2aI5h9//FGefvppefvtt438rVq1ErvdLoCMGzfO2M++ffsEkDp16mgLuncXqVlTEza6+KhV65QlBER8fDTRUr36qf8gcvvtmiXm/fdFrrxSW/bQQ5pVZ+JETWA89ZSUjhsn2ydMkJJPPhG5+26RhASRRx/VLC+DBoksWqSts2iR5C9cqAlUxzMDkCAfHyl65x1DXD1z9dUytnNnI12+/lomPfigPNqtm5bnvfcuPWHzd/pYwqbqPPLII0YDWRmOHz8u99xzj9SoUUPi4+OluLjYuOCrV68uPj4+FT6AzoTNmzdLhw4dZNKkSVJYWCilpaXy22+/SXFxcZW206lTJwkLCxPQLB66K0ZE5M4775TGjRsb/19++eUyVoKdO3fKhAkTZOXKlVXa78SJEw3R8eWXXwogcXFxkpGRIf369ZOpU6dKRESEAPLII49ISUmJdOzYUerVqyejRo1yehj36NGjzLGeMmWKkT5jxowKy6ML1GbNmjlt+9dff3XKN3z4cKd0XaDk5OQYeXSRW6NGDafjqfPAAw9IaGioAHLdddfJxo0bjbS2bdvKNddcIyIiaWlpxn7WrFkjIqcsbKBZLcrjyJEjTmXcv39/GbG1bds2ef7558Vut0tpaanhlqpfv76IaOIoNzdX7r33XgHNIumJcePGGdfR888/LyLiJM48WZi2b99u5LnxxhvLrVN6erpxzkGzQrVt27bMeroo/te//uUkykCztv36668CyEcffWSsc9VVV0nnzp2loKDAcJ3Fx8dLrVq1DBfgpk2bjHp27dpVAMnNzRURcRLEgLRr107mzZsnUNbyJyLy3XffGWIANBeVj4+PPPnkk9K/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\n", | |
"text/plain": [ | |
"<Figure size 648x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"samples = forecaster(data[:T1], covariates, num_samples=1000)\n", | |
"p10, p50, p90 = quantile(samples, (0.1, 0.5, 0.9)).squeeze(-1)\n", | |
"crps = eval_crps(samples, data[T1:])\n", | |
"print(samples.shape, p10.shape)\n", | |
"\n", | |
"plt.figure(figsize=(9, 3))\n", | |
"plt.fill_between(torch.arange(T1, T2), p10, p90, color=\"red\", alpha=0.3)\n", | |
"plt.plot(torch.arange(T1, T2), p50, 'r-', label='forecast')\n", | |
"plt.plot(data, 'k-', label='truth')\n", | |
"plt.title(\"Total weekly ridership (CRPS = {:0.3g})\".format(crps))\n", | |
"plt.ylabel(\"log(# rides)\")\n", | |
"plt.xlabel(\"Week after 2011-01-01\")\n", | |
"plt.xlim(0, None)\n", | |
"plt.legend(loc=\"best\");" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Zooming in to just the forecasted region, we see this model ignores seasonal behavior." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjQAAADgCAYAAAAUu/wTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOydd3yURf7H399NT0hISKOFhN5VkGZDxQIocLazd1BRf4qe7RQs2O6sWO7Us6CoiOWsYAXvlAMR6UV6C4EQUkivm935/TH7sJuwm2xCNiQ479drXs+z+8wzM8/zTPnMd2aeR5RSGAwGg8FgMLRmbEc6AQaDwWAwGAyHixE0BoPBYDAYWj1G0BgMBoPBYGj1GEFjMBgMBoOh1WMEjcFgMBgMhlaPETQGg8FgMBhaPUbQGAxNgIiEi4gSkc5HKP4+IlLd0GONjOs/InJJc8TlEW6d91dEJorI3MMI/zgR+aXxKTQ0BhEZJiI/Hel0GI4OjKAxHLWISImHc4pIucfvK+o5d4yIbGuutLYmlFKjlFIfHel0eKKUekspNf4wgngCeNrzDxG5RkRWikipiOwTkXkiMsJ17O8iYnflpQIRWSQiQzzOHePKcyUiUiwiG0XkSo/jN4vIFtfxLBGZKyIRh5H+QxCRRFe4pSKyU0QuqsOvTURmiEi+iOSKyOMex86sVZZKXeLyXNfxwSLyg4jkiUiFj/CvFpHNrnO3ichwAKXUb4BTRM5qyms3/DExgsZw1KKUamM5YDcw3uO/2Uc6fa0NV6MXsDpDRIIDFXY98aYCw4GvPf57APg78AiQCKQCbwJ/8jh1litvJQK/ArVF3g7X8RjgYeAdEekuIqOBacCFruP9gc8DcGmvA/lAEjARmCkiPX34vQ04C+gHDAYuEZFrAZRSC2qVpQuBAmCB69xKYA4w2VvAIjIOfR+vANoAp6PLo8Vs4KbGXaLB4MYIGsMfFhGJEJF/unrfe0TkGREJEZF4dAPTzaNXGi8iJ4nIUhEpFJFMV4+23kZYRMaKyDKP34tEZKHH7+UiMsa1nyIiX7p6yTtEZLKHvyARedD1f66IzBaRWB9xXubqlfep9f9VIrK41n9TReRDH+H8KiKPishSoAzo6PrvStfxYBF50dU734ZuFD3Pbyci77qsEBki8rAlikRksujhq3+KSD7wV9FDVotc9zhHRN6tlaSxIrLdZUmY4RHPZBFZ4Nq3hqf+T0R2ucJ5QkTE2zUCo4FflVJ21/nxwEPAjUqpr5RSZUqpKqXUF0qp+2uf7DrvA3R+ifZyXCmlPgbKgb7AUOB/Sql1ruN5SqmZSqlyH+lrMCISB4wHHlRKlSql/gN8jxYV3rgGeFoptU8ptRt4Abi2Dr8fKqUqXen/XSn1NrDRh/9HXelY7roXGUqpfR7HfwJGi0hQAy7RYDgEI2gMf2SmA8cAA4HjgdOAe5VSecD5uHrYLpcH2IH/A9oBp6AbjEl+xLMIOEZEYkQkHOgO9HI1vNHAAGCxq0L/BvgF6AiMAR4QkVNd4dwDnA2cDHR2pWcGtXCJoEeA05VSm2od/gwYKCLdPP67AnivjvRfCVwNRANZtY79HzAKfQ9PAGrPrZkNFALdgGHAecBVHsdHAquBBOA54G/AF0As0AX4V63wxgKD0FaE60TktDrSPR44zhXvZfhuzAcCmz1+nwIoYF4dYR9ERMLQ15QFlHg5bhORS4EwYD3amjNBRB4SkRNEJLSe8N8SPazlzf3m47Q+QLFSKt3jvzVoa5A3+rmO1+lXRNqirVSz6kqzh/8w9DPo6BLiGa6OQJjlRym1HX1vuvsTpsHgCyNoDH9krgAeVkrlKqX2A49Ts7GtgVLqN6XUMqWUw1UJvwmc6su/x3nFwFq0EBkBLAN+c+2fDKx1+TkZCFdKPeWyCGwB3gYudQV1E/BXpVSmUqoCLcgu8bQ8iMh9wC3AqUqpXV7SUgp86rp2RM/7SED33n3xplJqs1LKrpSqPeH3YuA5V5py8JiH4hrKGQn8xWXl2Ae85HE9oEXjG657Wo4WaWlAe6VUuVKqhjUJeFIpVaSU2gksRDeWvvibUqrA5fcfaFHjjVig2ON3PLBf1f+hu6tEpABtuboCuKjWOV1dx3OBe4HLlFK7lFIL0PdgOPq+54rIU+JjOE8pNVEpFevDDfORtjZoIelJIVqU1kBEQtCCorA+v+jnvVsp9auPeGvTCRDgAnR+HwKchL4fnhSjn4PB0GiMoDH8IXGJgPaAZw82HV0B+zqnn4h8KyL7RaQIPSyR4GeUP6MtQCNd+z+hxdCprt+g52mkefbAgb8A7V3pTQG+8Ti2Cl2G413n24C7gReVUrUtKZ7Mwm2tuBKY40WoeJJRx7GOtY573s9UIBzI8Ujzi0ByHWHfCUQCq0RkrXhMpHXheV1l6Ibbn3Snu9LqjXxqNt55QHIdQ1QW7ymlYoEOwHYOFVc7XaKjnVJqsFLqU+uAayjrXHQj/mfgZuoQ042gBD13x5MYago3Ky129DyYmPr8ooeb/LLOuLCG0V5QSmW7Og4vAufU8heNnpdjMDQaI2gMf0hcPeksdKNr0QXYa3nxctobwEqgu1IqBj03oL5Gz6K2oPmZQwVNBrCpVg88Wil1viu9e4FRtY6HK6VyXec70XNYnhA9EbOutISLXrFzKXUPN4H3e2GxDy20LLp47GegG9Y4j/TGKKUG+wpbKbVXKXU9WiTcjp7I6hlmQ6idrkwf/tYCvTx+L0I/13P9iUQplY22nv1NRPwVuNa5TqXU92hr0wBvfkTkHam5ysjTrfAR9CYgpta9Oxb43Yf/Da7jPv2KSHe0laW+/HIQl1UulzrykCvcSmCHv+EaDN4wgsbwR2YO8LDoCb9JwFTgfdex/UCSiHhaAKKBQqVUiYj0B25oQFz/QzcSA9CWlVXoCaKD0A0o1lZE7nDNrwkWkWNExBIArwF/F5EUl78kEamxVFkptRoYB7wlronGtXGJo/fQq2AOKKWWN+A6avMxcKeIdHA15geHElxDPb8CT4tItGsuSU8ROdlXYCJyiYh0dKXR6rE39r0294lIWxFJQ8/18bXU/HtguGvoBZdAfAz4l4iMEz15PERExovIk94CUEqtRYuSu+pLlIhcJCJ/FpFY0ZyIHobxOoyjlLrWYy5XbXe8j3Py0XOAHhWRSNdcozHoOU3eeBe4R0Tau/LXHcA7tfxcA/xHKbWn1vWIa25YqOt3eK15QW8DU1zlLAG9ospzftKpwPx6rIQGQ70YQWP4I/MQumf6O3pi6mLcc0DWAF8B6a7hknbo4ZBJIlIC/BPfDeQhKKUKXHGtcs0XcQIrgI2uY5bp/xzgRPQQSQ7wKu5hlafRS2X/IyLF6MnDg6mFS6CcB7wrImf4SNIs9GRYv3vbPvgHWqz9DixFCxxPLkMPq2wCDqDvWTK+OQFY4brHn6BXGvmyrNTH1+jnuNwV1vvePCmlMlxpP8fjvyfQAvcxtIVhN3Aj8GUd8T0D3OrKK3WRj57ntB0oAmYC0z2HpJqIG9BDorlocTJRKbUVDr5bJtfD70vAj+iVSquBT5RS71gHXcNvV+F9uKk3emhpBXouTjna6mXxIDrv7wDWocvZMx7Hr0CLdYPhsJD6570ZDIajDdGrq/YDfZRepnvU4LIWlAMpta0JdZxzHPBPpdRJAU2coQauSenPKaXqnVxvMNSHETQGwx8Q0S+OO1kpVXtyZqunMYLGYDC0fo7ImzkNBsORQ0Sy0CuEJhzptBgMBkNTYSw0BoPBYDAYWj1mUrDBYDAYDIZWjxE0BoPBYDAYWj1HzRyahIQElZaWdqSTYTAYDAaDoYlYsWJFrlIq0R+/R42gSUtLY/nyw3k/mMFgMBgMhpaEiKTX70tjhpwMBoPBYDC0eoygMRgMBoPB0OoxgsZgMBgMBkOrxwgag8FgMBgMrR4jaAwGg8FgMLR6jppVTgaDwWCoRVkZFBTAgQNgt0PHjpCQAEFBgYszPx927IA9eyAlBTp0gPh4CA0NXJxNid0OVVUQFXWkUxJYnE5wOHw7pxPCwiA6GkJCjnRq/cIImkBQXQ1ZWbB1K+zeDe3bQ9eukJgIsbEgcqRTaGiNKOVuoEpKdGUTEeF2raTSMQSI8nKdN/LzYe9eyMzU/4Guc0R0QxUSouujbt0gORkiIw8/7spKyMiANWsgO1sLpjZtYPlyHaeIjsuKMz6+6fKrwwFFRVBaqstBVBSEh/t/fnm5FnxZWZCeDjk5uqxFRkJqqhZl8fEQE9N0dbdVjnNy9LPKy9PlOTJSp99y4eH6PoWGaudwaLFVVaXveVmZdqWl2lVU6GNKaQd663S698H92xNf16aUFjXt2+tnFxur70WbNmBrWYM8R823nIYMGaKO6HtoHA7Yvx+2bYPNm7WoCQ/XD760VGc60Jk2LU0XlMREnVG8oZTOmBUVOuNWVOj/27bV5zQ0IykFxcW64GRk6PM7ddIFNTo68CLLbteFSCl9r6xC5ulAF5KGVEYtAesZRUY2XSXtKV4OHNCN07597nxglVsrHzidujKPidEVTmyszitBQe7KzdNZYSiln31Y2KEuUL14K29XVrrzdkWFFmlFRXpbWgrBwRAX565Aw8P1NUZG6vS1ho6BVYYtV1amr7GoSF97cLDOM8HBbuf5OyhIl5fqau3sdvfW+t9u1+W6tNQtXKyG3ZtVpLpax19erp9FYiL07Knrg3bt/K9bnE4tXjZt0nWe0+mun7z5LSvTdZDTqdPYsaOuC9u2PTTv+UqD3Q6FhdplZekykZfnztMibstCfLy2RiUk6HqlTRt9TywBs3evFjAFBfrc4GC3HxH9fEpKtH+rjHTpol1Cgk63P/fKbq8pNPfs0eGK6PMt4eL5nK3n6nldnlj/BwUdmn9sNrd/z/Nq/+dv+bHKa1mZzsPW8xPR93jAAOjd27+wGoGIrFBKDfHL71EjaAYPVsvnzvVeeVsNqeWsB17bef5fO6NY+56ZwOHQBXrHDti4UWfAsDBdCQf7MH7Z7e7KREQXoK5ddfhWhV5aqvetxgbcGRh02B06QOfOumDFxR3ay1JKh5WXp61E6enuCiw8XG8rK2sW1JQUHV5s7OEr7+pq3fvYswe2bNEVmYjvAmodczp1AU9O1hVeXFzdvQGHw91DKSvTFV1ent4PDdXXZm0t563x8Nx6a8itCrmkRF9LTg7k5mpn3UfQlXlCgm4k4uL0b28izems2dhVVurnU1ysK1tP8WKzuRuougRTdbUOxxILDodvv57PwVMceYqdsDCd9shI9zYy0t1rtFxoqHtfqZoivKJCX1NhofvelZTotFnPs3blbDnrHlVW6mvz9G+zuRspm83d+FsVuvXbctY991U3gH5e1nPzVX7rup9Wjzs9XTdehYVu64TndVrXZ4lNS9DXFvne6qugoJr1lXUsPLxxQzqWcC4q0nEGB7sbWOtZWxZAK47gYJ3v1651WwrbtWuYAHY69bm+6rnwcHfZadNG15tZWW7xATotVlpr1w3V1TXLFrjFjhVXaKgOOyLCvzTb7Tr/WvWold8svAkESxhZ12WV47Aw/+JsyTiduq7t1AlGjw5YNH9MQdO/v1p+ww3+9+49K3Jvxyw8/SjlNv2FhenCWFmp92NjG9c7r6zUlYlSNRsIq2L2hsPhNjFalo3ISJ2x2rfXIis9XRdmpXQhio72XeHZ7fpaLCtSUJAOKyVFi4nISHfPuC6hU1zstlLt3q3TGRys701DrC5Wb6C83H19QUFaKHTooP87cEA3GqWl+rj1PIOC9POwGkRv48Leeiiez9lmcw/nhIbq9OTn1/QTGqqvyWrcrTAskVJe7m6ErR5jQoL+z3p2VmNVW6yGhdUvXpoDz56iZRmorj5UlNYuR7X/Dwpylxsrjx+uYHY63emqLU6sPFP7t2fnpXZ6PRseT+tBUpJurGs/C8vimZury9rOnfrZg1sIhIYGdq5KIKhtJaiudv9X+7m3axcYa6pSNfOd3a7jtIRAS7HMWZbm+rBE6NFIYaHuBBhB07QM6d9fLZ8yRTd4gcSzcbR69C2BqiotSioqdKGPiWl82izB5Nl7svJJdLR7SKNdO1155+ZqK0xBgfYbGanjb8rK3OHQIsGaExAe7hYuTV1ZeAohS5R46wU2BLtdPxubzd2oH62VXGvHW4ehQwctcKKjtdVx504tuq3hnVY0cdJgaDJamKAxk4IbiqcJuyURGqoFRlMQFKQFSUxMzf8tC0RBgbbEWD3SoCA9nty5c9PE7ytNlvk50Fim/KZsoCwRY2j51M7/TqcWN0uXarFjzY1rqvJmMBiaBCNoDP7jOXnUYPijYLNpC4yvCfwGg6FF0LLWXBkMBoPBYDA0AiNoDAaDwWAwtHqMoDEYDAaDwdDqMYLGYDAYDAZDq8cIGoPBYDAYDK2egAkaEZkpItkist7LsbtFRIlIgo9znxaR30Vko4i8JGJe2GEwGAwGg8E3gbTQvAOMqf2niKQAZwG7vZ0kIicCJwHHAAOAocCpAUulwWAwGAyGVk/ABI1SaiFwwMuhGcC9gK9XFCsgHAgFwoAQYH8g0mgwGAwGg+HooFnn0IjIBGCvUmqNLz9KqSXAf4F9Lve9Umqjj/BuFJHlIrI8Jz8/IGk2GAwGg8HQ8mk2QSMikcBU4KF6/PUA+gKdgU7AKBEZ6c2vUup1pdQQpdSQxLi4pk6ywWAwGAyGVkJzWmi6A12BNSKyCy1YVopI+1r+zgd+VUqVKKVKgG+BEc2YToPBYDAYDK2MZhM0Sql1SqkkpVSaUioN2AMMVkpl1fK6GzhVRIJFJAQ9IdjrkJPBYDAYDAYDBHbZ9hxgCdBbRPaIyMQ6/A4RkTddP/8NbAfWAWuANUqpuYFKp8FgMBgMhtZPwL62rZS6rJ7jaR77y4FJrn0HcFOg0mUwGAwGg+How7wp2GAwGAwGQ6vHCBqDwWAwGAytHiNoDAaDwWAwtHqMoDEYDAaDwdDqCdikYIPBYDAYDB4oBZWVUFICxcVQWqr3nU4ICYHg4Jpbz/2ICIiKgsZ8q7m8HNLTYdcu7crKIDRUh+trGxKi47KczWX/sNnc/5WXQ//+TXmHDgsjaAyGlohSUFGhKzxvLigI2rWD+Hi9bdvWXeG0dpTrM2+NqbgbG19lJYSHN33YlZWQnw8FBXpr7RcVQWQkxMToZ1d7GxbW8GuoroaqqrpdZaV3Zx2LiIC0NO1SUnTj1lAqKmD/ft3YOZ06bU6n27l+7zhwgOyKCkYMHgyJiQ27ZodDx7Fnj9tVVel7GhXl3tbeDw7W976gAAoL9dZzv7BQH09Kgl69oHdvve3Y0b/86HTCvn2wcyds3w4ZGTq80lItYEpK9HNqLBER+l4lJUFCgt5av5OSIDZW3xdLuFguK6tmGNHRNfOL3e4udw3l6qthos+3sjQrRtAEAqdTq+ENG3SmSUnRLj7+6Gl0mpKiIli9WldSvXtDhw4Nb8yU0pXH77/Dpk36v5gYXXBjYmq66GjtRHQlduAA5OXpxubAAe3y8/V/RUXu3lF4uHbe9tu3h549G5f2/HxYuxbWrYONG3WaSkt1PvIXm00LG08XG+tfWoKC3D0yz96ZpxPRlZ5n4+jrt+fW13/V1fp5V1e7ncOhjzkcOj7rOuLj3cLNcxsfr++9v/fb6YTcXJ1Pdu/W24wM3RiWlupwU1O1S0vT27oadaV0I5WZqRuMffv0NjvbLWDKyg49T0Q3ruXl+lq9ERamhU1IiPbjKQhqO+u+NSS/eBIcDGFhOEJC2F9ait1upxqoFqE6OZnqTp2o7tABe3Iy1cnJhMTGMjg5mZDcXPe1e17/AW/fJHbdMuAn4EXgK9fvB4DHAFtMzKENdWIixMVBTo5+TtbzyszU12wRG6vzQlmZdg0RDW3a6HsdGwtduui6ITMT/vMf+OYbt5+ePd0Cp1cv/Yx274YdO7TbuVOLh4oKfU5QEHTqpMNt106H0aaNDj8qSm+t/2w2nWbP8lF7W1qq70NOjs5jmzfr/OcLES3EunWDUaPcQjUp6dB2SCmdj2qXVaV8O6dTC7Ru3fy/1wFGVGNVWQtjSEqKWj5qlK4ASkpq9mY9f9tsWrHXdhER7v3oaHeBatdOZ8y6cDh0hl6/XjeoGzboOGsTHq4zeOfOuqLs3Fm75ORDGwer12TtW5nLZnO7oCD3vmUSDA11N9yRkS1TQDkcsG0brFgBK1fC1q01ewfR0brisFzPnroCqB3Grl36fluuqEgfi4vT+aC4WDcavhA5tFdis+nKrV07HU7btroyKS/XFVVFRc39ioqaFWt0tE5vr17ubdu2NeMoKtLixRIxe/bo/6OioF8/ne+sHqU3Fxmpr98SX3l53ve95cFAYrPpSt5TCIWGehdJwcE6/wYHH+qCgvT1WaLSui5v4sBm02XXm7PKdVmZuyG0GhvQDY3V2WjXTjdiu3Zpv9Yztdl0o5CWphu7qip3w71v36FpshrjuLhDXWysO08FBem8V1qq84NlGai9ra6uWea9uaAg93325qxnEhamnfWf5Vz12xXPPccHP//s16OOA8ahv1MzGohs106L+fbt3duoqINpLK+u5oN163jpl19Ym5VFfGQkN51wAvsLC3lr+XLO7dSJ2b1707agwN1gV1bWjFRE15We9ae1bdPG7U8p/ZzKytz1vrVvt+u6MTZWu5gYfW+84XDovLBli3abN+vflnC02dz7kZHQtatu3Lt21a5LF99he+B0OrE1tp4uL68pcvLzdf1h5deGWvoaSmGhjm/06IBFISIrlFJD/PJ71AgaEbXc+iFS08zYpo173+l0q3hPV16uC0FtgoLclZSna9tWixjLImA1nB066DHFAQN04xQeXrNnYe3n5gb+pths+to9rRKWxaJ2b8Hab9PmUCHkcLhN0xUVNbdOZ83Gw3K1RWB+vrbCrFgBq1ZpsSGiG/3jj4fBg3VFa1UcVuUB2l9KihY3iYnaz8aNuoICXclZ97x/f12ZWr32qiodV1GRdp77TmdNi4bV6NQnYGtjt+vnumWLFme1K77kZC1soqN1fklP1/9HROg8MnCgdt26NTzuuvDV+/fE6plZPUPP3pllkrbEtKc48Wwwrd9NmXZvlJdrYeMp2kpL9f91ubAwXblbDaC1HxPjPR6HQ4sVy1yfnq5dVpa+xuTkmg13hw7aJSc3boimBVBYWkry1Vdz9qBBnD9iBMFBQQTbbIQEB+v9ykqC8/IIzs6mIDubeQUFzN27lwPl5USEhjJ68GDOHzGCcUOH0i46+mC4mXl5vPLtt/zru+/ILSpiYGoqU8aP5/JTTyUiLAylFK99+y23v/EG3du354upU+nTubPb+pWTo+uO+HjdGTzS97e8HLZvp2T9esrLykjs21eLl+TkRg2R7s7J4bQHHuD6M89k2iWXBCDBh5JfUoIAsZ4isLEYQRMYhnTvrpZPnKgzV2MtE3a7zrCFhVrt5uTo8UhL/WZnH2pOTU3VjWj//rpxio/3L67ycti7VzeEOTnuRsGzF1W7hyXi3dzsOU5dWelutL1trX1Pq0JtLJM4aOHSmDHf0FC30LHZ9LWCFoKDB2s3aJDvRgW0hcESCJbQKS7WFZungElMbHj6Ao2r4jvYu9u6Veervn21eDnmGOjRQ1sk/kDkFRURHRFBqB891xZHZaXbgnSU8c6PP3Ldiy+y5OmnGdGnj1/nVDscLFy/ns9//ZUvli5lT24uQTYbpw0cyLghQ1i2bRsfL1qEw+lkwrBhTBk/ntMGDkS8NPwL16/noqeeotJuZ/ZddzFu6NCmvsQmIz07mzOmTSOvuJgFjz3G8T16NCqc7IICTrn/frbs3cu4oUOZ++CDTZzSQ8kvKWHwHXdQUFrK09dey8Szzmq8dQiMoAkUQ/r3V8unTNE9pUBit7t7DSkpdTfILRlrpr3nZDVPV1zsHkLwdOHhNfdF3MMwlqXL05WV6V5+jx7aEtO1a+OHwZTSYUZGNu29aC6Uar6Jri2AgpISVmzfzrKtW1m+bRvLtm5ld04O155xBm9PmXKkk2fwYPTDD7M1M5Ptr7/uVXDUh1KK5du28fmSJXz+669s2rOH6IgIJp51Fv937rl096NezsjJ4bwnn2TVjh08evnlTL344kalJZBszczkjGnTKC4vJyYykqKyMn549FGG9uzZoHCKyso4fepUNmZk0CUxkdDgYNa+/HKAUq1RSvGnJ57gu5UrGdKjB0s2beKUfv3416230jclpXGBGkETGJpN0BgaxLKtW3nw/ff5v3HjWkyvy+l0UlZZSVllJaUVFZRVVemt9buyklLX8fLKSoJsNkJDQggJCiIkOPjgNtRjPzk2lh4dOhAViJUyrQCn08lvW7bw6+bNLHOJl62ZmQePd2vfnqE9e5Kenc3GPXvIee89Qv5g1qmWSnZBAR2vvZb7LryQJ666qknC3JmVRUJMDNEN7HyUV1Zywz/+weyff+bCE0/knSlTaBMR0SRpOlzWp6dz5oMP4nA6mf/oo8S1acPpU6dyoKSEH6ZPZ1ivXn6FU15Zydjp01m8cSNfTZvGtytW8M6PP1L44YcBFXDPfv4597z9Ni/ecAO3jRvH2wsWcPfbb1NaUcH9F13E/X/+M2ENtZy2MEFjapQA8ukvv5BXVMS1Z5zROk3sh4HT6eS5L77ggffew6kU89es4eUbb+SWc84JaLzZBQU8OHs2O7KyDoqWsqoq935lJRXe5ko1ER3btaNnx47adehAjw4d6NmxIz06dCAi0BP0jgAl5eW8+9//8vK8eWxyTW7uFB/P0J49uWbUKIb27MmQHj0Ozqv4fMkSLvjb31i8cSOnDRwY8PSlZ2ezOyeHzvHxdIqPP+LlsLisjHf+8x/mLFxISFAQCTExxEdHEx8drfdr/VZKUVhWRkFpKYWlpRS4XGFZGQUlJRSUlhLXpg0vTJpEUCOHwj5ZvBiH08llI0c22XV2bd++UedFhIXx3l/+wuDu3bnnnXfYvHcvXzzwAN07dEApRXF5OfsLCry68JAQurVvT7f27emanEzX5GQim6jMrdi2jdEPP0xYSAj/feKJgxaNn558ktOnTuWshx7i+0ceqWexs9MAACAASURBVHe4rtrh4NJnnmHh778z+y9/Yezxx7MxI4Pi8vKDzzIQLN6wgb/OmsWFJ57IbePGISJcf9ZZjBs6lDvfeovpH37IR4sW8a9bbmHkgAEBSUNzYCw0ASKvqIguEydSVllJWlIS0y+/nCtOPbXRlU5rIis/n6tnzGD+6tVceOKJvDBpEre89hpzf/uNu88/n6euuebwxm198NXSpUz6xz8oKivj+O7diQwLq9NFhIYSFR6uneu/qPBwvXXth4eG4nA6sVdXU1Vdjb26GrvDgd3hoMpu19vqajIPHGBrZqbb7dtHTmFhjfSlJSUxvHdvTujdmxP69OG4rl2PeAPbWHZmZfHPb77hzfnzKSwtZUiPHtw2bhxnHXccHdq183leSXk58VdcwW3jxvHs9dcHJG1KKX5at44X587lq99+w7OOS46NpXNCAikJCXSOj6eza9slMZG+KSkkBGgIeWdWFv/4+mvenD9f588ePYgKCyOvuPigszdgrprNZiM2KoqI0FD25uXx2f33c/4JJzQqbSffdx+FZWWsC/CQR0NZsHo1Fz/9NNUOB+2io9lfUOC1MyIiJMTEUF5VRUmtVY3t4+Lolpx8UOj0S0nhT8OHE96AycWLN2zgnEcfpV2bNvz4+ON0qyXWMnJyOH3qVLILC/l++nRO8CFqnE4n1734Iu/+97/8c/Lkg527T3/5hYv+/ndWzpjBoO7d/U6Xv+QWFXHclCmEh4SwYsYM2tZeMQp8v3Ilk195hV3Z2Uw6+2yevvZa/8RVC7PQGEETIB778EMe+uADXpk8mTfnz2fl9u3079KFx6+8kj8NH97ixoabiu9XruTqGTMoLi/nxRtuYNLZZyMiOBwOprzxBv/85hsuOvFE3r3zziazWJSUl3PnW2/x5g8/cFzXrrx/113079KlScI+HApLS9m2b99BkbMuPZ0lmzezx7XCLTw0lOO7d+eEPn0Oipy6xMCRRinFz+vXHxQKAlx00klMGT+eEb17+52nxzz8MDuzs9n86qtNmr7yyko++PlnXpo3j7W7dhEfHc1NY8ZwSr9+7M3LY4/LZeTkHNwvtFbKuUhs25b+XbrQLyWFfikpB/cT27ZtcJlVSrFowwZe+Oorvli6FJsIF598MlPGjz9keMKyPuQVFR0UOLlFRYgIbSMjiY2Kom1UlN5GRtImIgIRodrhoPuNN9I1OZmfnnyywfdsd04OqRMn8sSVV/LAxRc3+PxAsyMri4dmz8Zms5EcG+vVJcTEEBwUhFKK3KIidmRlsXP/fnZkZbHDY5uRm4vT6SSxbVsmjxnDzWPH1lveflyzhgmPP07nhAQWPPooKT4WIOzJzWXUtGnsy8/nu4cf5qR+/WocV0rxl7fe4oWvvuLRyy/nwUsvPXhs+datDL3rLj5/4AHOGzHi8G+aB06nk3MffZT/rlvHL08/zeA6BFNpRQXT58zh+S+/JCEmhn/cdBMXnXRS3REYQRMYWpKgKa+spMvEiQzv1Yt5Dz2E0+nk019+Ydrs2WzZu5fhvXrx5FVXMerYY49I+jbv2UN6Tg65RUWHuBzXNq+4mO7t23P+iBGcN2LEIb2S2lTZ7Ux9/32e/fxzBqSm8tE999CvlqhQSjHjyy+5++23GdG7N19OnUpi7Xe0NJBfNm7kqhkz2Ll/P/ddcAHTL7+8xVs99uTmsmTTJpZs3sySTZtYuX07Va7eeVpSEuOHDePykSMZ3gCR0FhemjuX9Oxs2kREHLRKtXFZraxtVHg4q3fs4MW5c2sIhZvHjqVzQkKD4/zHvHnc9vrrbH71VXp16nTY17AnN5dXvvmG17//nrziYo5JS2PK+PFcNnJkvaK5uKyMPXl57MrOZmNGBhsyMvh99242ZGRQ5PGOmfjoaPp36UJaUhKdXMNXB127diTHxh60vlbZ7Xy8aBEvzJ3Lim3baBcdzU2jR3PLOec06n7VxzOffca977zDqhde4LgGvuTs6U8/5b5Zs9j++uv1lvHWTpXdzqING3hx7lzmLltGcFAQl55yCndMmOC1oZ/722/8+amn6NWxI/MffZTkuLg6w9+bl8eoadPIPHCAbx9+mJM9RM3jH33Eg7NnM2X8eGZMmlSjXOcWFZF45ZW8MGkSUyZMaLoLBp78+GOmvv8+r958M5PHjvXrnNU7djDx5ZdZvXMnmW+/Xfd1G0ETGFqSoHn1m2+45bXX+PnJJ2uMR1Y7HMz68Uce+fBD9uTmcuaxx/Lk1Vc3eIb84fDJokVc/PTTNf6z2WwHx+wTXNu4Nm1YsX07a3buBGBgairnn3AC5w0fznHdutUokFszM7ns2WdZsW0bt5xzDs9ed12dDcmnv/zClc8/T+f4eL55+GF6duzY4OuwV1cz/cMP+du//02XhATe+8tfalQgrYlKu52V27ezZNMmFv7+O9+tXEml3U7X5GQuPeUULj/1VAakpjZ5vL9t2cLwu+8mLCSEyrqW8buo/Q6RxrJr/3663nADz0+cyJ1/+lOjw1m+dSvPfvEF/168GAUHlwafOmDAYQtBpRSZBw5oceMSOBsyMkjPyWHfgQM4ar2VN8hmo31cHJ3i48nIzWXfgQP0TUnhjvHjufL005tsLoc38ktK6HzddVx88skNXj02aMoUwkJC+PXZZwOUupbJtsxMXpo3j5kLFlBaUcHI/v25Y8IEJgwbRlBQEB8vWsQVzz3HoG7d+O6RR2q8W6cuMl2iZk9eHt889BAjBww42B5cffrpvD1lyiHD7Uop2lx8MTeOHs2MSZOa7Bp/WreOMx58kEtOPpnZd93VoDLx5a+/ct6TT7L8+efrXpZuBE1gaCmCxuFw0Pvmm0mIiWHJM894zUQVVVW8+u23PPnJJ+QWFTFh2DCuOv10xgweHNAZ/VV2O31uuYXoiAhedaUxISaG2Kgon3NadmZl8eXSpXz+668s2rgRp9NJalIS5w0fznkjRrA7J4db//UvQoKCmHn77X6bTJds2sSExx9HKcWXU6ceYqKti40ZGVw1YwYrtm3j+jPPZMakScS01qXcXigsLeXzX39lzsKF/LhmDQ6nkwGpqVx2yilcNnJkoydc1ubip57ih9WryXjrLaLCwyl3rfYqraigxLUtraykpLycxLZtOaFPnyazGA287TYSY2L4zxNPNOr87fv20eeWW4gKD2fSWWdx6znnNNl9qQ+Hw0F2YSF78/K0O3DAvZ+XR1R4ODePHctZxx0XkLli3rjl1Vd5a/58MmbOJCk21q9zNmZk0O/WWwNiGWgtFJSUMHPBAl6aN4/07GzSkpI4Z8gQXvvuO07q04d5Dz3U4Lpl34EDjJo2jd05Odw+bhxPffYZ44cO5dP77yfYxxzK/rfeSu9OnfjsgQea4rLYn5/PcXfcQdvISJY991yDV5v9snEjJ913H98+/DBjjj/et0cjaAJDSxE0/168mD8/9RSf/vWvXHDiiXX6LSorY8aXX/KPr78mt6iI8NBQzj7uOC444QTGDxvmd6/AX16eN4/bX3+d7x55hNGDBzf4/JzCQuYtW8bnv/7KD6tWHezVn9KvH7Pvusvn+LIvtu/bx9jp09mdk8N7d97Jn08+2au/aoeD4vJyisrK+HLpUu6bNYs24eG8fuutjZ4I2VrILijgk8WLmbNwIYs3bgRgRO/eTLv4Ys49jGXwO7Ky6Dl5Mvecfz5/v+aapkqu39w/axbPfvEFOe+916g3lk57/33+9u9/s+uNNxqc745GNu3ZQ99bbjlkfkZdPDR7Nk988gl7Zs5s0XO3moNqh4Ovli7lha++4n8bNnD2oEF8/sADjbasZeXnc8a0aWzIyODUAQP47pFH6pyIfM706WTl57PyhRcaewkHcTgcnP3wwyzZtImlzz7LwLS0BoexLTOTnpMnM+uOO7h61CjfHo2gCQwtQdAopRh+993kl5Sw6ZVX/F7RVO1wsHjjRj5bsoTPliw5+MbN0wcO5IITTuC8ESMOu8IpKiuj+403ckxaGgsee+ywe9ol5eX8sGoVxeXlXHnaaY1evZVXVMSfnniCxRs3MnrQIKqqqylyiZeisjKKy8spq/VNl3OHDOHN226jfT1j2kcb6dnZfPS///HGDz+wv6CA7a+/3ug5SLe//jqvffcdu954g47+vt26CbF6gB/ecw+XnHJKg851OBykTprEsV278vVDDwUoha2PsY88wuqdO0l/881655Eppeg1eTJdEhP58fHHmymFrYMdWVl0SUz0aU3xl+yCAt7+8UduHju2XivPza+8wseLF5M3e/ZhxQnwyAcfMP3DD5l5++1cd+aZjQqjsLSU2Msu45nrruPu88+vw2PLEjTmPTRNyM/r17Ns61Zeu+WWBjXwwUFBnDpgAKcOGMALkyYdfOPmp0uWcMtrr3HLa69xQp8+vHzjjY1+zfZzX3xBblERf7/mmiYZNmgTEVGvBcof4mNiWPDYY9zx5pss2bSJtpGRtI+NpVfHjkRHRBATGUmMtY2MpHN8PGced9xRu0qsLlKTkrj3wgsZP2wYA267jSc/+aRRY+55RUW8NX8+V5x66hERMwDDe/UiPjqaecuWNVjQzF+9mr15ebx4ww0BSl3rZMr48YydPp2PFy3iytNPr9Pvim3b2LZvH/ddeGEzpa710FSTo5NiY/2+v2nJyRwoLqa4rKzBw0OezF+1ikc/+ohrRo1qtJgBiImMJDQ4+JBXT7R0jKBpQp7+7DOS2rbl6noqk7oQEYb27MnQnj154qqr2JiRwWdLlvDqt99y/pNPsuallxr88qWs/Hye++ILLj755GadgOwv4aGhvHbLLUc6Ga2GvikpXHfGGbzyzTfcMWECqUlJDTr/te++o6yykrvOOy9AKayfoKAgzhkyhK+XL8fhcDSoAzBzwQISYmIY30LePN1SOHvQIPp07syLc+dyxWmn1Sn65yxcSEhwMBc2QafEcPikuoZN03NyGr0AoLisjCuef55+KSn8c/Lkw0qPiJAUG0t2KxM0zTNjrRVRUFLC9n37Gnze2p07+XbFCm4fP77J3q8iIvTr0oVpl1zCl1Onsi8/n0kvv0xDhwkf++gjKu12Hr/yyiZJl+HI8/CllyIiPPzBBw06r6KqipfnzWPs8ccHZOVUQxg/dCgHiotZsnmz3+fkFhXxxdKlXHnaaS1+eX5zY7PZuH3cOJZv28YvrvlW3nA6nXy0aBFjBg8O2JtpDQ0jzdUpSc/ObnQYq3bsIKewkKeuuaZJPsGSGBPT6iw0ARM0IjJTRLJFZL2XY3eLiBIRry9lEJEuIvKDiGwUkQ0ikhaodFrszcvj7pkzSZk4kb633soPq1Y16Pxnv/ji4OqGQDCkZ0/+dvXVfLZkCa9//73f523NzOT177/nxtGjG7U82tAySUlM5LZx43j3v/9lfXq63+e9/9NP7C8o4O4jaJ2xOHvQIIKDgpi3bJnf53zw88/Yq6u5/jDM6UczV48aRWxUFC/OnevTz/82bGBvXh6XNXCozxA4LCtrek5Oo8PY4vp2WlO9VDSpbdujz0IjIkkicr6I3Coi14vIMBHxRwi9A4zxEl4KcBawu45z3wWeUUr1BYYBjZet9bBpzx4mvvQSXW+4gRe++ooJw4bRt3Nnzn/yyTp7OZ5k5OQwZ+FCbjj77CZfmeTJX/70J0YPGsQdb77pdyM27f33CQsJ4cFLLglYugxHhr9eeCHRERFMfe89v/w7nU6e/fxzBnXrxunHHBPg1NVP26goRvbv3yBB8/aCBQzp0aNRKzf+CESFh3PD2Wfz2ZIl7PbROM5ZuJDIsDAmDB/ezKkz+CI5NpbQ4GB27d/f6DC27N1LWEgIKU308sajashJRE4Xke+Br4GxQAegHzANWCci00XE54dPlFILgQNeDs0A7gW8jpuISD8gWCk13xVOiVKqzJvfw2Hp5s1c8OST9Lv1VuYsXMhNo0ez9bXXmH3XXfwwfTod27Xj3EcfZa3rxXJ18cJXX6GUOqyXhPmDzWZjluvdApc+88whq39qs2zrVj5etIi7zjvvD7ci6I9AfEwM911wAV/99ptf4vvr5cvZvHcv95x/fouZVD1+6FB+372bnVlZ9fpdtX07q3fuNNaZerj13HNRwD+//vqQY/bqav69eDEThg37w34ZviVis9lITUo6bAtNjw4dmux7gUfbkNM5wA1KqaFKqRuVUtOUUncrpSYAxwKr0JYWvxGRCcBepdSaOrz1AgpE5DMRWSUiz4hIkzwhpRTfrVjBaQ88wIh77uGn9euZdvHFpL/1Fi/fdNPBF3Mlx8Wx4LHHaBMRwdkPP8xWlynPG/klJbz+ww9cesopdGmG92Ekx8Xx7p138vvu3dz11ls+/SmluO+dd0hs2/aITv40BJYpEybQPi6Ov86aVe/cqmc//5wuiYn1f5+lGRnnmtg7b/nyev3OXLCAsJAQLm3Cr0IfjaQmJXHBiBG88cMPlFZU1Dg2f/Vq8oqLm/TL2oamITUxkV2HMYdmS2YmvZpwWkFSbCxllZWH5KGWjE9Bo5S6RynldVhIKVWtlPpCKfWpvxGJSCQwFajvxRHBwCnA3cBQoBtwrY8wbxSR5SKyPCc/v940nPfEE4ydPp3tWVk8P3Eiu996i0evuMLruzxSk5KY/+ijOJxOznzwwYMfFKzNa99+S0l5OfdccEG98TcVZw8axL0XXMBr333Hp7/84tXPD6tW8d9163jwkkuOqrfoGmoSFR7OQ5dcwv82bODbFSt8+vttyxYW/v47d06YQEhwy1nc2KNjR3p36lTvsFNFVRWzf/6ZC044wUxk9YMpEyaQX1LC+z/9VOP/OQsXEhsV1agXaxoCS1pycqMnBTscDrbt29ck30azSHK1i9kFBU0WZqDxZw7NFBGJEc1bIrJSRM5uRFzdga7AGhHZBXQGVopI7UX/e4BVSqkdSqlq4AvAa+lTSr2ulBqilBqSWM+QSmFpKV/99huTx4xh+7/+xZ1/+lO9nxno07kz30+fTkFpKWc99NAh5reKqipenDuX0YMGcWzXrnWG1dQ8dsUVDO3Zk0kvv3zIWLnT6eS+WbPompzMTQF84ZGhZTDp7LPp3r4997/7Ls5a3xiyePbzz2kbFcXEsxpkVG0Wxg8bxk/r1lFc5ntk+culS8kvKTHDTX5yUt++DO7enRfnzj1ouSurrOSLpUu58MQTCTMrxFocqYmJ7C8ooLyeqQTeSM/JwV5d3aQWGqujn1NU1GRhBhp/Jvder5QqAs4GEoHrgL83NCKl1DqlVJJSKk0plYYWLoOVUrUHz5cBcSJijd+MAjY0NL7aWJNoxw0d2qDlnoO7d2futGnsys5mzCOPUFhaevCYtWLk3ma0zliEhoQw5+67cTidXP7ss1Q7HAePzVm4kDU7d/LElVeapa1/AEKCg3nsiitYu2sXcxYuPOT4jqwsPl2yhJvHjDmsl3YFinFDh1JVXc381at9+pm5YAFdEhMZ1QImM7cGRIQ7JkxgY0bGwfv69bJllJSXm+GmFoq10snXZO662LJ3L0BgLDStaB6NP4LGmj14DvC2a/5LvTMKRWQOsAToLSJ7RGRiHX6HiMibAEopB3q46UcRWeeK6w0/0lkna3ftAuCYRqyOGDlgAJ/+9a+s3bWLCY8/TnllJU6nk2c+/5zje/Q4YitGunfowGu33MLijRt57KOPAP3l5mnvv8+gbt0a/AZWQ+vlklNO4biuXXlw9myqan05e8aXXxJks3HbuHFHKHV1c2KfPsRGRfkcdtqdk8P81au57owzmu1jj0cDF598MsmxsQeXcM9ZuJD2cXGcNmDAEU6ZwRtph7F021qy3bO+T/9UVcG+fbB3r9vt2wcHDkBpKXjUHa1xyMmfwfQVIvIDerjofhGJBrzbtT1QSl1Wz/E0j/3lwCSP3/OBJlUJa3ftIjYqis6NXNJ2zpAhvHfnnVz+3HNc9NRTXDNqFFv27uWje+89oitGLj/1VOavXs3jH3/MqGOOYfWOHezKzub1W281lf8fCJvNxt+uvpqx06fz+vff838u8ZJXVMTMBQsO7zMHSkFxMYSHQx0f2GssIcHBjD3+eL5evhxnXh42z0mIoaHM+u47lFJce8YZTR730UxYSAg3jx3LI3PmsGzrVr5ZsYKbxoxpslUwXlEKSkrAc5giNBQiIrQLZNx1pam4WKfJqqutrTWRXgRCQrQLDXXvNyOWhaYxS7e37N1LTGSk9y+tKwUFBfq5hIfDoEGQlgYOB5SV6Xtz4ADk5+t7VFEBIiS6hr5y9u7V51vlvwW3K/4ImonAccAOpVSZiMSjh51aFevS0zkmLe2wxMelI0dSWFbG5FdeYf7q1XRNTuaCFvC155dvvJFfNm3iiueeo6KqijOPPZazBg060sn6Y+F0Hn5Br6zUH3uzeklBQYc6mw2Cg/XW6dSVksMBTieju3bltD59eGzOHK7t3582ISG8On8+ZZWVdX9gzhdVVZCbq+Pp2FFXamVlOu7oaGjTxt0wNASldKVZVnaw8hzXvTtzFi5kWXExw884A2JjobISZ2Ymb99/P6N69yatulr3KMPDISpKb1s6ns+outr9u7paP8fISGiiN4t7Y/KYMTz5ySdc9Pe/U2m3B+ZletXVOt+Wl+v80L49HHsstGune/3Z2drl5mq/FuHhbqHT1J1CTxED+qPFQ4ZA5866Ua6o0OXNcmVl2m9JiXbFxfp6QKdNKb0NC3O7phI8SoHdTsc2bQgOCiI9K8tdB4jUvDc+BKG1wqlG+1ZZCXl5Os+lpMBpp+lyXN+iALsdysuJKisj8q9/JTsiApKTtejJynKLQNB1RAv62r0/gkah3z8zDngUiAJaQU3iRinF2l27uKauz6D7yU1jxlBQWspfZ83i3gsuOOwvsjYFbSIi+PDuuxlxzz1UVVfz92uuOdJJatlUV7srNJGaYsFz31Og2O3af1WV3joc+rhnD08p7SIidGNfX0PldOqKs6REnxcVBX37QlKSjs9KY+3Kt6JCp8PqTUZEQFgYEhbG3+64gxMmT2bG5s3cc9NNvDx1KmMHDKC/zaYblbi4uitipXTjZPXmhg6FHj0gJkYfy8/XJuqtW7W4ENH+YmIODbeqyp32qqqax2JjoWtX3dC0bcuY8eMJevdd5u7fz/B+/Q56W5iezs7sbB57+mk491xdqWZm6rhzc92VfUSEvn9NKQ6cTv0cqqrcz92zMvfVCHv6CQqqaaEIC9P3KyxMh5eZ6b4OpZpOrNntYLeTLMJlw4Yx65df6Bofz/A2bWDPHndDaeVxm8392x9XXq7zicOhr69bN+2SkvR1emJ9UFcpt0WgsFDnx/379T2w0hAdrUVeYzoHdYmYqKiafkNCdFx1UV2tr7OsTG8tS0ZBgXaW4LHSHhmpr70uK6bT6Q6zstJ9nZGRBNtsdI6LI33fPh2XVZ9YzhLDUNPCJMKWjAxO6tVLC8jKSr2NioJhw6B7d10+/cWyTsXEkJiURLYInH22O/1lZTr80lJ9H7ysEj5S+CNoXkEPMY1CC5pi4FP0kuqWh9OpnUcGSM/Opri8nGOSk3VBsh5YcHCjegb3XXghF55wAt3rG69sRgZ1786cv/yFjIwMjo+Lc19ncLC7R++L6mp3pW1V4OCuZEGHYd03y9UWc56Fzpurrq4pBDzvvacwsH4rpSsHT1dX78Kz8DscNRt/z+sJDdW9x44ddXqtxspTsNjt+pgVbkSEboTbt9fnxsTo/6xKLChI3/P8fN1g7N6tGyqldJrbtNF+q6p0JeBw6PSkpOhKt317XTEcZk91xKhRnP/99zzz3nsEd+5Mdn4+93z8MfTrBzt3wpYt+p6EhOjrsQSA3e7uQaekwKmnQqdONZ+xiL72du2gf38dTnY27NihnWcF7XTqa46L0/7j4/XvqCjtaomfdsBJJ53EvHnzePzxxw/+P3PmTNq2bcsFF1+s73NCAvTqpQ9WVLgbl337DhUHtUWOp3WkttXE2nrmP5tNnx8To+9V27b6d23x6/nb2lrlxZ+GuaJC552CAn0NmZm6Z+1Z/qz7b6XNG57+w8N1gx0Xx5Qbb2TWL79w2cUXI2ed5b2MelqPrHrA01n/VVfrbVycWyzEx/s3lCTifv7t20Pv3vr/qip9vVlZsGuX2wpgs7nzjFVneArMqqqaDbzTWbeIaSjBwfoe+hI+1dVaeBQX6/RbAi07221BDQ2tKURsNp2HU1O11aNt2xqdgdQ33mBXdTX46pQ6HId0dMrz89l94ADX9ejhrtv69dP34jA73ElJSeR4zumxnkkLfXWC1PcyLhFZqZQaLCKrlFKDXP+tUUod2ywp9JMhAwao5bfeWrMyCQqCkBC+WrWKP/3tbyyZMYMRfftqZVlSopUmHFpxWJmgtkL21thYBc+K1xoS8KzoalcKVlhWnJ6iIS6u4b1Mq1cSFKQre5vNraLLy/XWapxrX4PTqeOLjnYXrthY3RiEhLh72ZYZtqTErc49zaLWdYSEuMdaLdOs1SO1eqm1hZGnQKqs1Gm2XGGhvjZray1p9Hb/rF6m67kTF6cr2/h4d0UaFeX/PBCroreebUMpK9M9uuxsXVFnZ+v73KOHFg2JiQEZp9+4cSMDBgzA6XQyePBgli9f7jZFO52Qk6MF18aN+jlaloGBA3X+aUyPy+nUlbrdru9xZGSDr+2ZZ57h3nvvZffu3aSkpFBYWEiHDh245pprePXVV/0LxJs4KC7Wx4KC3HkxPPzQfBkZWXMYJCzsyM0XsIYfLeudt7rH87/QUPc1hYcf0pAtWrSIQYMGEXW4jXxzYLfrvLR/f02BAzpvWXWVVV9FROhrtjoXR5rKSnednJurn0Viok5rTEydeeraa6/lxx9/JCMjw+/o1q9fz8CBA/nggw+47LI6p642mHHjxpGZmcnKlSubNNyGICIrlFJD/PHrTy1td72pV7kCT8SPWr6KUgAAIABJREFUScHNTng4TJ7steCvdX3Nd8CkSTWVpVKHmvIrK3UlAjXnKwQFuU2y1lapmsMXVmPsGZbdruOMjXUXRKvitCrUsDBdAe/YAb//rhucsDDdIPtqSKurdaGvqtJm3jPPhC5dfDfWnlYYqydtVd6NfdFadbU7LMsSdLhj4SEhdat/z560N9eUWKK0sURGate5MwwerAVSMwxR9u3bl2uvvZaZM2dyzz331BxXt9l0zzA5WfdkDxzQwqtDh8bnAyvcwxxLHzduHPfeey/z5s3j5ptv5qOPPqK8vJzrr7/e/0CscpWc7LYA2O3uzkVrISxMl2vXRNHD5eSTT26ScJqFkBBtwbHm4lgdwvDw1vEMrTo9IUEPwzWA1NRU9u7dS1VVFaF+dry2bNkCQC/LctmEJCYmsmZNXS/2b1n4U4O9BHwOJInIE8BF6O85tTx8NGhr166le/futKndUFrj/y1hcqFlSTj+eN2T375d96DtdvdwR1CQVv1FRbrQ9+unK21/Vq9YgqMp30NihdmctKC33DaYZpxv9dRTT3Hsscdy0UUX+fYk4s53LYA+ffrQvXv3g4Jm5syZDBgwgCFD/Oqc+ca8i6l1cwRWHB0p0tLSUEqxZ88euvkphixB07NnzyZPT1JSEtnZ2SilWsz33+qi3tZBKTVbRFYAZ6DfCXOeUsq/z1C3ENauXcsxreWFXDabu3cyfLieG7B5sxY4TqfueY4YoYcsArCE1nB0kJCQwO23336kk9EgRIRx48bx2muvsWzZMpYuXcrzzz/fKipSg6EpSE1NBSA9Pb1BgqZ9+/bENGTir58kJSVRVVVFUVERbVvQ5F9f+BQ0ItLO42c2MMfzmFLK25e0WxxlZWVs3bqVSy+99EgnpeEEB2vhkpICJ5+sh7G8vWfAYDhKGDduHC+++CLXX389wcHBXHnllUc6SQZDs2EJml2uF8H6w5YtWwIy3AR6yAkgJyenVQiaugYkVwDLXdscYAuw1bXv+yt4LYwNGzbgdDpbj4XGF+HhRswYjnpGjhxJdHQ069evZ/z48QcrVIPhj0BKSgoiQrrrUz3+EEhBk+Saw5V9GF8Bb07q+tp2V6VUN+B7YLxSKkEpFY9+H81nzZXAw2Xt2rUArV/QGAx/AEJDQxnt+qBqgyYDGwxHAaGhoXTs2NFvQZOfn09OTo4RNC78mWE5VCk12fqhlPpWRB4LYJqalHXr1hEZGen3eKTBYDiy3HbbbYSEhDBmzJgjnRSDodlJS0vze8hp69atQGBWOEHNIafWgD+CJldEpgHvo5duXwnkBTRVTcjatWsZOHCg+a6RwdBKGDlyJCPNF6ENf1BSU1NZsmSJX34DuWQb3IKmtVho/GnlLwMS0Uu3vwCSXP+1eJRSrFmzhoEDBx7ppBgMBoPBUC+pqalkZGTgsN4uXAdbt27FZrMFbAQiPDycmJiYViNo/Fm2fQCY0gxpaXKysrLIy8sz82cMBoPB0CpIS0ujurqazMxMUlJS6vS7ZcsW0tLSCAvgB04TExNb/5CTiLyglLpDRObiekuwJ0qpCQFNWRNgJgQbDAaDoTXh+S4afwRNoIabLKyX67UG6rLQvOfaPtscCQkElqAxQ04Gg8FgaA2kpaUB+l00dX2yQinFli1bAv5Zi8TERHbu3BnQOJoKn4JGKbXC9Q2nG5RSrfLtVmvXrqVz5860a9eufs8Gg8FgMBxhunTpAlDv0u2srCxKSkqaxULz22+/BTSOpqLOScFKKQeQKCKt8h37reqTBwaDwWD4wxMREUFSUlK9S7cDvcLJIikpiZycHJzOlvdN6tr4s2x7F7BYRL4CSq0/lVLPBypRTUFVVRUbN27knHPOOdJJMRgMBoPBb9LS0uq10DSXoElMTMThcFBQUNDiRzv8WbadCcxz+Y32cC2azZs3Y7fbjYXGYDAYDK2K1NRUvwRNWFhYvROHD5fW9LZgf5ZtT2+OhDQ1ZoWTwWAwGFojaWlpfPXVVzidTp8vhd2yZQs9e/YM+EtjPQVNnz59AhrX4XLUvj533bp1hIaGBtwcZzAYDAZDU5KamkplZWWdVpHmWLINrevzB0etoFm7di19+/YlJCTkSCfFYDAYDAa/sd5F42ticHV1Ndu3b28WQdOahpyOakFjhpsMBoPB0Nqw3kXjax5Neno6dru9WQRNQkICcJQIGhF5xWO/q78Bi8hMEckWkfVejt0tIkpEEuo4P0ZE9orIP/yN0yIvL4+9e/caQWMwGAyGVofn24K90VwrnABCQkKIi4tr3UNOIvKKiFwGeH729tMGhP0OMMZLuCnAWcDues5/DPi5AfEdZN26dYCZEGwwGAyG1kd0dDTt2rXzOeTUnIIGWs/nD+qy0PwL/ZXtTiKyVES+BzqIyBgRaVNfwEqphcABL4dmAPfi5ftQFiJyPJAM/FBfPN4wK5wMBoPB0Jqpa+n2li1biI2NPTgcFGgSExNbvaA5Fv3+mZ1KqeHAhUAJMBz4d2MiE5EJwF6l1Jo6/NiA54B7/AjvRhFZLiLLPc1ha9euJTExkeTk5MYk02AwGAyGI0p9gqZXr16ISLOkxXpbcEunLkETDkwHeorIF2iBIcDLSqlDhpLqQ0QiganAQ/V4vQX4RimVUV+YSqnXlVJDlFJDrKVl4J4Q3FwP22AwGAyGpiQtLY1du3ah1KGDGc21ZNui1Q85ucTCVcA2YBLwCxABvCMiixsRV3egK7BGRHYBnYGVItK+lr8TgP9z+XkWuFpE/u5vJA6Hg/Xr15vhJoPBYDC0WlJTUyktLeXAgZozN8rLy9m9e3ezCprExETy8vJwOBzNFmdj8OdbTrOUUrnA9yLy/+3df3TU9Z3v8ec7EEiAIJIQmhUkaYsKGyC2QWzZy6nuBV310IpU18NdRbTWu9Wu261besqxFk933S5VT/VStcpiW9frqi1VRFCr1GopEjCGKBaEy61ZehcJgkECBHjfP76fwWGcZJKQ+cnrcc4c5vuZz/c7n7ydM/P28/382OnuM8NtoR5x941AZew4JCz14drx9ebE1Zkb6szv7vts3bqV9vZ2JTQiIpK3YlO3t2/fTnl5+bHyd955B4CxY8dmrC2VlZW4O62trcfWpclFKRMTd7877nBGKEu57aaZPQqsAc40sxYzu7aLuvVm9mA32ptSbIbThAkT+uJyIiIiGdfZ1O1Mz3CC/Flcr9MeGjOrdvft8WXu/l7c6wac5u4tyc539yu7emN3r4573kB0WyuxzlKi6d/d1tTURFFREePHj+/JaSIiIjkjVUKTyR6afNn+oKtbTv8abi39ClgPvEc0UPjTwHnAXwLfBZImNNnS1NTEGWecQWlpababIiIi0iunnnoqZWVlH1uLZvPmzVRVVVFWVpaxtuR9D427f9nMxgNzgHlAFdAObAKeAb7v7gcy0soeaGpqor6+PtvNEBER6TUzSzp1O9MznKAAEhoAd3+LaKp1Xmhra2Pbtm3Mmzcv200RERE5IWPGjEnaQ3PppZdmtB3Dhw/HzPL6lhMAZjYrSfFeYKO751S61twcbRulGU4iIpLvqqurefXVj1ZJ2b17N7t27cp4D02/fv2oqKjI7x6a4FqitWFeCsdfAH4PnGFmC939Z2lqW49pywMRESkUY8aMYc+ePezdu5dTTjmFLVu2AJmd4RSTD4vrdWc9maPAOHe/zN0vA8YDB4m2QPhWOhvXU01NTQwdOpTTTz89200RERE5IbG1aGLjaLIxZTtmxIgROX/LqTsJTbW7/1fc8U7gDHffDXSkp1m9oy0PRESkUCRO3d68eTNFRUV88pOfzHhbCqWH5rdmttzMrjazq4GngJfNbDCwJ73N65mNGzfqdpOIiBSEWEITGxi8efNmampqGDBgQMbbkg87bndnDM3XgFnAXxBtTvkw8KRHO2adl8a29cihQ4fYu3evVggWEZGCUFlZSUlJyXE9NNm43RRry549ezh06FBWEqru6M7WBw68ArwIvAC87Mm2/8yy9vZ2QAOCRUSkMMSvRePuWU9oAHbt2pWiZvakTGjM7HLgNWA2cDmw1sxmp7thPbV//34Aamtrs9wSERGRvlFdXc327dvZsWMH+/fvz1pCE9v+IJdvO3XnltN3gMmxNWfMbARRT80T6WxYT7W3t1NTU8PQoUOz3RQREZE+MWbMGDZs2JDVKdvwUQ9NLs906s6g4KKEBfRau3leRrW3t+t2k4iIFJQxY8bw3nvv0djYCGQ/ocn3HpqVZrYKeDQcXwGsSF+TeufAgQNKaEREpKDE1qJ5/vnnKSkpYdSoUVlpRz7suJ0yoXH3W8zsMmAq0SynB9z9l2lvWS8ooRERkUISm7q9evVqxo4dS1FRdm6QDBs2jP79++d9Dw3u/iTwZJrbckL69eunhEZERApKrIcmmwOCAYqKinJ+LZpOExozawOSTc82otncOTX6tq6ujrFjx2a7GSIiIn2mqqqK4uJiOjo6sprQQO5vf9BpQuPuZZlsSF/QlgciIlJIioqKGD16NNu2bct6QpPr2x/k3GwlERER+UjstpMSmq4poREREclhsYHB2U5o8vaWk4iIiGTfRRddxM6dOykvL89qOyorK2lra6O9vZ3S0tKstiUZ9dCIiIjksNmzZ7N8+fKsjxPN9bVolNCIiIhISrm+/UHaEhozW2JmO82sOclr3zQzN7OKJK/VmdkaM3vTzJrM7Ip0tVFERES6J9e3P0hnD81S4MLEQjMbDUwH/tjJefuBq9z9z8P5d5vZsHQ1UkRERFLL9R2305bQuPvLwO4kL90F/CPJF+3D3Te7+5bwfAewExiRrnaKiIhIaiftLadkzGwm8J/u/kY3658DDAC2prVhIiIi0qWysjIGDhyYsz00GZu2bWaDgO8AM7pZvwr4GXC1ux/tpM71wPUAp59+eh+1VERERBKZWU6vRZPJHppPATXAG2a2HRgFbDCzTyRWNLOhwDPAAnf/fWcXdPcH3L3e3etj9/ZEREQkPXJ5teCM9dC4+0agMnYckpp6d98VX8/MBgC/BH7q7o9nqn0iIiLStVxOaNI5bftRYA1wppm1mNm1XdStN7MHw+HlwDRgrpk1hkddutopIiIi3ZPLt5zS1kPj7lemeL067nkDcF14/nPg533Rho6ODlpaWjhw4EBfXK7glZSUMGrUKIqLi7PdFBERyUGxHhp3z/rKxYkKei+nlpYWysrKqK6uzrnA5xp3p7W1lZaWFmpqarLdHBERyUGVlZW0t7fz4YcfMmTIkGw35zgFvfXBgQMHKC8vVzLTDWZGeXm5erNERKRTubyfU0EnNICSmR5QrEREpCu5vP1BwSc0ueBHP/oR48aNY86cOdluCo2NjaxYsSLbzRARkTyUy9sfFPQYmlyxePFinn322W6NTTl8+DD9+6fvP0tjYyMNDQ1cdNFFaXsPEREpTLm8/YF6aNLshhtuYNu2bcycOZMf/vCHfOlLX2LixImce+65NDU1AXDbbbdx/fXXM2PGDK666iqOHDnCLbfcwuTJk5k4cSL333//sev94Ac/YMKECUyaNIn58+cD8JOf/ITJkyczadIkLrvsMvbv3w/A448/Tm1tLZMmTWLatGkcOnSIW2+9lccee4y6ujoee+yxzAdERETylnpocsHNN0NjY99es64O7r67yyr33XcfK1eu5KWXXuJ73/seZ599NsuWLePFF1/kqquuojG0af369bzyyiuUlpbywAMPcMopp7Bu3ToOHjzI1KlTmTFjBm+//TbLli1j7dq1DBo0iN27o70/Z82axVe+8hUAFixYwEMPPcRNN93EwoULWbVqFaeddhp79uxhwIABLFy4kIaGBu69996+jYWIiBS8wYMHM2jQICU0J7tXXnmFJ598EoDzzz+f1tZW9u7dC8DMmTMpLS0F4LnnnqOpqYknnngCgL1797JlyxZeeOEFrrnmGgYNGgTA8OHDAWhubmbBggXs2bOHffv2ccEFFwAwdepU5s6dy+WXX86sWbMy+reKiEhhqqyszMlbTidPQpOiJyUT3P1jZbGZRYMHDz6u3j333HMsMYlZuXJl0plIc+fOZdmyZUyaNImlS5eyevVqIOodWrt2Lc888wx1dXXHeoNERER6K1e3P9AYmgyaNm0ajzzyCACrV6+moqKCoUOHfqzeBRdcwI9//GM6OjoA2Lx5Mx9++CEzZsxgyZIlx8bIxG45tbW1UVVVRUdHx7HrA2zdupUpU6awcOFCKioqePfddykrK6OtrS3df6qIiBSoXN3+QAlNBt122200NDQwceJE5s+fz8MPP5y03nXXXcf48eP5zGc+Q21tLV/96lc5fPgwF154ITNnzqS+vp66ujoWLVoEwO23386UKVOYPn06Z5111rHr3HLLLUyYMIHa2lqmTZvGpEmTOO+883jrrbc0KFhERHolV3toLNltkHxUX1/vDQ0Nx5Vt2rSJcePGZalF+UkxExGRrsyfP58777yTgwcPpn1BVjNb7+713amrHhoRERHpthEjRtDR0cEHH3yQ7aYcRwmNiIiIdFuubn+ghEZERES6TQmNiIiI5L1c3XFbCY2IiIh0m3poREREJO/l6n5OSmjSbM+ePSxevLjH5y1dupQdO3YcO66urmbXrl192TQREZEeGzhwIEOHDtUtp5NNZwnNkSNHujwvMaERERHJFbm4uN7Js5dTlsyfP5+tW7dSV1dHcXExQ4YMoaqqisbGRlasWMEll1xCc3Mz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\n", | |
"text/plain": [ | |
"<Figure size 648x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.figure(figsize=(9, 3))\n", | |
"plt.fill_between(torch.arange(T1, T2), p10, p90, color=\"red\", alpha=0.3)\n", | |
"plt.plot(torch.arange(T1, T2), p50, 'r-', label='forecast')\n", | |
"plt.plot(torch.arange(T1, T2), data[T1:], 'k-', label='truth')\n", | |
"plt.title(\"Total weekly ridership (CRPS = {:0.3g})\".format(crps))\n", | |
"plt.ylabel(\"log(# rides)\")\n", | |
"plt.xlabel(\"Week after 2011-01-01\")\n", | |
"plt.xlim(T1, None)\n", | |
"plt.legend(loc=\"best\");" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We could add a yearly seasonal component simply by adding new covariates (note we've already taken care in the model to handle `feature_dim > 1`)." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"Sample: 100%|██████████| 2000/2000 [00:58, 34.04it/s, step size=3.49e-01, acc. prob=0.895]" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"\n", | |
" mean std median 5.0% 95.0% n_eff r_hat\n", | |
" bias[0] 14.57 0.01 14.57 14.56 14.59 1531.06 1.00\n", | |
" weight[0] 0.12 0.01 0.12 0.10 0.15 1460.82 1.00\n", | |
" weight[1] -0.04 0.01 -0.04 -0.05 -0.03 1862.32 1.00\n", | |
" weight[2] -0.05 0.01 -0.05 -0.06 -0.04 1810.56 1.00\n", | |
" weight[3] -0.01 0.01 -0.01 -0.02 -0.00 1462.10 1.00\n", | |
" weight[4] -0.02 0.01 -0.02 -0.03 -0.01 2460.94 1.00\n", | |
" weight[5] -0.02 0.01 -0.02 -0.03 -0.01 1898.95 1.00\n", | |
" weight[6] -0.03 0.01 -0.03 -0.04 -0.02 1444.50 1.00\n", | |
" weight[7] -0.01 0.01 -0.01 -0.02 -0.00 2423.26 1.00\n", | |
" weight[8] -0.04 0.01 -0.04 -0.05 -0.03 1654.61 1.00\n", | |
" weight[9] -0.02 0.01 -0.02 -0.03 -0.01 1878.95 1.00\n", | |
" weight[10] -0.03 0.01 -0.03 -0.04 -0.02 2050.28 1.00\n", | |
" weight[11] 0.03 0.01 0.03 0.02 0.04 1454.76 1.00\n", | |
" weight[12] 0.00 0.01 0.00 -0.01 0.01 1848.83 1.00\n", | |
" weight[13] 0.03 0.01 0.03 0.02 0.04 2235.39 1.00\n", | |
" weight[14] 0.01 0.01 0.01 -0.00 0.02 1873.06 1.00\n", | |
" weight[15] 0.01 0.01 0.01 -0.00 0.02 1995.56 1.00\n", | |
" weight[16] 0.00 0.01 0.00 -0.01 0.01 1757.97 1.00\n", | |
" weight[17] 0.01 0.01 0.01 0.01 0.02 1717.18 1.00\n", | |
" weight[18] -0.01 0.01 -0.01 -0.02 0.00 1986.53 1.00\n", | |
" weight[19] 0.02 0.01 0.02 0.01 0.03 1626.81 1.00\n", | |
" weight[20] 0.01 0.01 0.01 -0.00 0.02 2021.86 1.00\n", | |
" weight[21] 0.03 0.01 0.03 0.01 0.04 1716.86 1.00\n", | |
" weight[22] 0.01 0.01 0.01 0.00 0.02 1506.92 1.00\n", | |
" weight[23] 0.02 0.01 0.02 0.00 0.03 1866.89 1.00\n", | |
" weight[24] -0.01 0.01 -0.01 -0.02 0.00 1733.13 1.00\n", | |
" weight[25] -0.00 0.01 -0.00 -0.01 0.01 1551.61 1.00\n", | |
" weight[26] -0.01 0.01 -0.01 -0.02 0.00 1792.28 1.00\n", | |
" weight[27] 0.00 0.01 0.00 -0.01 0.01 1563.69 1.00\n", | |
" weight[28] -0.02 0.01 -0.02 -0.03 -0.01 1930.02 1.00\n", | |
" weight[29] -0.02 0.01 -0.02 -0.03 -0.01 1721.07 1.00\n", | |
" weight[30] -0.01 0.01 -0.01 -0.03 -0.00 1956.95 1.00\n", | |
" weight[31] 0.00 0.01 0.00 -0.01 0.01 2298.21 1.00\n", | |
" weight[32] -0.00 0.01 -0.00 -0.01 0.01 1698.65 1.00\n", | |
" weight[33] -0.02 0.01 -0.02 -0.03 -0.01 1480.71 1.00\n", | |
" weight[34] -0.00 0.01 -0.00 -0.01 0.01 1725.80 1.00\n", | |
" weight[35] -0.02 0.01 -0.02 -0.03 -0.01 1622.77 1.00\n", | |
" weight[36] -0.03 0.01 -0.03 -0.04 -0.02 1649.00 1.00\n", | |
" weight[37] -0.02 0.01 -0.02 -0.03 -0.01 1941.26 1.00\n", | |
" weight[38] -0.03 0.01 -0.03 -0.04 -0.02 1465.99 1.00\n", | |
" weight[39] -0.01 0.01 -0.01 -0.02 -0.00 1757.78 1.00\n", | |
" weight[40] -0.01 0.01 -0.01 -0.02 -0.00 2271.25 1.00\n", | |
" weight[41] -0.01 0.01 -0.01 -0.02 0.00 1805.23 1.00\n", | |
" weight[42] -0.02 0.01 -0.02 -0.03 -0.00 1604.31 1.00\n", | |
" weight[43] -0.00 0.01 -0.00 -0.01 0.01 1767.37 1.00\n", | |
" weight[44] -0.01 0.01 -0.01 -0.02 0.00 1680.94 1.00\n", | |
" weight[45] -0.01 0.01 -0.01 -0.02 -0.00 1844.59 1.00\n", | |
" weight[46] -0.02 0.01 -0.02 -0.03 -0.01 1804.98 1.00\n", | |
" weight[47] 0.00 0.01 0.00 -0.01 0.01 1516.20 1.00\n", | |
" weight[48] -0.02 0.01 -0.02 -0.02 -0.00 1346.75 1.00\n", | |
" weight[49] 0.02 0.01 0.02 0.01 0.03 1521.11 1.00\n", | |
" weight[50] 0.01 0.01 0.01 -0.00 0.02 1747.17 1.00\n", | |
" weight[51] 0.01 0.01 0.01 0.00 0.02 1648.51 1.00\n", | |
" weight[52] 0.00 0.01 0.00 -0.01 0.01 1628.19 1.00\n", | |
"noise_scale[0] 0.09 0.00 0.09 0.08 0.10 1054.48 1.00\n", | |
"\n", | |
"Number of divergences: 0\n", | |
"CPU times: user 1min, sys: 345 ms, total: 1min 1s\n", | |
"Wall time: 58.8 s\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"%%time\n", | |
"pyro.set_rng_seed(1)\n", | |
"pyro.clear_param_store()\n", | |
"time = torch.arange(float(T2)) / 365\n", | |
"covariates = torch.cat([time.unsqueeze(-1),\n", | |
" periodic_features(T2, 365.25 / 7)], dim=-1)\n", | |
"forecaster = HMCForecaster(Model1(), data[:T1], covariates[:T1])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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/fQT//nPf3jssceYNWsWWVlZjBw50hqyW5awmTp1Kpdffrm1ivS///1vfHx8PK4ptXPnTuLj4xk+fDjHjx9n48aNNGrUiHvuuYdevXrRvn17tm3bhre3N9dff73H88bExLBixQqOHj3KO++8Y73UTGEzadIkvL29efnllzl+/DhBQUHcf//9JV6XoKAgRIScnBySkpKoVasWr776KldffTVr164lOzuboKAg/IzF69yHRpuWls2bN9O+fXsWLlxIZGQkx48ft0SBWUa7aLFjCpuQkJASr7cnvL29qVKlCnFxcdZLujTMxio1NZWqVasyePBgq05fffWVy3Bid2FzthabgIAAl+HV5cHeSy5L2JjngKL6mRabnTt3kpGRYd2rZgMXFBTEvn37GDRoUIXKBa6CzfxfmRY2KF3YmNekLIsN6DplZ2db301BZf8fZWRkuFxbu7AxyxkUFMSsWbOYO3cun376qcd1qexCy36NTEoSNqGhodZ9V1q97XWyW2zi4uIICAhwWZgyxVjk0bxGVapU4eTJkxw8eJBu3brx888/k5GRwZQpU6hbty4A7czh0zbMeuTl5blcF/MeKalO5vQDBw8eLPO+NQV7UlIS2dnZREdH4+3tTZ06dYrEmmFhK2zalOTMTOpVrcpvhw7x+s8/cyQ3lwbVqjF9+HD6tGrFDe3acTwjA28vL7pfdllRehEC/f15tH9/fklO5htDkL83ZgyRShHm42MJkLrx8Sg/P26tX58N48dzZdWqcOwYcbbOQmRQkLbYdO2q16uqU4dqPj78Z8AAxl57LUMMUZVXUMAuwEspLjGFjTFVxIXAETYXkJSUFGbOnEmyuerqX8BXX31Fp06dOHHiBGlpaYgI2dnZrF+/3jrGXPhNKWVZVBITE2nXrh0PPPAAzz33HF27dmXr1q1ER0fz7bffAmULG5PNmzdTpUoVateuTbt27fjuu++KpUlKSiIxMZEbjDkaDh486NKb/9e//gVol0hJFoKYmBjrpVGvXj3LElNYWMjzzz/PnDlzuOOOO7jrrrvo2LEjkydPdnmxuWM2nNnZ2eTl5eHn50dgYCB169YlOzubU6dOERQUhL+xpovdYiMiHD58mCuuuIINGzYA2vXRtGlTl95rp06dAGjSpInHMpjCpl69emX2ej2lLe98QuZLvbCwkODgYKtOubm5luXJbORM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\n", | |
"text/plain": [ | |
"<Figure size 648x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"samples = forecaster(data[:T1], covariates, num_samples=1000)\n", | |
"p10, p50, p90 = quantile(samples, (0.1, 0.5, 0.9)).squeeze(-1)\n", | |
"crps = eval_crps(samples, data[T1:])\n", | |
"\n", | |
"plt.figure(figsize=(9, 3))\n", | |
"plt.fill_between(torch.arange(T1, T2), p10, p90, color=\"red\", alpha=0.3)\n", | |
"plt.plot(torch.arange(T1, T2), p50, 'r-', label='forecast')\n", | |
"plt.plot(data, 'k-', label='truth')\n", | |
"plt.title(\"Total weekly ridership (CRPS = {:0.3g})\".format(crps))\n", | |
"plt.ylabel(\"log(# rides)\")\n", | |
"plt.xlabel(\"Week after 2011-01-01\")\n", | |
"plt.xlim(0, None)\n", | |
"plt.legend(loc=\"best\");" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 648x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.figure(figsize=(9, 3))\n", | |
"plt.fill_between(torch.arange(T1, T2), p10, p90, color=\"red\", alpha=0.3)\n", | |
"plt.plot(torch.arange(T1, T2), p50, 'r-', label='forecast')\n", | |
"plt.plot(torch.arange(T1, T2), data[T1:], 'k-', label='truth')\n", | |
"plt.title(\"Total weekly ridership (CRPS = {:0.3g})\".format(crps))\n", | |
"plt.ylabel(\"log(# rides)\")\n", | |
"plt.xlabel(\"Week after 2011-01-01\")\n", | |
"plt.xlim(T1, None)\n", | |
"plt.legend(loc=\"best\");" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Time-local random variables: `self.time_plate`\n", | |
"\n", | |
"So far we've seen the ``ForecastingModel.model()`` method and ``self.predict()``. The last piece of forecasting-specific syntax is the ``self.time_plate`` context for time-local variables. To see how this works, consider changing our global linear trend model above to a local level model. Note the [poutine.reparam()](http://docs.pyro.ai/en/latest/poutine.html#pyro.poutine.handlers.reparam) handler is a general Pyro inference trick, not specific to forecasting." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"class Model2(ForecastingModel):\n", | |
" def model(self, zero_data, covariates):\n", | |
" data_dim = zero_data.size(-1)\n", | |
" feature_dim = covariates.size(-1)\n", | |
" bias = pyro.sample(\"bias\", dist.Normal(0, 10).expand([data_dim]).to_event(1))\n", | |
" weight = pyro.sample(\"weight\", dist.Normal(0, 0.1).expand([feature_dim]).to_event(1))\n", | |
"\n", | |
" # We'll sample a time-global scale parameter outside the time plate,\n", | |
" # then time-local iid noise inside the time plate.\n", | |
" drift_scale = pyro.sample(\"drift_scale\",\n", | |
" dist.LogNormal(-20, 5).expand([1]).to_event(1))\n", | |
" with self.time_plate:\n", | |
" # We'll use a reparameterizer to improve variational fit. The model would still be\n", | |
" # correct if you removed this context manager, but the fit appears to be worse.\n", | |
" with poutine.reparam(config={\"drift\": LocScaleReparam()}):\n", | |
" drift = pyro.sample(\"drift\", dist.Normal(zero_data, drift_scale).to_event(1))\n", | |
"\n", | |
" # After we sample the iid \"drift\" noise we can combine it in any time-dependent way.\n", | |
" # It is important to keep everything inside the plate independent and apply dependent\n", | |
" # transforms outside the plate.\n", | |
" motion = drift.cumsum(-2) # A Brownian motion.\n", | |
" \n", | |
" # The prediction now includes three terms.\n", | |
" prediction = motion + bias + (weight * covariates).sum(-1, keepdim=True)\n", | |
" assert prediction.shape[-2:] == zero_data.shape\n", | |
" \n", | |
" # Construct the noise distribution and predict.\n", | |
" noise_scale = pyro.sample(\"noise_scale\", dist.LogNormal(-5, 5).expand([1]).to_event(1))\n", | |
" noise_dist = dist.Normal(zero_data, noise_scale)\n", | |
" self.predict(noise_dist, prediction) " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"Sample: 56%|█████▋ | 1127/2000 [08:04, 1.95it/s, step size=4.47e-02, acc. prob=0.943]" | |
] | |
} | |
], | |
"source": [ | |
"%%time\n", | |
"pyro.set_rng_seed(1)\n", | |
"pyro.clear_param_store()\n", | |
"time = torch.arange(float(T2)) / 365\n", | |
"covariates = periodic_features(T2, 365.25 / 7)\n", | |
"forecaster = HMCForecaster(Model2(), data[:T1], covariates[:T1])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [], | |
"source": [ | |
"samples = forecaster(data[:T1], covariates, num_samples=1000)\n", | |
"p10, p50, p90 = quantile(samples, (0.1, 0.5, 0.9)).squeeze(-1)\n", | |
"crps = eval_crps(samples, data[T1:])\n", | |
"\n", | |
"plt.figure(figsize=(9, 3))\n", | |
"plt.fill_between(torch.arange(T1, T2), p10, p90, color=\"red\", alpha=0.3)\n", | |
"plt.plot(torch.arange(T1, T2), p50, 'r-', label='forecast')\n", | |
"plt.plot(data, 'k-', label='truth')\n", | |
"plt.title(\"Total weekly ridership (CRPS = {:0.3g})\".format(crps))\n", | |
"plt.ylabel(\"log(# rides)\")\n", | |
"plt.xlabel(\"Week after 2011-01-01\")\n", | |
"plt.xlim(0, None)\n", | |
"plt.legend(loc=\"best\");" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"plt.figure(figsize=(9, 3))\n", | |
"plt.fill_between(torch.arange(T1, T2), p10, p90, color=\"red\", alpha=0.3)\n", | |
"plt.plot(torch.arange(T1, T2), p50, 'r-', label='forecast')\n", | |
"plt.plot(torch.arange(T1, T2), data[T1:], 'k-', label='truth')\n", | |
"plt.title(\"Total weekly ridership (CRPS = {:0.3g})\".format(crps))\n", | |
"plt.ylabel(\"log(# rides)\")\n", | |
"plt.xlabel(\"Week after 2011-01-01\")\n", | |
"plt.xlim(T1, None)\n", | |
"plt.legend(loc=\"best\");" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Heavy-tailed noise\n", | |
"\n", | |
"Our final univariate model will generalize from Gaussian noise to heavy-tailed [Stable](http://docs.pyro.ai/en/latest/distributions.html#stable) noise. The only difference is the `noise_dist` which now takes two new parameters: `stability` determines tail weight and `skew` determines the relative size of positive versus negative spikes.\n", | |
"\n", | |
"The [Stable distribution](https://en.wikipedia.org/wiki/Stable_distribution) is a natural heavy-tailed generalization of the Normal distribution, but it is difficult to work with due to its intractible density function. Pyro implements auxiliary variable methods for working with Stable distributions. To inform Pyro to use those auxiliary variable methods, we wrap the final line in [poutine.reparam()](http://docs.pyro.ai/en/latest/poutine.html#pyro.poutine.handlers.reparam) effect handler that applies the [StableReparam](http://docs.pyro.ai/en/latest/infer.reparam.html#pyro.infer.reparam.stable.StableReparam) transform to the implicit observe site named \"residual\". You can use Stable distributions for other sites by specifying `config={\"my_site_name\": StableReparam()}`." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"class Model3(ForecastingModel):\n", | |
" def model(self, zero_data, covariates):\n", | |
" data_dim = zero_data.size(-1)\n", | |
" feature_dim = covariates.size(-1)\n", | |
" bias = pyro.sample(\"bias\", dist.Normal(0, 10).expand([data_dim]).to_event(1))\n", | |
" weight = pyro.sample(\"weight\", dist.Normal(0, 0.1).expand([feature_dim]).to_event(1))\n", | |
"\n", | |
" drift_scale = pyro.sample(\"drift_scale\", dist.LogNormal(-20, 5).expand([1]).to_event(1))\n", | |
" with self.time_plate:\n", | |
" with poutine.reparam(config={\"drift\": LocScaleReparam()}):\n", | |
" drift = pyro.sample(\"drift\", dist.Normal(zero_data, drift_scale).to_event(1))\n", | |
" motion = drift.cumsum(-2) # A Brownian motion.\n", | |
" \n", | |
" prediction = motion + bias + (weight * covariates).sum(-1, keepdim=True)\n", | |
" assert prediction.shape[-2:] == zero_data.shape\n", | |
"\n", | |
" # The next part of the model creates a likelihood or noise distribution.\n", | |
" # Again we'll be Bayesian and write this as a probabilistic program with\n", | |
" # priors over parameters, and again we'll use zero_data as a noise template.\n", | |
" stability = pyro.sample(\"noise_stability\", dist.Uniform(1, 2).expand([1]).to_event(1))\n", | |
" skew = pyro.sample(\"noise_skew\", dist.Uniform(-1, 1).expand([1]).to_event(1))\n", | |
" scale = pyro.sample(\"noise_scale\", dist.LogNormal(-5, 5).expand([1]).to_event(1))\n", | |
" noise_dist = dist.Stable(stability, skew, scale, zero_data)\n", | |
"\n", | |
" # We need to use a reparameterizer to handle the Stable distribution.\n", | |
" # Note \"residual\" is the name of Pyro's internal sample site in self.predict().\n", | |
" with poutine.reparam(config={\"residual\": StableReparam()}):\n", | |
" self.predict(noise_dist, prediction) " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"%%time\n", | |
"pyro.set_rng_seed(2)\n", | |
"pyro.clear_param_store()\n", | |
"time = torch.arange(float(T2)) / 365\n", | |
"covariates = periodic_features(T2, 365.25 / 7)\n", | |
"forecaster = HMCForecaster(Model3(), data[:T1], covariates[:T1])\n", | |
"for name, value in forecaster.guide.median().items():\n", | |
" if value.numel() == 1:\n", | |
" print(\"{} = {:0.4g}\".format(name, value.item()))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [], | |
"source": [ | |
"samples = forecaster(data[:T1], covariates, num_samples=1000)\n", | |
"p10, p50, p90 = quantile(samples, (0.1, 0.5, 0.9)).squeeze(-1)\n", | |
"crps = eval_crps(samples, data[T1:])\n", | |
"\n", | |
"plt.figure(figsize=(9, 3))\n", | |
"plt.fill_between(torch.arange(T1, T2), p10, p90, color=\"red\", alpha=0.3)\n", | |
"plt.plot(torch.arange(T1, T2), p50, 'r-', label='forecast')\n", | |
"plt.plot(data, 'k-', label='truth')\n", | |
"plt.title(\"Total weekly ridership (CRPS = {:0.3g})\".format(crps))\n", | |
"plt.ylabel(\"log(# rides)\")\n", | |
"plt.xlabel(\"Week after 2011-01-01\")\n", | |
"plt.xlim(0, None)\n", | |
"plt.legend(loc=\"best\");" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"plt.figure(figsize=(9, 3))\n", | |
"plt.fill_between(torch.arange(T1, T2), p10, p90, color=\"red\", alpha=0.3)\n", | |
"plt.plot(torch.arange(T1, T2), p50, 'r-', label='forecast')\n", | |
"plt.plot(torch.arange(T1, T2), data[T1:], 'k-', label='truth')\n", | |
"plt.title(\"Total weekly ridership (CRPS = {:0.3g})\".format(crps))\n", | |
"plt.ylabel(\"log(# rides)\")\n", | |
"plt.xlabel(\"Week after 2011-01-01\")\n", | |
"plt.xlim(T1, None)\n", | |
"plt.legend(loc=\"best\");" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Backtesting\n", | |
"\n", | |
"To compare our Gaussian `Model2` and Stable `Model3` we'll use a simple [backtesting()](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.evaluate.backtest) helper. This helper by default evaluates three metrics: [CRPS](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.evaluate.eval_crps) assesses distributional accuracy of heavy-tailed data, [MAE](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.evaluate.eval_mae) assesses point accuracy of heavy-tailed data, and [RMSE](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.evaluate.eval_rmse) assesses accuracy of Normal-tailed data. The one nuance here is to set `warm_start=True` to reduce the need for random restarts." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"%%time\n", | |
"pyro.set_rng_seed(1)\n", | |
"pyro.clear_param_store()\n", | |
"windows2 = backtest(data, covariates, Model2, forecaster_fn=HMCForecaster,\n", | |
" min_train_window=104, test_window=52, stride=26,\n", | |
" forecaster_options={\"learning_rate\": 0.1, \"log_every\": 1000,\n", | |
" \"warm_start\": True})" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"%%time\n", | |
"pyro.set_rng_seed(1)\n", | |
"pyro.clear_param_store()\n", | |
"windows3 = backtest(data, covariates, Model3, forecaster_fn=HMCForecaster,\n", | |
" min_train_window=104, test_window=52, stride=26,\n", | |
" forecaster_options={\"learning_rate\": 0.1, \"log_every\": 1000,\n", | |
" \"warm_start\": True})" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"fig, axes = plt.subplots(3, figsize=(8, 6), sharex=True)\n", | |
"axes[0].set_title(\"Gaussian versus Stable accuracy over {} windows\".format(len(windows2)))\n", | |
"axes[0].plot([w[\"crps\"] for w in windows2], \"b<\", label=\"Gaussian\")\n", | |
"axes[0].plot([w[\"crps\"] for w in windows3], \"r>\", label=\"Stable\")\n", | |
"axes[0].set_ylabel(\"CRPS\")\n", | |
"axes[1].plot([w[\"mae\"] for w in windows2], \"b<\", label=\"Gaussian\")\n", | |
"axes[1].plot([w[\"mae\"] for w in windows3], \"r>\", label=\"Stable\")\n", | |
"axes[1].set_ylabel(\"MAE\")\n", | |
"axes[2].plot([w[\"rmse\"] for w in windows2], \"b<\", label=\"Gaussian\")\n", | |
"axes[2].plot([w[\"rmse\"] for w in windows3], \"r>\", label=\"Stable\")\n", | |
"axes[2].set_ylabel(\"RMSE\")\n", | |
"axes[0].legend(loc=\"best\")\n", | |
"plt.tight_layout()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Note that RMSE is a poor metric for evaluating heavy-tailed data. Our stable model has such heavy tails that its variance is infinite, so we cannot expect RMSE to converge, hence occasional outlying points." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.6.9" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 4 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment