{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "You can order print and ebook versions of *Think Bayes 2e* from\n", "[Bookshop.org](https://bookshop.org/a/98697/9781492089469) and\n", "[Amazon](https://amzn.to/334eqGo)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Regression" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:43.792591Z", "iopub.status.busy": "2021-04-16T19:38:43.792140Z", "iopub.status.idle": "2021-04-16T19:38:43.794041Z", "shell.execute_reply": "2021-04-16T19:38:43.794390Z" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# install empiricaldist if necessary\n", "\n", "try:\n", " import empiricaldist\n", "except ImportError:\n", " !pip install empiricaldist\n", " import empiricaldist" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:43.798000Z", "iopub.status.busy": "2021-04-16T19:38:43.797535Z", "iopub.status.idle": "2021-04-16T19:38:43.800051Z", "shell.execute_reply": "2021-04-16T19:38:43.799576Z" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Get utils.py\n", "\n", "from os.path import basename, exists\n", "\n", "def download(url):\n", " filename = basename(url)\n", " if not exists(filename):\n", " from urllib.request import urlretrieve\n", " local, _ = urlretrieve(url, filename)\n", " print('Downloaded ' + local)\n", " \n", "download('https://github.com/AllenDowney/ThinkBayes2/raw/master/soln/utils.py')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:43.803533Z", "iopub.status.busy": "2021-04-16T19:38:43.802836Z", "iopub.status.idle": "2021-04-16T19:38:44.488550Z", "shell.execute_reply": "2021-04-16T19:38:44.488120Z" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "from utils import set_pyplot_params\n", "set_pyplot_params()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the previous chapter we saw several examples of logistic regression, which is based on the assumption that the likelihood of an outcome, expressed in the form of log odds, is a linear function of some quantity (continuous or discrete).\n", "\n", "In this chapter we'll work on examples of simple linear regression, which models the relationship between two quantities. Specifically, we'll look at changes over time in snowfall and the marathon world record.\n", "\n", "The models we'll use have three parameters, so you might want to review the tools we used for the three-parameter model in <<_MarkandRecapture>>." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## More Snow?\n", "\n", "I am under the impression that we don't get as much snow around here as we used to. By \"around here\" I mean Norfolk County, Massachusetts, where I was born, grew up, and currently live. And by \"used to\" I mean compared to when I was young, like in 1978 when we got [27 inches of snow](https://en.wikipedia.org/wiki/Northeastern_United_States_blizzard_of_1978) and I didn't have to go to school for a couple of weeks.\n", "\n", "Fortunately, we can test my conjecture with data. Norfolk County happens to be the location of the [Blue Hill Meteorological Observatory](https://en.wikipedia.org/wiki/Blue_Hill_Meteorological_Observatory), which keeps the oldest continuous weather record in North America.\n", "\n", "Data from this and many other weather stations is available from the [National Oceanic and Atmospheric Administration](https://www.ncdc.noaa.gov/cdo-web/search) (NOAA). I collected data from the Blue Hill Observatory from May 11, 1967 to May 11, 2020. " ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-cell" ] }, "source": [ "To get more data, go to [National Oceanic and Atmospheric Administration](https://www.ncdc.noaa.gov/cdo-web/search), select daily summaries, choose a date range, and search for Stations with search term \"Blue Hill Coop\". Add it to the cart.\n", "\n", "Open cart and select \"Custom GHCN-Daily CSV\", then continue.\n", "\n", "Select all data types (but particularly Precipitation) and continue.\n", "\n", "Provide an email address and submit order.\n", "\n", "You'll get an email with a download link. Download the CSV file and move it into the current directory." ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "The following cell downloads the data as a CSV file." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:44.492216Z", "iopub.status.busy": "2021-04-16T19:38:44.491795Z", "iopub.status.idle": "2021-04-16T19:38:44.493838Z", "shell.execute_reply": "2021-04-16T19:38:44.493472Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "download('https://github.com/AllenDowney/ThinkBayes2/raw/master/data/2239075.csv')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use Pandas to read the data into `DataFrame`:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:44.497478Z", "iopub.status.busy": "2021-04-16T19:38:44.496929Z", "iopub.status.idle": "2021-04-16T19:38:44.536916Z", "shell.execute_reply": "2021-04-16T19:38:44.537394Z" } }, "outputs": [], "source": [ "import pandas as pd\n", "\n", "df = pd.read_csv('2239075.csv', parse_dates=[2])" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Here's what the last few rows look like." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:44.549351Z", "iopub.status.busy": "2021-04-16T19:38:44.541697Z", "iopub.status.idle": "2021-04-16T19:38:44.560204Z", "shell.execute_reply": "2021-04-16T19:38:44.559851Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
STATIONNAMEDATEPRCPSNOWSNWDTMAXTMINTOBSWESDWT01WT03WT04WT05WT06WT08WT09WT11WT16WT18
19357USC00190736BLUE HILL COOP, MA US2020-05-090.450.00.05734.034.0NaN1.0NaNNaNNaNNaNNaNNaNNaNNaNNaN
19358USC00190736BLUE HILL COOP, MA US2020-05-100.000.00.04431.038.0NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
19359USC00190736BLUE HILL COOP, MA US2020-05-110.000.00.05938.050.0NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", "
" ], "text/plain": [ " STATION NAME DATE PRCP SNOW SNWD TMAX \\\n", "19357 USC00190736 BLUE HILL COOP, MA US 2020-05-09 0.45 0.0 0.0 57 \n", "19358 USC00190736 BLUE HILL COOP, MA US 2020-05-10 0.00 0.0 0.0 44 \n", "19359 USC00190736 BLUE HILL COOP, MA US 2020-05-11 0.00 0.0 0.0 59 \n", "\n", " TMIN TOBS WESD WT01 WT03 WT04 WT05 WT06 WT08 WT09 WT11 WT16 \\\n", "19357 34.0 34.0 NaN 1.0 NaN NaN NaN NaN NaN NaN NaN NaN \n", "19358 31.0 38.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "19359 38.0 50.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "\n", " WT18 \n", "19357 NaN \n", "19358 NaN \n", "19359 NaN " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.tail(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The columns we'll use are:\n", "\n", "* `DATE`, which is the date of each observation,\n", "\n", "* `SNOW`, which is the total snowfall in inches.\n", "\n", "I'll add a column that contains just the year part of the dates." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:44.563856Z", "iopub.status.busy": "2021-04-16T19:38:44.563284Z", "iopub.status.idle": "2021-04-16T19:38:44.568089Z", "shell.execute_reply": "2021-04-16T19:38:44.567683Z" } }, "outputs": [], "source": [ "df['YEAR'] = df['DATE'].dt.year" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And use `groupby` to add up the total snowfall in each year." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:44.572178Z", "iopub.status.busy": "2021-04-16T19:38:44.571162Z", "iopub.status.idle": "2021-04-16T19:38:44.574545Z", "shell.execute_reply": "2021-04-16T19:38:44.574115Z" } }, "outputs": [], "source": [ "snow = df.groupby('YEAR')['SNOW'].sum()" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "The first and last years are not complete, so I'll drop them." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:44.578061Z", "iopub.status.busy": "2021-04-16T19:38:44.577552Z", "iopub.status.idle": "2021-04-16T19:38:44.579968Z", "shell.execute_reply": "2021-04-16T19:38:44.580391Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "52" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "snow = snow.iloc[1:-1]\n", "len(snow)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following figure shows total snowfall during each of the complete years in my lifetime." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:44.584664Z", "iopub.status.busy": "2021-04-16T19:38:44.583819Z", "iopub.status.idle": "2021-04-16T19:38:44.768641Z", "shell.execute_reply": "2021-04-16T19:38:44.768224Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from utils import decorate\n", "\n", "snow.plot(ls='', marker='o', alpha=0.5)\n", "\n", "decorate(xlabel='Year',\n", " ylabel='Total annual snowfall (inches)',\n", " title='Total annual snowfall in Norfolk County, MA')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looking at this plot, it's hard to say whether snowfall is increasing, decreasing, or unchanged. In the last decade, we've had several years with more snow than 1978, including 2015, which was the snowiest winter in the Boston area in modern history, with a total of 141 inches.\n", "\n", "This kind of question -- looking at noisy data and wondering whether it is going up or down -- is precisely the question we can answer with Bayesian regression." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:44.774042Z", "iopub.status.busy": "2021-04-16T19:38:44.773344Z", "iopub.status.idle": "2021-04-16T19:38:44.776141Z", "shell.execute_reply": "2021-04-16T19:38:44.776580Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "YEAR\n", "1978 100.6\n", "1996 124.2\n", "2015 141.1\n", "Name: SNOW, dtype: float64" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "snow.loc[[1978, 1996, 2015]]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Regression Model\n", "\n", "The foundation of regression (Bayesian or not) is the assumption that a time series like this is the sum of two parts:\n", "\n", "1. A linear function of time, and\n", "\n", "2. A series of random values drawn from a distribution that is not changing over time.\n", "\n", "Mathematically, the regression model is\n", "\n", "$$y = a x + b + \\epsilon$$\n", "\n", "where $y$ is the series of measurements (snowfall in this example), $x$ is the series of times (years) and $\\epsilon$ is the series of random values.\n", "\n", "$a$ and $b$ are the slope and intercept of the line through the data. They are unknown parameters, so we will use the data to estimate them.\n", "\n", "We don't know the distribution of $\\epsilon$, so we'll make the additional assumption that it is a normal distribution with mean 0 and unknown standard deviation, $\\sigma$. \n", "To see whether this assumption is reasonable, I'll plot the distribution of total snowfall and a normal model with the same mean and standard deviation.\n", "\n", "Here's a `Pmf` object that represents the distribution of snowfall." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:44.780474Z", "iopub.status.busy": "2021-04-16T19:38:44.779794Z", "iopub.status.idle": "2021-04-16T19:38:44.786003Z", "shell.execute_reply": "2021-04-16T19:38:44.785532Z" } }, "outputs": [], "source": [ "from empiricaldist import Pmf\n", "\n", "pmf_snowfall = Pmf.from_seq(snow)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here are the mean and standard deviation of the data." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:44.789914Z", "iopub.status.busy": "2021-04-16T19:38:44.789309Z", "iopub.status.idle": "2021-04-16T19:38:44.791963Z", "shell.execute_reply": "2021-04-16T19:38:44.791602Z" } }, "outputs": [ { "data": { "text/plain": [ "(64.19038461538462, 26.28802198439569)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean, std = pmf_snowfall.mean(), pmf_snowfall.std()\n", "mean, std" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I'll use the `norm` object from SciPy to compute the CDF of a normal distribution with the same mean and standard deviation." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:44.796359Z", "iopub.status.busy": "2021-04-16T19:38:44.795815Z", "iopub.status.idle": "2021-04-16T19:38:44.797503Z", "shell.execute_reply": "2021-04-16T19:38:44.797862Z" } }, "outputs": [], "source": [ "from scipy.stats import norm\n", "\n", "dist = norm(mean, std)\n", "qs = pmf_snowfall.qs\n", "ps = dist.cdf(qs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the distribution of the data looks like compared to the normal model." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:44.821740Z", "iopub.status.busy": "2021-04-16T19:38:44.812987Z", "iopub.status.idle": "2021-04-16T19:38:44.975037Z", "shell.execute_reply": "2021-04-16T19:38:44.974589Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdgAAAFgCAYAAAAYQGiBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAAuJAAALiQE3ycutAABRMElEQVR4nO3deXiTVd4+8LtJt3RJl3Rvk+6lTTeWgoDs4o6oiOICqFRxRtQZccbXefWHijOOOuPMvOMw4zKiDos6bjgq7hZRUAShIG1paemWlm7pkqbNnvP7ozZDpZQCSdOm9+e6ekGSk5PvadPcfZ7nPOfxEkIIEBERkVNJ3F0AERGRJ2LAEhERuQADloiIyAUYsERERC7AgCUiInIBBiwREZELMGCJiIhcgAFLHqWmpgZeXl7o7Ox0y+tv27YNSUlJw2p7rrUePXoUU6dORXBwMO67776z6uNMfPXVV0hISDjr59fV1SEoKAhdXV1OrMr1fY+URx99FFFRUQgKCoJWqx2y7Y4dOxAaGuq4PW/ePPzlL39xbYF0xhiwNGzz5s2DVCrFoUOHHPd1dnbCy8sLNTU17itsnHrqqaeQl5eH7u5uPP300y5/vdmzZ0Oj0Qy7vZeXF4qLix23VSoV9Ho9QkJCnF6bK/seCRqNBo899hj27t0LvV4PhULh7pLICRiwdEbCwsLwm9/8xil9CSFgs9mc0td4VF1djdzc3BF5LavVOiKvM17V1NQgKCgIiYmJ7i6FnIgBS2fkzjvvxO7du7Fz585BHxdC4Omnn0ZqairCw8NxySWX4NixY47Hk5KS8Pvf/x7Tp09HQEAASktL4eXlhQ0bNkCtViMwMBArVqxAe3s7li1bBrlcjkmTJuHIkSOOPv70pz8hPT0dwcHBSE1Nxd/+9rdh13/LLbfgtttuw9KlSxEUFITs7GwcPnwYzz77LBISEhAZGYm///3vwx6PRqPBRRddBLlcjilTpqC0tHTA6+n1etx1111QqVSIiorCypUrh70b02Kx4De/+Q1UKhUiIyOxbNkytLa2AgCmTZuGoqIi/M///A+CgoLw2WefDXhuS0sL/Pz8UFtb67jPZDIhLCwM3377LQBg+fLliIuLc9ReVFTkaPvyyy9j4sSJePjhhxETE4Nly5adtFtyy5YtyMnJQXBwMFQqFf7f//t/6F95ddq0aQCAmTNnIigoCI8//vhJu8SHGh/QtwX87LPPIicnB3K5HIsXLz7l9+6nfd9yyy24/fbbcf311yM4OBgTJkzAjh07Tvm93rJli+M9FR8fj8ceewzAf3fF/vOf/4RSqYRCocD9998/4LmbN29GVlYWQkNDMWvWLBw4cAAA8O233yI2NtbR7r777oOPjw/0ej0A4JlnnsHixYuxbds2XHjhhejq6kJQUBAWLFgAALj//vuRmJiI4OBgqNVqvPHGG6esn0YpQTRMc+fOFX/+85/F448/LmbMmCGEEKKjo0MAENXV1UIIIV555RURFxcnDh06JAwGg1i7dq3IysoSFotFCCFEYmKiyMjIEEeOHBFWq1WYTCYBQCxYsEC0tbUJjUYjoqKiRHZ2tti5c6ewWCxi5cqV4oorrnDU8eabb4q6ujpht9vFF198Ifz9/cXXX38thBCiurpaABAdHR2DjuHmm28WwcHBA/pOTk4Wa9euFSaTSXzyySfC19dXNDU1DWs8s2fPFitXrhQ9PT2irKxMJCUlicTERMfrXXvtteKGG24QHR0dQq/Xi+uvv14sX758WLU++uijIicnR9TW1oru7m6xbNkyceGFF5708ziVyy+/XPz2t7913H7jjTdEenq64/bGjRtFZ2enMJvN4qmnnhLh4eFCp9MJIYR46aWXhFQqFevXrxcmk0n09PSIoqIiERIS4nj+9u3bRXl5ubDb7eLAgQMiKipKbN682fE4AHHgwAHH7Z+O93TjAyDmzZsnmpqaREdHh5g0aZJ4+OGHBx3rT/u++eabRVBQkPj888+F1WoVjz322ICfy4n0er3w9vYWX375pRCi7z393XffCSGEKCoqEhKJRNxzzz3CYDCI0tJSERAQIIqKioQQQuzcuVMEBQWJL7/8UpjNZvHnP/9ZREZGis7OTmGxWERwcLAoLS0VQggxceJEkZqaKrZv3y6EEOKqq64Sf/rTnxyvc+L3VgghNm/eLJqbm4XVahWvvvqq8PPzE8eOHRu0/eneC+QeDFgatv5f4t7eXhEXFyfeeeedkwJ24cKF4oknnnA8x2g0iuDgYLFr1y4hRF/A/vSDAID48MMPHbevvfZasWzZMsftDz74QMTHx5+yriuvvNIRJMMJ2J/2LZFIRE9Pj+O+yMhI8emnn552PHV1dQKAaG5udjz+xBNPOD7IW1pahEQiEVqt1vF4RUWF8PHxEVar9bS1pqWliddee81xu6GhQQAQDQ0NQojTf6i+/vrrYsKECY7bixcvFuvXrz9l+9DQUMcfKi+99JIIDw8XNpvN8fhgIXCiX/ziF+K2225z3D5dwJ5ufD99X/z2t78VixYtGvS1BwvYE3/OGo1GABBtbW0nPVev1wuZTCaeffZZ0dXVNeCxoqIi4eXlNeD9sXDhQvHHP/5RCCHEbbfdJn72s58NeE5GRobYsmWLEEKIyy67TGzYsEFotVoRExMj/vCHP4hf//rXwmazibCwMFFcXOx4naG+t0IIkZ+f7/gDhgE7NnAXMZ0xmUyGhx9+GP/7v/970jFUjUYzYBatn58f4uLiBkyOUalUJ/UZExPj+H9AQMBJt/t3qwF9u/MmT56MsLAwhIaGYvv27Whraxt2/T/tOzg4GAEBAYO+3lDjaWxshL+/P6KiohyPn3gMraamBna7HSkpKQgNDUVoaCimTp0KiUSCpqam09b509eOi4uDn5/fsCcaLV68GE1NTfjuu+/Q1taGjz76CCtWrAAA2O12PPjgg0hPT4dcLkdoaCi6uroGfB/j4+MhkZz6I+Ljjz/GzJkzERERgZCQEDz77LNn9HMYzvhO/FkFBgaiu7t72P3/9LkABn1+YGAg3nvvPbz77rtQKpWYNWvWgN3lcrl8wPvjxDp+OgYASE5Odoxh/vz5KCoqQlFREebMmYOFCxeiqKgIBw4cgEQiQV5e3inr//Of/4zs7GyEhIQgNDQUhw8fPqPvL7kfA5bOSmFhIex2O1555ZUB9yckJAyYUWw2m9HY2Djg9I6hPrRPp66uDjfffDOeeuoptLa2orOzE5dddpnj2J+zDTWeuLg4GI1GtLS0DKivn1KphEQiQWNjIzo7Ox1fRqMR8fHxZ/zaTU1NMJlMwz5Vxt/fH9deey02bdqE1157Deedd54jDLZu3YqtW7figw8+QFdXFzo7OxESEjLg+zjUz8lsNmPJkiW444470NDQgK6uLvzsZz8b8HwvLy+Xjs+ZLrjgAscfatdeey2uvvpq2O320z7vp2MA+v6w6h/D/PnzsWPHDnz++edYsGAB8vPzUVdXh3feeQfz5s075ffo66+/xiOPPIJ//etf6OjoQGdnJ3Jyclz2PifXYMDSWZFKpfjd736Hxx9/fMD9y5cvx9/+9jeUlpbCZDLhoYceQnx8vGPSy7nS6/UQQiAqKgoSiQTbt2/HJ5984pS+BzPUeJRKJc4//3w88MADMBgMKC8vx3PPPed4bkxMDK666ircddddji2PpqYmvPPOO8N+7ccffxz19fXQ6/VYu3YtFi5ciLi4uGHXv3LlSrz22mt46aWXsHLlSsf9Op0Ovr6+iIiIgNlsxvr166HT6Ybdr8lkgtFohEKhgJ+fH/bs2YOtW7cOaBMdHY2qqiqXjs8Zmpub8c4776C7uxve3t6Qy+WQSqXDeu7y5cuxZcsW7Nq1C1arFc888wy0Wi0uu+wyAMCkSZNgtVqxZcsWzJ8/H15eXpg9ezaeeeYZx2Smweh0Onh7eyMyMhJ2ux0bN27E4cOHnTJeGjkMWDpr11xzDdLS0gbct3LlStx9991YtGgRYmJicPDgQbz33nvw9vZ2ymuq1Wo8+OCDWLBgARQKBV5//XUsXrzYKX0P5nTj2bp1K+rr6xEVFYUbb7wRq1atGvD8l19+2bFrWC6XY/bs2fj++++H9dq/+c1vcPHFF2PGjBlISkqCxWLB5s2bz6j+WbNmQS6Xo7S0FNdee63j/ptvvhnZ2dlITExESkoKZDIZlErlsPsNDg7Ghg0bsHr1asjlcvzud7/DsmXLBrR57LHHcM899yAsLAxPPPGES8bnDHa7Hf/3f/8HpVKJkJAQbNiwAW+++eaw9rTMnTsXzzzzDAoLC6FQKPDaa6/hww8/dMy2lkgkmDNnDoKDg5GRkQGgb2tZp9MNGbCXXHIJrrnmGuTm5iIuLg4lJSU4//zznTJeGjlegvsciIiInI5bsERERC7AgCUiInIBBiwREZELMGCJiIhcwDlTO91ALpe75Xw5IiKifhqN5pSnuI3ZgE1ISDhpYXUiIqKRpFarT/kYdxETERG5AAOWiIjIBcbsLuKhcO2M/zrderBEROQaHhWwdrsd9fX16O3tdXcpo0ZAQIBj0XkiIho5HhWwra2t8PLyQkZGBgMFfX9wNDQ0oLW1FdHR0e4uh4hoXPGogO3q6kJiYuKwr4Th6aRSKaKjo1FbW8uAJSIaYR6zmSeEgM1mg4+Pj7tLGVV8fHxgs9l4XJqIaIR5TMD246Segfj9ICJyD5cG7N13342EhIQhrwVaVFQEtVqNtLQ0rFq1Clar1ZUljUnz5s3D119/PWSbRx55BL/97W9HqCIiIjodlwbssmXLhry4tM1mQ2FhId544w1UVlZCr9dj06ZNriyJiIhoRLg0YGfNmjXk5Jq9e/ciISEB2dnZAIDCwkK8/fbbrixpRHh7e+Phhx/G9OnTMXnyZBw6dAiLFy9Geno67rvvPke7r7/+GgUFBcjLy8Pll1+OpqYmAEB7ezsuu+wyZGdnY9myZTAajY7nHDp0CAsWLMCUKVNw/vnn44cffhjx8RERjSVWmx1tXb2oqNfimxINDlY2j8jrunUWsUajgVKpdNxWqVTQaDSDtt2wYQM2bNjguN3R0TFk30eOHHHJ+bABAQHIzMwcso3NZkNOTg4effRRrF27Ftdccw327NmDwMBApKen4+6770ZsbCxuuOEGvPvuu5g8eTKefvpp/PKXv8Rrr72G9evXIy8vD9u3b0dxcTEKCgoAABaLBatXr8Zbb72F+Ph47NmzB7fddhv27Nnj9HESEY02drsdNpvN8WW1WtHRbUBbZw/adQZodQa06wzo6DaiQ29ER7cJnXoTug1mCCFgtwsIIZCdpMDffr3E5fW6/TSdEyfhDDXTdc2aNVizZo3j9lALLLubl5cXrr76agDAxIkTcfz4cYSHhwMAMjMzUVNTA51Oh5iYGEyePBlA39b7k08+CQD48ssvsWXLFsfzc3NzAQDl5eUoKSnB5Zdf7nit9vb2ERsXEdGZ6As1O6xW64BQPDEkf3pf//97jWa0dxvR0W1Ep96ETr0ZXb0WdBss6Dba0G2wottghc1+cm5IJV4IlnkjJMAHCeF+CAkMQmigL8KC/REa5IfE2IgRGb9bA1apVKKurs5xW6PROO0SdKfbynQliUTimNglkUjg5+c34DGr1TroHxP9f2yc6g8NIQRSU1NRXFzs/KKJiAYhhIDRaERvby/MZvOgITlUgP6U1WaH3miDzmCFzmCF/seg1Bms0Btt0Btt6DbaYLEJeHn1fS72f0m8JJAH+iI8OBDKOH+EB/sjXC6DIiQAESEBiAgJhCI0AGHBAZBKpW4/i8KtAVtQUICGhgaUlpZCrVZj48aNWLLE9Zvto0FmZiaampqwf/9+TJ48GS+++CLmz58PoG/W8L/+9S888cQTKC4udhxnzczMRHd3Nz777DMsXLgQQggcPHgQEydOdONIiMgTCCFgNpvR09Pj+Ort7UVPT8+gQQn0hZ9UKv0xzCQwWoEekx16ox16kx3dhh+DtNfi+NIbrQNCs/8rSBYARbgMSfIfQzNYhjC5zBGiYcH+CAvyh1Q6ds4udWnA3nHHHfjggw9gs9mQkJCAyy+/HLfffjvWrVuH7du3QyqV4oUXXsDSpUthNpsxZ84crFixwpUljRp+fn7YunUrVq9eDbPZjISEBGzcuBEAsG7dOixfvhz5+fmYPHkypk2bBqBv0Yht27bhnnvuwX333QeLxYIlS5YwYInojFit1gFB2v9lsVgcbSQSCQICAhAREQFfPxl6rRLoTTZ09VjQ2WNCV48ZnXoT2nVGdHT3Hfe0D7L3zcdbCoVchqiIIGT+GJhhwTIofgzN8B/v8/N1+xFLp/MSY3SJH7VaPeCC60IIHDlyBJmZmW7fLTCa8PtCNH7ZbDbHVuiJXyaTydHGy8sLMpkMfv4yGKxSdJuALqMd2m4zmtr1OK7Vo63TAIGBUSHx8kJokD/C5P7/3doc8P++4Az09/Hoz56fZtGJPO9PBiKiccZut8NoNEKv1w8IUoPBMKCdt48vjHZv6G1B0Bns6DLa0aYzobmj7aQQlUgkiA4LgDJKjqmZcYgJD0JkaIBjyzM0yB8SiecGpzMwYImIxgghBEwm06C7d/t3RlptduhNQI9VAr3JCzqjHR09VrR1m9Gu0w4ZorGKIMSEByFWEYSo0IAxdbxzNGLAEhGNQhaL5aQt0v4JR1abHR09FnT22tBjkaDbBHT22tCut6CrxwKvE7Ys+0M0MSYE56njEasIcgQpQ9S1GLBERKOA3W5HV1cX2tvb0dHRgc4uHTp6LGjvtqC9xwK92Qs6o0BHT98pLRKJFBKJBF5e/w3RNGWIYwuUIep+DFgiIjfS6/VobGxES0uL42IneosULxU1wWSF4zQYqbQvRLNSggbsymWIjl4MWCKiEWaz2dDS0oLjx49Dp9MBABQKBSIjIyELDMa6l3ZBFhCIVRdkIy6CITpW8ac1Anbs2IGFCxcO2Wb9+vUjVA0RuYter0dFRQV2796N8vJymEwmJCYmYvr06cjNzUVMTAz+9WkpNK063HnVFFw+Iw2T0mMQqwhiuI5B3IIdJdavX49169a5uwwicrJTba3GxsYiPDwcEsl/g7Nofw12HKjFxdNSMTPHOcvGkvswYF1k8+bNePTRRxEaGoo5c+YAAL7//nvcc889MBgMEELgySefxEUXXYR7770XNpsNEydOREREBD777DPcfffd+Pbbb2E0GpGfn48XX3xxwJrGRDS69R9bbW5uhs1mg5+fHxITExEbGwt/f/+T2te36PD8+weQFBOKWy7Jc0PF5Gweu5LThnf2ob5F5/TXVUbJsebqgiHbNDU1YfLkyfj+++8RExOD6667Dh0dHXj77bchk8ng4+ODhoYGzJ49G8eOHQPQdw3Z/gkOAKDVaqFQKAAA99xzD7Kzs3HHHXeccb1cyYlo5Ax3a1UIgeaOHtQ161DX0oW6Zh1KqlthMFnxxzsvQFxEsDuHQWeAKzmNsD179mDWrFmIjY0FACxfvhzPPPMM9Ho9brvtNpSWlsLb2xsajQZtbW2IiDj50knvvvsu/vGPf8BoNKKrqwt2u32kh0FEw3SqrdWYmBgYLH1bp99UVKG2qQt1LV2ob9HBbPnvAvoB/j5QRYVg6bxMhqsH8diAPd1WpiudaqfAgw8+iMmTJ+P111+Hl5cXFAoFjEbjSe1qamrwyCOP4Pvvv0dkZCSeeeYZHDx40NVlE9EZ+OnWqsFsg9lLBrNXENq77NheWoe65h+gN5gdz/HxlkIZJcfMnASookKgipZDFR2C8GB/7mHyQB4bsO40ffp03HnnnTh+/DhiYmKwefNmAIBOp0N8fDy8vLzw5ptvDrhYekBAAHp7exEQEIDu7m7IZDKEhYWht7cXmzdvdlx0nYjcS9vRhQMlVSitasDxDgPae2zQmSQwWL0cM30lXl6IiwhGbkoUEmNCoIrqC9LosECu3zuOMGBdICYmBk899RTmzp2L6OhozJkzB3v27MEDDzyAlStX4u9//zumT58OlUrleM4vfvELTJs2DQkJCfjoo48wb948qNVqqFQqTJs27aRFu4nItaw2O45r9ahr0aGmsQNl1Y04WteK5o4eCAH4+vrC398P8VGhyEsMgSo6BInRIVBGyREXEQQfb6m7h0Bu5rGTnKgPvy9EwyeEwKuflWBv+XE0tHXDZLLAaDTCZDIhyF+K2PAAZKiikJOegDRlJJRRcvh74HVMafg4yYmIaBje/PII3vyyDNEhfkiPkELu54XokGBMSI5BerLqpPNWiYbCgCUiArC3rAEvf/A94kMkuLYgAjJ/f8TExJzyvFWi02HAEtG4JoTAD+U1WPd8Efy9geXz1VBPSOPWKp0zjwtYIQSPNZ5gjB5iJxoR3d3dOHS4DH/aVgIhBP7fLfMwSZ3CzxByCo8JWC8vL/j5+TlWQOIvSF+4arVa+Pn58ftBdAIhBOrr61FdXY3XdjXCYPPGusJ5mJytdHdp5EE8JmABQKlUor6+Hm1tbe4uZdTw8/ODUskPDaJ+BoMBR44cQVdXF7z9AnFcL8VVczMxM5e/J+RcHhWwPj4+SElJ4W7RE3DLlaiPEAJNTU2orKyEEAJpaWmAnxxSaS2UUXJ3l0ceyKMCth9DhYhOZDabUV5eDq1Wi6CgIGRlZSEwMBCVmr7V1AL8PPKjkNyM7yoi8mhtbW0oLy+HxWKBSqVCUlKSY3Zwj9ECoG+xfSJnY8ASkUeyWq2oqqrC8ePHIZPJkJOTg5CQkP8+brND09oNAAjwY8CS8zFgicjjdHV1oaysDEajEbGxsUhNTUVLpwEHD9bhqKYdlQ0dqD7eCYu175Jx4XKZmysmT8SAJSKPYbfbUVNTg5LyY2jWWWHzDcWXNc2oerMcPca+y8Z5wQsJUXLMzlMiPSEcWYkRiFUEubly8kQMWCIa03qNFlQ1duBw1XF8e/Aoqo93wWCVICgoEBKJHpGhAchLjUJ6QjjS4sOQGh/GBfppRPBdRkRjhsVqQ21TF442dKCyoR2Vmg5oWnUwGAzo7TUgwE+KvPR4TJygRFpCONITwhES6OfusmmcYsAS0ajV1tWLw8da/3vctKkTNpsdAODrI4UqKhj5Sn+E+/siKykdMwryEBAQ4OaqifowYIloVLLa7Lj3b5+i12iBxMsLqugQzJ+Y6NjV6yN6UX3sGGw2HyQnJ0OpVPIceBpVGLBENCoda+xAr9GC6y/IxuKZ6fD78bipxWJBRUUFWltbERgYiKysLAQFcZISjT4MWCIalY7UaQEA09XxjnDVarUoLy+H2WyGUqlEUlISpFKpO8skOiUGLBGNSuV1WgTJfJEQGQybzYaqqio0NjbCz88P+fn5CAsLc3eJRENiwBLRqCOEQFmtFhOUCnR3d6OsrAwGgwHR0dFIT0+Htzc/umj047uUiEad6uOd6NQbES6z48CBA5BKpcjOzkZkZKS7SyMaNgYsEY0qdrvAc//ZD7OxB7EBRoSFRWPChAnw8+P5rDS2MGCJaFR5f3c59pXU4MLccORmpiI5OZmn39CYxIAlolGjpqEFf39zF6JDvLFy0XTExcW6uySisyZxdwFEREDfKThPvvI5zFY7/mfFfIYrjXncgiUit2tsbMT2nQdQ3tiDGy6ahPwJKneXRHTOGLBE5DZCCNTV1aG6uhqHG4yIiVRgxSUT3V0WkVNwFzERuYUQAseOHUN1dTUCgkLQqPPCednxvJQceQy+k4loxAkhUF5ejqamJkRFRaHJKIPNbsfsPO4aJs/BLVgiGlF2ux2lpaVoampCXFwcsrKysPtwA4JkvshLjXJ3eURO49KALSoqglqtRlpaGlatWgWr1XpSm48++ggTJ07ExIkTMXPmTJSVlbmyJCJyI5vNhsOHD6O1tRUqlQrp6emoaujAwaoWzMhOgLeUf/OT53DZu9lms6GwsBBvvPEGKisrodfrsWnTppParV69Gq+++iqKi4txyy23YN26da4qiYjcyGq14uDBg2hvb0dKSgoiY+Lx/HsH8MBzRfD1luCSaSnuLpHIqVwWsHv37kVCQgKys7MBAIWFhXj77bdPaufl5QWdTgcA6OrqQmwsz30j8jRmsxnFxcXQ6XRIS0vD0VYb7vrLx/hk7zHMzlfib7+8BEmxoe4uk8ipXDbJSaPRQKlUOm6rVCpoNJqT2m3atAmXX345ZDIZAgMDsWvXrkH727BhAzZs2OC43dHR4fyiicjpjEYjDh48CKPRiIDwePztgwoc1bRDFR2C+2+YgexkLuBPnsmls4hPXD9UCHHS4zabDb///e9RVFSE3NxcbNy4EStXrsQHH3xwUts1a9ZgzZo1jttqtdo1RROR0xiNRhQXF6Oz24CyNm/s+uwQ/HyluPXSfFx6XiqkPOZKHsxlAatUKlFXV+e4rdFokJCQMKDNgQMHoNPpkJubCwBYvnw57r77bleVREQjyGQy4fv9B/DtkRZ8X2+FySowJ1+FFRflIlwuc3d5RC7nsoAtKChAQ0MDSktLoVarsXHjRixZsmRAm/j4eJSXl6OhoQHx8fH46KOPkJWV5aqSiGiE9BqMePGtInxWfBx2qT9SEyJx+6KJ3B1M44rLAlYqleKFF17A0qVLYTabMWfOHKxYsQL79u3DunXrsH37dsTGxuIPf/gDLrroInh7eyMoKAgvvviiq0oiIhez2uz45LtKvPjut9DqDEhPjMHKSybh/FwlJBJeco7GFy8x2MHRMUCtVqO0tNTdZRARAIvVhs+/r8GbX5ahur4ZYQES3HzZFFw+O5fBSh5tqCziUolEdNb6g/XtnUfQ2tkLmcSMq6ZG4pqFU3m5ORr3GLBEdMaEEPj4u2N4e+cRaHUGxEUEYfEUBRLDvJCVmcnz2YnAgCWiMySEwAvvF+Pj76qgjJRjxdIcBNnb0dXVhfT0dIYr0Y94EhoRDZsQAi99eBAff1eFeZMS8cc7L0CIVxe6urqQmpqK+Ph4d5dINGowYIloWIQQ2PzJYXzwTSVm56nw88WTceRIGdrb25GcnDxg5TYiYsAS0TC99kUptn1djhnZCbjr6imoqChHW1sbEhMTkZiY6O7yiEYdBiwRnda/i0rx5o4ynJcVj18snYpjx6rQ0tICpVKJpKQkd5dHNCoxYIloSBX1Wrz+RSmmZMRi7bLz0KCpR2NjI2JiYpCSkjJgzXEi+i8GLBENae+R4wCA1YsnoaW5CTU1NVAoFMjIyGC4Eg2BAUtEQ9pf0QRVdAhg6UVFRQXkcjnUajUkEn58EA2FvyFEdErtOgNqmjqRpQxBaWkpAgICkJubC6lU6u7SiEY9BiwRndKBo02wWm2Q2Trg4+ODvLw8+Pj4uLssojGBAUtEg/rhWAveKCqF2dgDVUTflqu/v7+7yyIaM7hUIhEN0NLRg1c+OoRvSjSwGntwxZQo5OXmICgoyN2lEY0pDFgiAgAYzVa8s7Mc276ugN1ux+SkQExRhWNSXjbCwsLcXR7RmMOAJRrnhBDY9YMG//r4ELQ6A/JTo7EgOxTWHi1UKhViYmLcXSLRmMSAJRrHjjV24J8fFKO8TouY8CA8cNNMxMuBiooKREZGIjk52d0lEo1ZDFiicUIIgeaOHlQ2dKCqoQOVDR0oq2mDr48Uyy/KxaIZadB363Do0CEEBwcjMzOTC0kQnQMGLJGH6ug2orKh3RGoRzXt0BvMjsfjFMG4aFoKls7NRLhcht7eXpSUlMDX1xc5OTk815XoHDFgiTxAj8GMyh+3Svu2Ttuh1RkcjyvkMuQkRyI1Pgxp8eFIjQtFoMzX8bjFYsEPP/wAIQRyc3Ph5+fnjmEQeRQGLNEYY7bYcKyxY0CgNmq7HY8HyXyRnhCO+ZOTkJ4QjrT4MIQGnfr8VbvdjpKSEhgMBuTm5vJ0HCInYcASjWJWmx31LToc1bQ7ArW+uQt2IQAAfj7eSI0PQ0FmLNJ+DNOo0IBhHzsVQqCiogKdnZ1ITU2FQqFw5XCIxhUGLNEo1D+791hjJyxWGwBAKpUgKSYEF01NQVp8GNISwhEfEQyJ5OwnImk0GjQ1NSE2NhYJCQnOKp+IwIAlGpVe+egH1BzvwqxcZV+YxochKTYU3lLnrW7a1taGqqoqhIWFIT09nTOGiZyMAUs0yjS0deNwdQsWn5+Bmy/Jc8lr9Pb2oqysDDKZDNnZ2bz0HJEL8LeKaJT5bF81AODCAtcs8mCz2VBSUgIhBHJycuDtzb+ziVyBAUs0ilisNhQdqEVOchTiIoKd3r8QAkePHkVPTw8mTJiAwMBAp78GEfVhwBKNIt+WNKC714QLp7pm6/X48eNoampCXFwcoqOjXfIaRNSHAUs0SvQaLdj86WGEB8swXR3v9P67u7tx9OhRBAcHIy0tzen9E9FADFiiUeLF7cVo6+rFz6+a4tTZwkDfSk0lJSWQSqWc1EQ0QvhbRjQK7CltwI4DtbhoagomZzj38nBCCJSVlcFoNEKtVsPf/9SrOhGR8zBgidysq8eEZ/+zHzHhQS45Laeurg7t7e1ISkpCeHi40/snosExYIncSAiBZ7d9j+4eM+5eUgB/X+eeMtPe3o7q6mqEh4cjMTHRqX0T0dAYsERu9MneY/juSCOunjMBmYkRTu3baDSirKwMfn5+yMrK4kpNRCOMAUvkJtXHO7Fx+yGkJ4Rj2QK1U/u22+0oLS2F1WpFdnY2fHx8nNo/EZ0eA5bIDQwmC55+/Vv4+kiw9rrznD5ruKqqCjqdDmlpaZDL5U7tm4iGhwFLNMKEEHj2P/txXKvHXVcXICrMuaspNTc3o6GhAdHR0YiLi3Nq30Q0fAxYohH2+fc1+PpQPRbNSMd5Tl5QoqenBxUVFQgICEBGRgaPuxK5EQOWaARVNfRd5zU1PgwrLs51at/9i/gDQE5ODqRSqVP7J6Izw4AlGiFdPSY8uXU3/H298atl05163FUIgfLycvT29mLChAkICAhwWt9EdHYYsEQjwGqz44+vfYuObiPuW3ae04+7NjQ0oKWlBQkJCYiKinJq30R0dhiwRCPglY8OobSmFTdfkofcFOcGoE6nQ1VVFUJCQpCSkuLUvono7DFgiVzsi/012P5tJeZOTMTlM5x7FRuz2YySkhJ4e3tDrVZzEX+iUYS/jUQupOsx4bn/HEBKXBh+tniyU2f19i/ibzKZoFar4efn57S+iejcuTRgi4qKoFarkZaWhlWrVsFqtZ7URq/XY+XKlcjIyEBmZiaee+45V5ZENKK0OgOsNhsuOy8Vvj7OndVbU1ODjo4OpKSkICwszKl9E9G5c1nA2mw2FBYW4o033kBlZSX0ej02bdp0Uru1a9ciJycHFRUVKCsrw9VXX+2qkohGXI/RAgCQ+Tt3qUKtVova2looFAoolUqn9k1EzuGygN27dy8SEhKQnZ0NACgsLMTbb789oE13dzfef/99rF27FgDg5eXFGZDkUXp/DNgAP+cFbP8i/v7+/lzEn2gUc1nAajSaAX9Zq1QqaDSaAW2OHTuG6Oho3HXXXZg8eTKuvPJK1NTUuKokohFnMPUHrHMuQ9e/mITdbkd2dja8vZ17eTsich6XHoM98S9rIcRJj1ssFhQXF+PKK6/E/v37ccUVV2DVqlWD9rVhwwao1WrHV0dHh8vqJnIGIQSONXYCAAKctIu4srIS3d3dSE9PR3BwsFP6JCLXcFnAKpVK1NXVOW5rNBokJCSc1CY8PByXXnopAODGG2/E/v37B+1vzZo1KC0tdXxxUgeNZlabHc+/dwDvf3MU2UmRiAkPOuc+m5qacPz4ccTExCA2NtYJVRKRK7ksYAsKCtDQ0IDS0lIAwMaNG7FkyZIBbaKjo5GTk4N9+/YBAD799FPHMVuisaq714THXvkan+w9hgWTk7DultmQSM7tOKler0dFRQWCgoKQnp7upEqJyJVcdgBHKpXihRdewNKlS2E2mzFnzhysWLEC+/btw7p167B9+3YAwD/+8Q8UFhaip6cHoaGh+Oc//+mqkohcrr5Fhye27EZzew9uuTQfi2aknfMkJKvVipKSEkgkEmRnZ3MRf6IxwksMdnB0DFCr1Y6tY6LRYH9FE/707z0AgLXXnYfJGTHn3KcQAiUlJWhra0NOTg4iIiLOuU8icp6hsohTEImcYOfBOvz1zb2IDg/EAzfNhDJK7pR+NRoN2traoFKpGK5EYwwDlsgJ3v/mKCJDA/DEHfMRHOCcJQs7Oztx7NgxhIaGIikpySl9EtHI4VrEROfIaLaiurETkzJinBauJpMJpaWl8PHx4SL+RGMUf2uJzlFlQwfsQiBTpXBKf/2L+FssFmRnZ8PX19cp/RLRyGLAEp2jI3VtAIAJTgrY2tpadHZ2Ijk5GSEhIU7pk4hGHgOW6ByV1bQhLFiGqNCAc+6rq6sLNTU1CA8P5yL+RGMcA5boLAkhsOXTwyiubEbBhNhzPt/VYrGgtLQUvr6+yMzM5CL+RGMcZxETnQWbzY7n3juAz7+vxnR1PFZdln9O/QkhcOTIEZhMJuTn5/O4K5EHYMASnSGzxYa/vPEd9pQ14MKCFKy+YtI5L4XY2NgIrVYLlUrFdbaJPAQDlugM9BoteHLrNzhc3YJr5mTihoXZ57wrV6/Xo6qqCnK5nOe7EnkQBizRMOl6THj05a9Q09SJWy/Nx6KZ577ovs1mQ2lpKSQSCc93JfIwQ/42//KXv3T8//3333d1LUSj2jtflaOmqRP3XDPVKeEKAEePHkVvby8yMjLg7+/vlD6JaHQYMmB37tzp+P+6detcXgzRaLa/ogmp8WGYOzHRKf01NzejqakJsbGxiIqKckqfRDR6cH8U0TC0dPRA06rDpPRzv0IOABgMBlRUVCAgIABpaWlO6ZOIRpchj8G2t7fj1Vdfhd1uR3t7O7Zu3Trg8RtvvNGlxRGNFvsrmgAAU5xwCTq73Y6ysjIIIaBWq3l9VyIPNWTAzp8/H5988onj/59++qnjMS8vLwYsjRv7K5oQJPNFWnz4OfdVU1MDnU6H9PR0BAUFOaE6IhqNhgzYl156aaTqIBq1ao534mBVC2bmxJ/z+a7t7e2oq6tDREQE4uLinFQhEY1Gpz1N5+jRo3juuedQVlYGLy8vqNVq/OxnP0NKSspI1EfkVroeE57Yuht+PlIsW6A+p77MZjOOHDkCPz8/TJgwgUshEnm4ISc5ff/99ygoKEBzczMuvPBCLFy4EM3NzZgyZQoOHjw4UjUSuYXNZsfTr+9BW6cB9y07DzHhZ787t38pRLPZDLVaDR8fHydWSkSj0ZBbsI899hj+8Y9/nHSs9fXXX8cjjzyCd955x6XFEbnTpk9+wOHqFqy8OA/5adHn1JdGo0F7ezuSkpJ4CTqicWLILdjS0tJBJzItW7YMJSUlLiuKyN2+LK7Fe7uP4vxcJRaff26LSnR3d+PYsWMICQlBYqJzzqElotFvyIAdaoYjZz+Sp+oxmPGPd/cjKSYUa66ack7HSvuXQpRKpcjKyuJxV6Jx5LTnwf703Feg73hSR0eHy4oicidttxEWqw0XT0uBn++5Ldd99OhRGAwG5OTkcClEonHmtOfBfvbZZxBCDPoYkScyGC0AgAD/c5uI1L8UYlxcHCIiIpxRGhGNIUMG7MKFC9Hd3Y2f/exnA+5//vnnIZfLXVoYkbv09Aes39kHbP9SiIGBgUhNTXVWaUQ0hgx5DPbPf/4zrr/++pPuv/766/H000+7rCgid+o19Qfs2e0ettvtKC0t5VKIROPckAFrsVgQGhp60v1yuRxms9lVNRG5VZfeBAAIkPme1fOrq6vR3d2NtLQ0BAYGOrM0IhpDhgzY7u7uQYPUZDKhu7vbZUURuYvFasP2byuhkMsQG37m4dje3o76+npERkYiNjbWBRUS0VgxZMAuWrQIhYWF0Ov1jvv0ej1Wr16NRYsWubw4opH2/jeVaGrXY+XFefDxPrNdu2azGWVlZfDz80NGRgZPySEa54YM2CeeeAJ2ux1xcXGYPHkypkyZgvj4eNjtdjz55JMjVSPRiOjUG/HmjjJMUClwfm7CGT23fylEq9XKpRCJCMBpZhEHBARgy5YtqK6uRklJCYQQyMnJQXJy8kjVRzRitnx6GEazFasuzT/jrU8uhUhEPzWsaZLJyckMVfJotU1dKNpfi3mTEpGWcGbXfNXpdFwKkYhOMuQuYqLxYl/5cQgILJ2bdUbPs1qtjqUQ1Wo1j7sSkQMDlghAXUsX/H29EXMGM4eFEKioqIDRaERWVhb8/PxcWCERjTUMWCIAdc06qKJDzmgLtKmpCS0tLUhISIBCoXBhdUQ0FjFgadyz2uxoaOuGKmr4y3/29PTg6NGjCA4ORkpKigurI6KxigFL416jVg+bzQ5V9PBm//Zfgs7LywtqtRoSCX+NiOhk/GSgca3HYMYzb+2FF7ygThreFW+qqqrQ09ODjIwMyGQyF1dIRGMVA5bGrV6jBY/962tUN3biriUFSI4NPe1zWltb0djYiJiYGERHR7u+SCIasxiwNC4ZzVb8btMuHNW04+dXTca8Sac/f9VoNKK8vBwymQzp6ekjUCURjWUMWBp3TGYrHt+0C0fq2nD7okm4YMrpF1HpvwSd3W5HdnY2L0FHRKfFgKVxxWK14Ymtu1FS04pbL83HJecN72Lo1dXV0Ol0SE1NRVBQkIurJCJPwIClceXbkgYcqmrBDQuzsWjm8HbzarVa1NfXIyIiAnFxcS6ukIg8BQOWxpXS2jZIJBJcMWN44WoymXDkyBH4+/sjMzOTSyES0bAxYGlcOVKnRXJsCPx8T3+di/7jrv2XoPP2Hta1MYiIALg4YIuKiqBWq5GWloZVq1bBarWesu2dd97JDzByqR6DGfXNOmSphne+a21tLbq6upCSkgK5fPirPBERAS4MWJvNhsLCQrzxxhuorKyEXq/Hpk2bBm371Vdfoaenx1WlEAEAKjTtEBCYoDr9usHt7e2ora2FQqFAQsKZXXydiAhwYcDu3bsXCQkJyM7OBgAUFhbi7bffPqmdyWTCAw88gD/+8Y+uKoUIQN/uYQDIPE3AmkwmlJWVwc/Pj8ddieisuSxgNRoNlEql47ZKpYJGozmp3fr161FYWIjIyEhXlUIEADjW2IHwYBnC5ade3tBut6OsrMxx3NXHx2cEKyQiT+LSY7An/uUvhDjp8UOHDmHPnj249dZbT9vXhg0boFarHV8dHR1OrZU8mxACVQ2dSI0PG7JdbW0tOjs7kZKSgpCQ4S3+T0Q0GJcFrFKpRF1dneO2RqM56VjWrl27UFpaiuTkZCQlJcFmsyEpKWnQ8FyzZg1KS0sdX2FhQ39QEp1IqzOgq8eIlLjQU7bhcVciciaXBWxBQQEaGhpQWloKANi4cSOWLFkyoM3Pf/5zNDY2oqamBjU1NZBKpaipqWF4ktMda+wEAKTGDf7e6j/uyvNdichZXBawUqkUL7zwApYuXYq0tDQEBARgxYoV2LdvHy677DJXvSzRoKoa+/aKDLaL+Kfnu/K4KxE5g0tPPF2wYIFjC7ZfQUEBtm/fPmj7oc6TJToXVQ0dUMhlCA3yP+mx6upqdHV1IS0tjee7EpHTcCUn8nhCCFQ1diBlkN3Dra2tqK+vR2RkJOLj491QHRF5KgYseTytzgBdj+mk3cMGgwFHjhyBTCbDhAkTeNyViJyKAUser6rhx+OvJ2zB2mw2lJSUQAiBnJwcLtNJRE7HgCWPV/7jCk4nbsEePXoUer0eEyZMQGBgoLtKIyIPxoAlj9auM+Cj745BnRSJkEA/AMDx48fR1NSEuLg4REdHu7lCIvJUDFjyaFs+OwyzxYZVl+UDALq7u3H06FEEBwcjLS3NzdURkSdjwJLHqtS0Y8eBWsyfnIjk2FBYLBaUlJRAIpEgOzsbEgnf/kTkOvyEIY8khMDGDw/C39cbN12YAyEEysrKYDQakZWVBX//k8+HJSJyJgYseaTdJQ0or9Ni6bwshAb5o6amBu3t7UhKSoJCcfrrwRIRnSsGLHmk93ZVICxYhkUz0qDVah2L+CcmJrq7NCIaJxiw5HFqjnfiqKYdF0xJgsXct4i/TCZDVlYWF5MgohHDgCWP88m+anjBC/PylTh8+DAXkyAit2DAkkcxmq34srgWkzKioW2qQ29vLxeTICK3YMCSR9l5sA5GsxV5CQFoa2uDSqVCVFSUu8sionGIAUseo1LTjpc/PISwQB8EiC6EhYUhOTnZ3WUR0TjFgCWPoGnV4bF/fQ2pBFiUF4SgwACo1WpOaiIit2HA0pjX1tWL9S9/BYvFhiVTQqEI9kVOTg58fHzcXRoRjWMMWBrTuntNeOyVr9HVY8I150UiTAZkZWVxUhMRuR0DlsYso9mK3/5rFxpau3HdzHgo/K1ITk5GRESEu0sjImLA0thVdKAWlQ3tuHZWIhS+BkRFRUGlUrm7LCIiAAxYGsO+Lz8OmY8E0X56BAcHY8KECZzURESjBgOWxiSzxYZDlU2IDLDC17dvUpNUKnV3WUREDgxYGpMOVjZB29GJtOgA5OTkwM/Pz90lERENwIClMcdut+PDr4phs9lw6ZxJkMvl7i6JiOgkXP2cxhRdjxF///dO7DjYgNzUGKQkxru7JCKiQTFgaUwwW2x4/5uj2PzRAWg7dJiWFYtfLV/g7rKIiE6JAUujmt0usKO4Fq9+VoLjbZ0I87Ph5iW5uOKC6ZBIeISDiEYvBiyNSkII7K9owqZPDqO+pQuKIF8syg/BlIxoTJo0ieFKRKMeA5ZGnUpNO/718Q8oqWlFaJA/br5IjRChha+PN/Ly8njhdCIaE/hJRaNKSXUr1m38En4+3li2QI2LCxJRevgQbDYv5OXl8XQcIhozGLA0quw6rIHEywt//cVFCA30RXFxMcxmM/Ly8riAPxGNKTyQRaNG33HX48hMjEB4sD9KS0uh1+uRmZmJsLAwd5dHRHRGGLA0amhau9Ha2YtJadGoqKhAe3s7UlJSEB0d7e7SiIjOGHcR06hx4GgTACA60IamplbExcVBqVS6uSoiorPDLVgaFYQQ2H1YA5k3YO5ugUKhQFpaGq+OQ0RjFgOWRoV3virH4aomTIjyQkhICNRqNc91JaIxjZ9g5HZltW145cNiRAXaceGkBOTm5vLSc0Q05jFgya26e014csvXsJt7ceOcJEyaNBE+Pj7uLouI6JwxYMlthBB4+tXdqG1owXXnK3H+9ClcSIKIPAYDltzmrR0l+HL/UczPicTVF82ATCZzd0lERE7DgCW3aGzpwAvv7oFSIcM9NyxAUFCQu0siInIqBiyNOKPRiD9t/hxmsw1rb5yD0NAQd5dEROR0DFgaUSaTCR98/g32VbbjsvMzMTEz0d0lERG5BFdyohFjNBpRXFyMbXvqEakIxW2Lp7m7JCIil+EWLI0Io9GIAwcOYOfhZnSavHHDhXkIC/Z3d1lERC7j0oAtKiqCWq1GWloaVq1aBavVOuDx+vp6XHDBBcjKykJOTg4eeughV5ZDbtLb24v3PtuNZz+qxFdHe5GaEIkrZqa7uywiIpdyWcDabDYUFhbijTfeQGVlJfR6PTZt2jSgjbe3N5588kmUlZVh//79+Oqrr/Cf//zHVSWRG9Qdb8ODf38fG7ZXotfuj1sum4SnfrYAPt5cqYmIPJvLjsHu3bsXCQkJyM7OBgAUFhbib3/7G2699VZHm9jYWMTGxgIAfH19kZeXh9raWleVRCPIaLbitU8PYsvHB2C12XHV3BzccvlkhAZxtzARjQ8uC1iNRjPgUmMqlQoajeaU7bVaLbZt24ZPPvlk0Mc3bNiADRs2OG53dHQ4r1hyGrtdoOhADV75sBj1x1uRGh2Ie2+ah+zUeHeXRkQ0olw6i/jES40JIU7ZzmQyYenSpVi7di2ysrIGbbNmzRqsWbPGcVutVjuvUHKKI7VteP79YlTWt8HPy4iV8xKx9JKZCA4OdndpREQjzmUBq1QqUVdX57it0WiQkJBwUjubzYabbroJBQUFuPfee11VDrlYSXUr1r/yNaRedszNCMC0DCUmT5qIwMBAd5dGROQWLpvkVFBQgIaGBpSWlgIANm7ciCVLlpzUbvXq1ZDL5XjqqadcVQq5WPXxTjy+eRf8vYEbzgvFzKxIFEyZzHAlonHNZQErlUrxwgsvYOnSpUhLS0NAQABWrFiBffv24bLLLgMA7Nq1Cxs3bsTevXsxadIkTJw4EX/9619dVRK5QGNbN9a/8hWsFjOuyA9EZGggJk2axIX7iWjc8xJDHRwdxdRqtWPrmNyjXWfA/75QhOa2TiydGo4Jqgjk5ubyknNENG4MlUVcKpHOit5gxvpXvkL9cS2WFIQjOyUGOTk58PbmW4qICGDA0ll67fMSlB1rxBWTFZiRl4zMzExIJFx5k4ioHwOWzpjZbMbHu0sQI5fg0plqpKSkDDgli4iIuNg/nSGDwYCPd3yDlo4ezJqYhtTUVIYrEdEguAVLw6bValFWVoaSmg7I5cG4aEa2u0siIhq1GLB0WkII1NbWoqamBjKZDN0IRozCB6poubtLIyIatbiLmIZksVhw+PBh1NTUQKFQIDdvIo42dmFiejR3DRMRDYFbsHRKer0eJSUlMBgMSEpKQmJiIo5r9bDZ7EiKCXV3eUREoxoDlgbV3NyM8vJySCQS5ObmQqFQAAC0OgMAQBHClZqIiIbCgKUB7HY7qqqq0NDQgKCgIGRnZw9Y9rCtsxcAEBkS4K4SiYjGBAYsOZhMJpSUlECn0yE6OhoZGRmQSqUD2rR29QVsRCgDlohoKAxYAgB0dXWhpKQEFosF6enpiIuLO+l6viU1bfi2tBHeUinkAb5urJaIaPRjwI5zQgg0NDSgqqoKPj4+mDhxIkJCQhyPW2127D6swX92VaD6eCf8fLxx48JsziAmIjoNBuw4ZjQaUVFRgfb2doSEhECtVjuuhKM3mPHpvmps/6YS7d0GhAXLcNOFObhoagqCZNx6JSI6HQbsOCSEQHNzMyorK2Gz2ZCUlASVSgWJRIKmdj0++KYSn39fA5PFiqSYUKy4OBczcxLgLeVp00REw8WAHWdMJhMqKiqg1WoRGBiIzMxMBAUFobxOi/d2H8We0kYICBRMiMUV52cgOymCu4OJiM4CA3acEEKgpaUFR48ehc1mQ2JiIlQqFX6obsNrW/fiqKYdPt5SXDg1GYtmpiM+ItjdJRMRjWkM2HHAbDajoqICbW1tCAgIQGZmJpq6LHj05a9RUtOK4AA/XH9BNi6emgJ5oJ+7yyUi8ggMWA/X0tKCiooKWK1WqFQqePmH4u/vHcbeI43w9/XGsgVqXDEzHTI/H3eXSkTkURiwHspkMqGyshKtra2QyWSIUabhvb11+OrgAUilEiw+PwNXz57ALVYiIhdhwHoYu90OjUaD2tpa2Gw2BIdFYW+NAV98uBvCLrBgShKum5+FCC51SETkUgxYDyGEQFtbG6qqqmA0GiGXy1GhleLZbeWwWG2YkZ2AGxZmc/ISEdEIYcB6gO7ublRWVqKrqwt+fn7IysqCX2AIfvfk+0hPCMfqKyYhJS7M3WUSEY0rDNgxzGQyobq6Gk1NTZBKpUhOTkZCQgKkUim+K2sEAFwzN5PhSkTkBgzYMchms6G+vh51dXWw2+2IiYlBcnKyY5lDACiv0wIAMlUKd5VJRDSuMWDHEJvNhuPHj6O+vh4mkwmhoaFITU1FcPDJx1XL6toQHxGM4ADOEiYicgcG7BhgtVrR0NAAjUYDi8WCwMBApKenQ6FQDLqModFsRVVDJ+bkK91QLRERAQzYUc1sNkOj0aChoQE2mw1yuRwTJkw4ZbAKIfBdWSNe+egQrDYbJqbHuKFqIiICGLCjktFoRH19PY4fPw673Y6wsDCoVCqEhoaecuH9+hYdNm4vxqGqFijkMqxdNh0zs+NHuHIiIurHgB1Fent7UVdXh+bmZgghEBERAZVKBblcfsrn6A1mvP5FKT7aUwWpVILr5qtx1awM+PnyR0tE5E78FHYzk8mEtrY2aLVatLe3w8vLC1FRUVCpVAgMDDzl8+x2gU/3HcPWz0qgN5gxIzsBN1+Sh8hQrtBERDQaMGBHmBACer0eWq0WWq0W3d3dAAAfHx/ExcVBqVRCJpMN2cfh6la8+EEx6pq7kBgTivtvmIHs5MiRKJ+IiIaJATsC7HY7Ojs7HVuqJpMJABAQEACVSgWFQgG5XD7khc2FEPjhWCve3FGGkppWBMl8ccfiyVg4JRkSCS+ITkQ02jBgXcRisTi2Utvb22Gz2QAAISEhSEhIgEKhQEDA6XfnCiHwfUUT3txRhqOadgT4+2DpvCxcMTMdQTJfVw+DiIjOEgPWiXp7e6HVatHW1gadTgchBKRSKcLDw6FQKKBQKODjM7zrrgoh8G1pA97ccQQ1TZ0IDvDDDQuzcem0VAQyWImIRj0G7DkQQkCn0zlCtbe3FwDg5+eH2NhYREREIDQ0FBKJZNh92mx27DqswVtfHoGmVYewYBluuTQfFxYkw58zg4mIxgx+Yp8hm82G9vZ2x+5fi8UCAAgODkZSUhIUCgWCgoKGPJ46GIvVhp0H6/D2znI0tesRERKA2xdNwoLJSfD1kbpiKERE5EIM2GEwmUyOrdTOzk7Y7XZ4eXkhLCzMsevX39//tP0IIdDebURjW/ePX3o0avv+benogV0IxIQHYc3VBZiTr4K3dPhbvkRENLowYAchhEBPT49j1m//qTTe3t6IioqCQqFAeHg4pNLBtyx7DGYc1+rRqNWjoT9I27pxXKuHyWJ1tPOCFyJCZYhTBGNSegyykiIwQx3PWcFERB6AAfuj/lNp+rdU+0+lkclkUCqViIiIGHAqjdVmh6ZV5wjPRq3esVXa1WMc0HeQzBdxEcGYkROPWEUQ4iOCEacIRqwiiLt/iYg81LgOWKvV6gjUwU6lCQ8Ph9EmQWNbN74tb0NjWw2O/7hV2r9Lt5+3VIrY8EBkJSocIRqrCEJ8JC8ZR0Q0Ho3rgDWbzSgrK4PFDli8ZDDDD3qLBPuPGtCwu/ykXboAEBESgLiIIExMi0ZcRDDiIvrCNCIkgLt2iYjIYVwHbEevDS9+1Y4ekx0nTvoN9PdFXEQQpmfHIy4iCHGKYMRHBCMmPJCL6BMR0bCM67QID/ZHbmpsX4hGBCNO0fdvcIDvGZ9mQ0REdKJxHbAyPx/cf+MMd5dBREQeyKUnWhYVFUGtViMtLQ2rVq2C1Wo9qzZERERjjcsC1mazobCwEG+88QYqKyuh1+uxadOmM25DREQ0FrksYPfu3YuEhARkZ2cDAAoLC/H222+fcRsiIqKxyGXHYDUaDZRKpeO2SqWCRqM54zb9NmzYgA0bNjhud3R0OLliIiIi53HpMdgTZ+KKExZlONM2ALBmzRqUlpY6vsLCwpxXKBERkZO5LGCVSiXq6uoctzUaDRISEs64DRER0VjksoAtKChAQ0MDSktLAQAbN27EkiVLzrgNERHRWOSygJVKpXjhhRewdOlSpKWlISAgACtWrMC+fftw2WWXDdmGiIhorPMSQx34HMXUarVjy5eIiMgdhsoiXtGbiIjIBRiwRERELjBmdxHL5fJRP+O4o6Nj3JxOxLF6rvE0Xo7Vc7lqvBqNBjqdbtDHxmzAjgXj6Tgxx+q5xtN4OVbP5Y7xchcxERGRCzBgiYiIXIAB60Jr1qxxdwkjhmP1XONpvByr53LHeHkMloiIyAW4BUtEROQCDFgiIiIXYMA6QX19PS644AJkZWUhJycHDz30kOOx+++/H2lpacjIyMCbb77pxiqd784774S3938vKeypY9Xr9Vi5ciUyMjKQmZmJ5557DoBnjvejjz7CxIkTMXHiRMycORNlZWUAPGOsd999NxISEga8Z4FTj62+vh6zZ89GRkYG5s6di8bGxpEu+ZwMNt4tW7YgPz8feXl5mDp1Knbs2OF4bCyP91Q/WwDo7OxEXFwcbrvtNsd9IzZWQeessbFR7N27VwghhMlkEnPmzBHvvvuu+Pjjj8Xs2bOFxWIRGo1GJCQkCJ1O5+ZqnWPnzp1i5cqVQiqVCiGER4/19ttvF08++aQQQgi73S6am5s9drxKpVKUlpYKIYR47rnnxNKlSz1mrF999ZVoampyvGeFGPp9e8MNN4jnnntOCCHEhg0bxMqVK91S99kabLy7du0SWq1WCCHE4cOHRXR0tLDZbEKIsT3ewcba7/bbbxfLly8XhYWFjvtGaqwMWBe46667xF//+ldxxx13iBdffNFx//XXXy/efPNNN1bmHEajUcycOVO0tLQ43tCeOladTidiY2OFxWIZcL+njlelUolvv/1WCCHEU089Je6++26PG+uJH8KnGpvdbhchISHCYDAIIYTQ6/UiNDR0xGt1hsFCRwjhGGNXV5fHjPenY/3iiy/EypUrxUsvveQI2JEcK3cRO5lWq8W2bduwcOFCaDQaKJVKx2MqlQoajcaN1TnH+vXrUVhYiMjISMd9njrWY8eOITo6GnfddRcmT56MK6+8EjU1NR473k2bNuHyyy+HUqnEiy++iIcffthjxwqc+n2r1WoRGBgIf39/AEBgYCB8fX3R1dXlrlKdbuvWrcjOzoZcLvfI8RoMBjzwwAP44x//OOD+kRwrA9aJTCYTli5dirVr1yIrKwsA4OXl5XhceMAZUYcOHcKePXtw6623nvSYp40VACwWC4qLi3HllVdi//79uOKKK7Bq1SoAnjdem82G3//+9ygqKkJ9fT3uv/9+rFy5EoDnjfVEpxrbiff/9LGxbv/+/XjooYfw8ssvO+7ztPE+8sgjuOOOOwZsCPQbqbEyYJ3EZrPhpptuQkFBAe69914AgFKpRF1dnaONRqMZ9RcoOJ1du3ahtLQUycnJSEpKgs1mQ1JSkkeOFej7GYaHh+PSSy8FANx4443Yv3+/R473wIED0Ol0yM3NBQAsX74cO3bs8Mix9jvV2BQKBfR6PYxGIwCgt7cXFosFISEh7irVaSoqKnDttdfitddeQ3p6OgB45Hh3796N9evXIykpCb/61a/w+uuvo7CwcGTH6pIdz+PQqlWrxK233irsdrvjvk8++UTMmTNHWK1W0dDQIJRK5ZicHDKU/mMenjzWOXPmOCaxbdu2TcycOdMjx9vY2CgUCoXQaDRCCCHeffddMWXKFI8b64nH6YYa24033iief/55IYQQf//738fUpJ8TnTje+vp6kZaWJj755JOT2nnCeE91vPnEY7BCjNxYGbBO8PXXXwsAIicnR+Tn54v8/Hzxf//3f0IIIX7961+L1NRUkZaWJv7973+7uVLnO/EN7aljLSkpEdOnTxe5ubli9uzZjlm2njjejRs3CrVaLfLy8sTMmTNFcXGxEMIzxrp69WoRHx8vAIj4+HixevVqIcSpx1ZXVydmzZol0tPTxezZsx1/eIwVg433tttuE3K53PE5lZ+fL6qrq4UQY3u8p/rZ9vtpwI7UWLlUIhERkQvwGCwREZELMGCJiIhcgAFLRETkAgxYIiIiF2DAEhERuQADlugnOjs7HVeUUalUUCgUjttFRUUntf3rX/86rH5vueUWbN682RUlD5vJZMLFF1+M/Pz8IevesWMHFi5ceNL/f8pisWDmzJno7e0FABQUFJx1bc76/tTW1joWBiFyp5Ov7UM0zoWGhqK4uBgA8PLLL+Prr7/GP//5z0Hb9gfsPffcM4IVnr3i4mJ0dnbi4MGDTulv06ZNuPDCCxEQEAAA2Ldvn1P6PReJiYkIDQ3Fzp07MWfOHHeXQ+MYt2CJhqGrqwvLli1Dbm4u8vPz8d577wEA7r33XtTX12PixImOdXuXLl2KgoIC5OTkOJbNHMquXbswZcoUTJw4ETk5OdizZw8AICkpCQ8//DCmTp2KjIwM7N692/GcdevWIScnBzk5OVi/fj0A4J133nGsEf3+++9DKpWio6MDAJCeno76+nrcdNNNKC0txcSJE7F792689NJLmDZtGiZNmoR58+ahurr6jL4vL7/8Mq677jrH7ROvx+nt7Y3f/va3mDRpEvLy8lBRUQEAsNvtePDBB5GTk4P8/Hz84he/cDxnz549mDNnDpKTk7FhwwbH/Tt27MCsWbMwZcoUXHjhhaivrwcAPPvss45+Jk+e7Fj+bunSpQPW2SVyC5csX0HkIfpXgLn33nvFL3/5SyGEENXV1SI2Nla0traK6upqkZqaOuA5bW1tQgghbDabuPLKK8VHH30khBDi5ptvFps2bTrpNRYvXix27twphBDCYrGI7u5uIYQQiYmJ4oknnhBCCPHvf/9bLFy4UAjRt4ThjBkzhMFgEAaDQUydOlV8+OGHQqvVipSUFCGEEL/61a/EtGnTxLZt24RGoxHZ2dlCCCGKiorEBRdccFKtQgjx1ltvieuvv/6kdj99Tj+z2SxCQ0MHLA964speAMSrr74qhOi79N1tt90mhBDi+eefF5deeqkwGo0Darj55pvF5ZdfLqxWq9BoNCIkJESYzWah1WrF9OnTRWdnpxBCiNdee01cd911Qggh4uLiRG9vrxBCiM7OTse1Tevq6kRaWtpJNRONJO4iJhqGHTt2YNOmTQD6tiynTZuG7777Dmq1+qS2zz//PP7973/DZrOhpaUFs2bNwsUXX3zKvufMmYP77rsP119/PS6//HJMmDDB8djSpUsBANOmTcNvfvMbRy033XST43JbN954I7744gtccsklCAwMRG1tLXbt2oX//d//xY4dO9DT04O5c+cO+trl5eV48MEH0dbWBpvNBolk+Du12traIJfLT7oyST8vLy9cc801jvo//vhjAMDHH3+Mn//85/Dz8wPQt9B8v6uvvhpSqRTx8fEICwtDc3MziouLUVFR4RiD3W5HcHAwAGDKlClYvnw5Fi1ahEWLFjnqj4mJQWNj47DHQuQK3EVMNAxikBVFBwuWL7/8Em+99RZ27tyJQ4cO4aabbnLstjyV++67D5s2bYK3tzeuvPJKvP76647H+kNIKpXCarWetpa5c+fivffeg0QiwUUXXYRvvvkGX375JebNmzfoa9900014/PHH8cMPP+D1118/ba0nkslkMJlMp3xcIpHAx8dnWPX36x/vic8RQmD27NkoLi5GcXExDh06hF27dgEAtm3bhvvuuw/V1dWYPHkyjh07BqDvWqAymWzYYyFyBQYs0TDMnz/fMdGppqYG3333HaZOnQq5XI7u7m5HO51Oh9DQUAQHB0Or1eKtt946bd9Hjx7FhAkTcM8992DlypWnnSg0f/58bN68GSaTCUajEVu3bsX8+fMBAPPmzcMf/vAHzJo1CzKZDH5+fti+ffspJ/vodDrEx8cD6NvyPhOhoaHw8fE54wtVX3LJJfjHP/7hCGetVjtk+xkzZuC7777D4cOHAQBWqxU//PADrFYrampqMHPmTKxfvx5qtRplZWUA+rbMc3JyzqguImfjLmKiYXj44YexevVq5ObmQiKR4LnnnkNERAQA4NJLL3VMsnn++efx4osvIjs7GyqV6pS7Zk/0l7/8BTt27ICvry/CwsLwyiuvDNl+8eLF2LdvH6ZMmQIhBJYtW4ZLLrkEQN/u5vr6escW6+zZs9HS0oLo6OhB+/rDH/6AuXPnQqlUYsGCBWfwHemzaNEifPHFF7j66quH/ZzCwkJUV1dj0qRJ8PX1xbx58/CXv/zllO0jIiLw6quv4rbbboPBYIDVasWdd96JjIwM3Hzzzejq6oIQAlOnTsVFF10EAPjss89wxRVXnPF4iJyJV9MhorNWUlKCBx54wDGrejSw2+2YMWMGPvzwQ4SHh7u7HBrHuIuYiM5adnY2li5d6lhoYjRobGzEQw89xHAlt+MWLBERkQtwC5aIiMgFGLBEREQuwIAlIiJyAQYsERGRCzBgiYiIXIABS0RE5AL/H5cTJJ/u54fyAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.plot(qs, ps, color='C5', label='model')\n", "pmf_snowfall.make_cdf().plot(label='data')\n", "\n", "decorate(xlabel='Total snowfall (inches)',\n", " ylabel='CDF',\n", " title='Normal model of variation in snowfall')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We've had more winters below the mean than expected, but overall this looks like a reasonable model." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Least Squares Regression\n", "\n", "Our regression model has three parameters: slope, intercept, and standard deviation of $\\epsilon$.\n", "Before we can estimate them, we have to choose priors.\n", "To help with that, I'll use StatsModel to fit a line to the data by [least squares regression](https://en.wikipedia.org/wiki/Least_squares).\n", "\n", "First, I'll use `reset_index` to convert `snow`, which is a `Series`, to a `DataFrame`." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:44.985446Z", "iopub.status.busy": "2021-04-16T19:38:44.984866Z", "iopub.status.idle": "2021-04-16T19:38:44.988417Z", "shell.execute_reply": "2021-04-16T19:38:44.988051Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
YEARSNOW
0196844.7
1196999.2
2197066.8
\n", "
" ], "text/plain": [ " YEAR SNOW\n", "0 1968 44.7\n", "1 1969 99.2\n", "2 1970 66.8" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = snow.reset_index()\n", "data.head(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is a `DataFrame` with two columns, `YEAR` and `SNOW`, in a format we can use with StatsModels.\n", "\n", "As we did in the previous chapter, I'll center the data by subtracting off the mean." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:44.994657Z", "iopub.status.busy": "2021-04-16T19:38:44.993833Z", "iopub.status.idle": "2021-04-16T19:38:44.996662Z", "shell.execute_reply": "2021-04-16T19:38:44.997259Z" } }, "outputs": [ { "data": { "text/plain": [ "1994" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "offset = round(data['YEAR'].mean())\n", "data['x'] = data['YEAR'] - offset\n", "offset" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And I'll add a column to `data` so the dependent variable has a standard name." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:45.002030Z", "iopub.status.busy": "2021-04-16T19:38:45.001189Z", "iopub.status.idle": "2021-04-16T19:38:45.002832Z", "shell.execute_reply": "2021-04-16T19:38:45.003449Z" } }, "outputs": [], "source": [ "data['y'] = data['SNOW']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we can use StatsModels to compute the least squares fit to the data and estimate `slope` and `intercept`." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:45.007222Z", "iopub.status.busy": "2021-04-16T19:38:45.006101Z", "iopub.status.idle": "2021-04-16T19:38:45.077844Z", "shell.execute_reply": "2021-04-16T19:38:45.078260Z" } }, "outputs": [ { "data": { "text/plain": [ "Intercept 64.446325\n", "x 0.511880\n", "dtype: float64" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import statsmodels.formula.api as smf\n", "\n", "formula = 'y ~ x'\n", "results = smf.ols(formula, data=data).fit()\n", "results.params" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The intercept, about 64 inches, is the expected snowfall when `x=0`, which is the beginning of 1994.\n", "The estimated slope indicates that total snowfall is increasing at a rate of about 0.5 inches per year. \n", "\n", "`results` also provides `resid`, which is an array of residuals, that is, the differences between the data and the fitted line.\n", "The standard deviation of the residuals is an estimate of `sigma`." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:45.082559Z", "iopub.status.busy": "2021-04-16T19:38:45.081856Z", "iopub.status.idle": "2021-04-16T19:38:45.085047Z", "shell.execute_reply": "2021-04-16T19:38:45.084586Z" } }, "outputs": [ { "data": { "text/plain": [ "25.385680731210623" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results.resid.std()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We'll use these estimates to choose prior distributions for the parameters." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Priors\n", "\n", "I'll use uniform distributions for all three parameters." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:45.090543Z", "iopub.status.busy": "2021-04-16T19:38:45.089992Z", "iopub.status.idle": "2021-04-16T19:38:45.091913Z", "shell.execute_reply": "2021-04-16T19:38:45.092335Z" } }, "outputs": [], "source": [ "import numpy as np\n", "from utils import make_uniform\n", "\n", "qs = np.linspace(-0.5, 1.5, 51)\n", "prior_slope = make_uniform(qs, 'Slope')" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:45.097282Z", "iopub.status.busy": "2021-04-16T19:38:45.096524Z", "iopub.status.idle": "2021-04-16T19:38:45.098971Z", "shell.execute_reply": "2021-04-16T19:38:45.098521Z" } }, "outputs": [], "source": [ "qs = np.linspace(54, 75, 41)\n", "prior_inter = make_uniform(qs, 'Intercept')" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:45.103775Z", "iopub.status.busy": "2021-04-16T19:38:45.103183Z", "iopub.status.idle": "2021-04-16T19:38:45.105613Z", "shell.execute_reply": "2021-04-16T19:38:45.105017Z" } }, "outputs": [], "source": [ "qs = np.linspace(20, 35, 31)\n", "prior_sigma = make_uniform(qs, 'Sigma')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I made the prior distributions different lengths for two reasons. First, if we make a mistake and use the wrong distribution, it will be easier to catch the error if they are all different lengths.\n", "\n", "Second, it provides more precision for the most important parameter, `slope`, and spends less computational effort on the least important, `sigma`.\n", "\n", "In <<_ThreeParameterModel>> we made a joint distribution with three parameters. I'll wrap that process in a function:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:45.110768Z", "iopub.status.busy": "2021-04-16T19:38:45.109913Z", "iopub.status.idle": "2021-04-16T19:38:45.111841Z", "shell.execute_reply": "2021-04-16T19:38:45.112302Z" } }, "outputs": [], "source": [ "from utils import make_joint\n", "\n", "def make_joint3(pmf1, pmf2, pmf3):\n", " \"\"\"Make a joint distribution with three parameters.\"\"\"\n", " joint2 = make_joint(pmf2, pmf1).stack()\n", " joint3 = make_joint(pmf3, joint2).stack()\n", " return Pmf(joint3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And use it to make a `Pmf` that represents the joint distribution of the three parameters." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:45.116443Z", "iopub.status.busy": "2021-04-16T19:38:45.115752Z", "iopub.status.idle": "2021-04-16T19:38:45.129978Z", "shell.execute_reply": "2021-04-16T19:38:45.129613Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
probs
SlopeInterceptSigma
-0.554.020.00.000015
20.50.000015
21.00.000015
\n", "
" ], "text/plain": [ "Slope Intercept Sigma\n", "-0.5 54.0 20.0 0.000015\n", " 20.5 0.000015\n", " 21.0 0.000015\n", "dtype: float64" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prior = make_joint3(prior_slope, prior_inter, prior_sigma)\n", "prior.head(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The index of `Pmf` has three columns, containing values of `slope`, `inter`, and `sigma`, in that order.\n", "\n", "With three parameters, the size of the joint distribution starts to get big. Specifically, it is the product of the lengths of the prior distributions. In this example, the prior distributions have 51, 41, and 31 values, so the length of the joint prior is 64,821." ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:45.133803Z", "iopub.status.busy": "2021-04-16T19:38:45.133137Z", "iopub.status.idle": "2021-04-16T19:38:45.135815Z", "shell.execute_reply": "2021-04-16T19:38:45.136173Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "(51, 41, 31)" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(prior_slope), len(prior_inter), len(prior_sigma)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:45.139897Z", "iopub.status.busy": "2021-04-16T19:38:45.139320Z", "iopub.status.idle": "2021-04-16T19:38:45.141694Z", "shell.execute_reply": "2021-04-16T19:38:45.142063Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "64821" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(prior_slope) * len(prior_inter) * len(prior_sigma)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:45.145315Z", "iopub.status.busy": "2021-04-16T19:38:45.144835Z", "iopub.status.idle": "2021-04-16T19:38:45.147028Z", "shell.execute_reply": "2021-04-16T19:38:45.147371Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "64821" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(prior)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Likelihood\n", "\n", "Now we'll compute the likelihood of the data.\n", "To demonstrate the process, let's assume temporarily that the parameters are known." ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:45.150860Z", "iopub.status.busy": "2021-04-16T19:38:45.150270Z", "iopub.status.idle": "2021-04-16T19:38:45.153978Z", "shell.execute_reply": "2021-04-16T19:38:45.153346Z" } }, "outputs": [], "source": [ "inter = 64\n", "slope = 0.51\n", "sigma = 25" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I'll extract the `xs` and `ys` from `data` as `Series` objects:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:45.157932Z", "iopub.status.busy": "2021-04-16T19:38:45.157287Z", "iopub.status.idle": "2021-04-16T19:38:45.159173Z", "shell.execute_reply": "2021-04-16T19:38:45.159629Z" } }, "outputs": [], "source": [ "xs = data['x']\n", "ys = data['y']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And compute the \"residuals\", which are the differences between the actual values, `ys`, and the values we expect based on `slope` and `inter`." ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:45.164698Z", "iopub.status.busy": "2021-04-16T19:38:45.163879Z", "iopub.status.idle": "2021-04-16T19:38:45.166494Z", "shell.execute_reply": "2021-04-16T19:38:45.165985Z" } }, "outputs": [], "source": [ "expected = slope * xs + inter\n", "resid = ys - expected" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "According to the model, the residuals should follow a normal distribution with mean 0 and standard deviation `sigma`. So we can compute the likelihood of each residual value using `norm` from SciPy." ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:45.171835Z", "iopub.status.busy": "2021-04-16T19:38:45.171084Z", "iopub.status.idle": "2021-04-16T19:38:45.173013Z", "shell.execute_reply": "2021-04-16T19:38:45.173490Z" } }, "outputs": [], "source": [ "densities = norm(0, sigma).pdf(resid)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is an array of probability densities, one for each element of the dataset; their product is the likelihood of the data." ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:45.177823Z", "iopub.status.busy": "2021-04-16T19:38:45.176986Z", "iopub.status.idle": "2021-04-16T19:38:45.179736Z", "shell.execute_reply": "2021-04-16T19:38:45.180173Z" } }, "outputs": [ { "data": { "text/plain": [ "1.3551948769060997e-105" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "likelihood = densities.prod()\n", "likelihood" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we saw in the previous chapter, the likelihood of any particular dataset tends to be small.\n", "If it's too small, we might exceed the limits of floating-point arithmetic.\n", "When that happens, we can avoid the problem by computing likelihoods under a log transform.\n", "But in this example that's not necessary." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The Update\n", "\n", "Now we're ready to do the update. First, we need to compute the likelihood of the data for each possible set of parameters." ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:38:45.185541Z", "iopub.status.busy": "2021-04-16T19:38:45.184543Z", "iopub.status.idle": "2021-04-16T19:39:24.492328Z", "shell.execute_reply": "2021-04-16T19:39:24.491834Z" } }, "outputs": [], "source": [ "likelihood = prior.copy()\n", "\n", "for slope, inter, sigma in prior.index:\n", " expected = slope * xs + inter\n", " resid = ys - expected\n", " densities = norm.pdf(resid, 0, sigma)\n", " likelihood[slope, inter, sigma] = densities.prod()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This computation takes longer than many of the previous examples.\n", "We are approaching the limit of what we can do with grid approximations.\n", "\n", "Nevertheless, we can do the update in the usual way:" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:24.496186Z", "iopub.status.busy": "2021-04-16T19:39:24.495332Z", "iopub.status.idle": "2021-04-16T19:39:24.505907Z", "shell.execute_reply": "2021-04-16T19:39:24.506555Z" }, "tags": [ "hide-output" ] }, "outputs": [ { "data": { "text/plain": [ "6.769832641515688e-107" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior = prior * likelihood\n", "posterior.normalize()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is a `Pmf` with a three-level index containing values of `slope`, `inter`, and `sigma`.\n", "To get the marginal distributions from the joint posterior, we can use `Pmf.marginal`, which we saw in <<_ThreeParameterModel>>." ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:24.511934Z", "iopub.status.busy": "2021-04-16T19:39:24.510975Z", "iopub.status.idle": "2021-04-16T19:39:24.521557Z", "shell.execute_reply": "2021-04-16T19:39:24.521978Z" } }, "outputs": [], "source": [ "posterior_slope = posterior.marginal(0)\n", "posterior_inter = posterior.marginal(1)\n", "posterior_sigma = posterior.marginal(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the posterior distribution for `sigma`:" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:24.565248Z", "iopub.status.busy": "2021-04-16T19:39:24.537773Z", "iopub.status.idle": "2021-04-16T19:39:24.888743Z", "shell.execute_reply": "2021-04-16T19:39:24.888197Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "posterior_sigma.plot()\n", "\n", "decorate(xlabel='$\\sigma$, standard deviation of $\\epsilon$',\n", " ylabel='PDF',\n", " title='Posterior marginal distribution of $\\sigma$')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The most likely values for `sigma` are near 26 inches, which is consistent with our estimate based on the standard deviation of the data.\n", "\n", "However, to say whether snowfall is increasing or decreasing, we don't really care about `sigma`. It is a \"nuisance parameter\", so-called because we have to estimate it as part of the model, but we don't need it to answer the questions we are interested in.\n", "\n", "Nevertheless, it is good to check the marginal distributions to make sure \n", "\n", "* The location is consistent with our expectations, and \n", "\n", "* The posterior probabilities are near 0 at the extremes of the range, which indicates that the prior distribution covers all parameters with non-negligible probability.\n", "\n", "In this example, the posterior distribution of `sigma` looks fine." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the posterior distribution of `inter`:" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:24.912873Z", "iopub.status.busy": "2021-04-16T19:39:24.909890Z", "iopub.status.idle": "2021-04-16T19:39:25.019756Z", "shell.execute_reply": "2021-04-16T19:39:25.019133Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdgAAAFgCAYAAAAYQGiBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAAuJAAALiQE3ycutAABKRUlEQVR4nO3deXhU5d0+8PucM0kgZGVLIBuQBZgASZB9B1HZrEhxF0GCtpb2tfprbetra1+1Vq3aWqWtpcUFURRE61ZBIcgOiRBAAgkJhDAh7AkkIcvMOd/fHyMjARITmMmZydyf68oFwzwzc88wyZ1z5jnPUUREQERERG6lmh2AiIioLWLBEhEReQALloiIyANYsERERB7AgiUiIvIAFiwREZEHsGDJK4WEhGD37t1mx3Ardz6nHj164MMPP2z2+PT0dLz++usAgCVLlmDEiBFuyXG5+2tptu+zfv16xMbGuu3+Wur+++9Hx44dER0dfcl1JSUlCAkJwZkzZ0xIRt6OBevHxo0bh6CgIISEhCAyMhJjx45Fdnb2Vd/nX/7yl6vOVlVVhf79+1/1/XgTb3lOd911FzZt2vS9415//XWkp6e77f6ao7i4GIqioKKiwvVvo0ePhs1mc8v9t9TGjRuxfPlyHDx4EEePHr3k+vj4eFRVVSE8PLxZ9+eu7w9PmTNnDn7+85+bHaPNYMH6uWeffRZVVVUoKyvDwIEDMX36dFPzOByOq7q9iEDXdTel8d7H9BZX+//l7Q4ePIj4+PhmF6intfXXu80R8ltjx46VP//5z67Lu3fvFgBy8uRJOXr0qNxyyy3SuXNniYuLk0cffVTsdruIiJw6dUqmT58ukZGREh4eLgMHDpTi4mJ5+OGHRVVVCQwMlA4dOsikSZNERKSyslLmz58vcXFx0qVLF5k1a5ZUVFSIiMjBgwcFgCxatEgSExOla9euIiICQHbs2CEiIoZhyPPPPy+9evWSyMhIueGGG6SoqMiVOyEhQZ5++mkZOnSotGvXTnbt2nXZ5/rII4/IhAkTJDg4WIYOHSo2m00ef/xx6dy5s8TExMiKFStc41euXCnXXHONhIWFSXR0tDzwwANy7ty5Jh/zm2++kaFDh0pISIiMGzdOfvnLX8rYsWNdt7nwOT3++OMybdo0mT9/voSHh0tcXJwsXbq0RY//wQcfNPp/+/LLL0tsbKx07NhRHn30UUlLS5PXXntNRERee+01SUtLc4194YUXJC4uTkJCQiQhIUEWLlwo27dvl6CgIFFVVTp06CAdOnSQQ4cOyeOPPy5Tp06VH//4xxIZGSkPP/zwJfeXkJAgTz31lGRkZEhoaKhcf/31Ulpa2uD/u7y83DX+wQcflNmzZ4uISJcuXQSA6zHfeustycrKkvDwcNf4s2fPyn333SfR0dESHR0tP/rRj6SqqqrB/b/55puSmJgo4eHhMnv2bKmvr2/0tVq5cqWkp6dLWFiYZGRkyBdffCEiIi+99FKD1+B8xgtd/Hxmz54t8+bNk9tuu01CQkIkJSVFsrKyRETc+v2Rk5Mj48ePl8jISOncubP89Kc/dWX6+uuvZdy4cRIZGSmJiYnyz3/+03Xd+f+/uXPnSmhoqCQlJbne9y+99JJYLBYJCAiQDh06iNVqbfQ1o+ZhwfqxCwu2urpaHnzwQUlISBARkQkTJsidd94plZWVUlxcLFarVf7whz+IiMhvfvMbmTZtmlRXV4vD4ZAdO3bIqVOnLrnP82655Ra54447pLy8XKqqquT222+Xu+++W0S++wEyffp0KS8vl+rqahFpWEZvvPGGdO/eXXbt2iU1NTXy8MMPS9++fV2Fn5CQICkpKbJv3z5xOBxSV1d32ecaExMju3fvlpqaGpkwYYL07NlTXnzxRbHb7fLPf/5TOnXq5PpBvG7dOtm+fbs4HA4pKiqSPn36yFNPPeW6v4sfs7a2Vnr16iW///3vpa6uTrZs2SKdOnVqsmADAgLk7bffFofDIW+88YaEhITI2bNnm/34jRXs6tWrJSwsTDZt2iR1dXXy6KOPiqZply3Y/Px8ad++vezdu1dERI4ePSo7d+68ZNx5jz/+uOu+7Ha7VFdXX7Zge/ToIXv37pXq6mq55557ZNy4cQ3+vxsr2Mtdf3HB3nvvvTJ+/Hg5efKknDhxQsaOHSv33Xdfg9vfdtttcubMGSktLZWYmBjXc79YYWGhtGvXTt5//32x2+2ybNkyad++vRw4cKDR1+BClyvYkJAQWb16tTgcDnnyySdd31Mi7vn+sNlsEhYWJgsWLJCamhqprq6WdevWiYhIWVmZdOzYUd59911xOByye/du6datm3z55ZcN/v/+8Y9/iN1ul48++kiCgoKksLDQlf/BBx9s9PlSy7Bg/djYsWOlXbt2Eh4eLlFRUXLDDTfIzp07xWazCQApKytzjV2yZIkkJyeLiMjvfvc7GT58uOTm5l72Pi/8AXL8+HFRVdVVwCIiBQUFEhAQIA6Hw/UD5HzxnHfhv02cOFGeeeYZ13W1tbUSGhoqGzduFBHnD/SLf2hdLtevfvUr1+UFCxZIdHS063J1dbUAkP3791/29n/+859l4sSJrssXP+a6deskPDzcVfoiIj/5yU+aLNihQ4e6rjMMQwIDAyUnJ6fZj99Ywc6dO1ceeOAB1+X6+noJCwu7bMGeL5jly5c32EK+eNx5jz/++CX/drmCffbZZ12Xjx49KgDk8OHDV12wuq5LUFCQbNmyxXX9xo0bJSgoSHRdd93+/C8MIiLz5s1rsIV3oaeeesq1JXnedddd5/pl8koK9rbbbnNdf/576eTJkyLinu+PZ555RsaPH3/ZPM8995xMnz69wb89+uijMnfuXBFx/v/17du3wfWTJk2SJ5980pWfBes+llbZD01e649//OMlkxq2bt2Kdu3aNZg12atXL9dEk1/+8peora3FrbfeijNnzuC2227DM888g/bt219y/8XFxTAMA7169Wrw76qqNpg0Eh8f32hGm82GHj16uC4HBQWhe/fuDSa+NHX78y58PsHBwYiKimpwGXBORAKA7Oxs/OY3v8Hu3btRU1MDh8OB3r17N7i/Cx/zyJEj6NatGywWS4Pr9+zZ06w8iqKgffv2qKysbPbjN+bIkSMYN26c63JAQAC6det22bGJiYl444038Morr+Dee+/FsGHD8NxzzzU5uak5r3VCQoLr71FRUQgKCkJpaWmD1/xKnDhxAnV1dQ3eD7169UJdXR1Onjzp+rcLX9sOHTo0mDR1oYvfW+fv72omVV382ABQWVmJTp06XTL2Sr4/Dh06hOTk5Ms+dnFxMT777DNERES4/k3XdYwePdp1+cL/m/OXS0tLm/HMqKU4yYkuERsbi9raWhw7dsz1bwcPHnQdKhESEoJnn30W+fn52Lx5M1avXo2//e1vAJw/GC4UFxcHVVVx5MgRVFRUuL5qa2sRExPjGnfx7S7OU1xc7LpcX1+PI0eONDh0o6nbX4k77rgD48ePx4EDB3D27Fk8/fTTkItOPHXhY3bv3h1Hjx5tMAmlpKTEo4/fmO7du+PQoUOuy3a7HWVlZY2Ov/XWW5GVlYVjx44hLS0Ns2bNAtD4a9qc1/rCxz9+/Djq6uoQExODkJAQAMC5c+dc11+Y7fvuu0uXLggMDGzwfjh48CCCgoLQuXPn7811sYvfW+fvz1OHBbnj+yMhIQGFhYWXvf+4uDjcfPPNDe6rsrISn332mWvMhf83gPN9ev6x3P195O/4atIlYmJiMH78ePziF79AdXU1SkpK8PTTT2P27NkAgE8++QQFBQUwDANhYWEICAhwbblFRUWhqKjIdV/R0dGYPn06fvrTn7q2MI4ePYoPPvig2XnuvvtuvPLKK8jLy0NdXR0ee+wxxMTEYMiQIW581g2dPXsWERER6NChA/bu3Yu///3vTY4fNmwYIiMj8cc//hF2ux3Z2dl47733Wu3xL3THHXdgyZIl2Lp1K+rr6/HEE0+gurr6smPz8/PxxRdfoKamBoGBgQgJCWnwf1lWVoaampoW53/11VeRn5+Pmpoa/OpXv8KYMWMQGxuLzp07Iz4+Hm+88QYMw0BWVlaDH/5dunSBqqoN3kMXUlUVd955J/73f/8Xp0+fxqlTp/C///u/mDVr1hWVw2233Ya1a9fiP//5D3Rdx4oVK7B+/XrcfvvtLb6v5nDH98ddd92Fbdu24R//+Afq6upw7tw5rF+/HgAwa9YsrFmzBu+//z7sdjvsdjtyc3MbHH5XUFCAhQsXwuFw4NNPP8WaNWtw2223ufIdOHDAE0/dL7Fg6bLefvtt1NTUICEhASNHjsTUqVPxyCOPAAAKCwsxadIkhIaGwmq1Yvjw4XjggQcAAD//+c/x5ZdfIiIiAtOmTQPgPJ4yIiICgwcPRlhYGEaPHo2vv/662Vnuuece/OxnP8O0adMQHR2NnTt34uOPP26wO9bdXn31VTz//PMICQnBj3/84+/9gRsQEIAPP/wQn3zyCSIjI/HII4/g7rvvRlBQUKs8/oUmTpyIJ598Ej/84Q/RrVs3GIaBfv36XXZsfX09fvvb3yIqKgqdOnXCmjVrXAtSTJgwAcOGDUNMTAwiIiJatEU+d+5c3HHHHYiKikJpaSmWLFnium7RokV47bXXEB4ejldffbXBc2vfvj0ef/xxTJ48GREREXj77bcvue+XXnoJPXr0gNVqRWpqKpKSkvDiiy82O9uFkpKSsGLFCjz++OOIjIzEE088gQ8++OCSXbbu4o7vj9jYWHz55Zd4++23ERUVhR49emD58uUAnL8cr1y5Eq+++iq6deuGqKgozJ8/H2fPnnXdftKkSdiyZQs6duyIBx98EG+99ZZrl/O8efNQWlqKyMhIDBgwwCOvgT9RpLn7nYioRe6//34YhoF//etfZkchAgD8/ve/R25urltX2qLGcQuWyE3Wr1+Pw4cPwzAMrF69Gm+//TZuueUWs2MRkUk4i5jITQ4cOIDbb78d5eXliImJwdNPP40bbrjB7FhEZBLuIiYiIvIA7iImIiLyABYsERGRB7S5z2DDwsJMPXckERH5D5vN1uAwqAu1uYKNjY1FXl6e2TGIiMgPWK3WRq/z6C7irKwsWK1WJCUlYe7cuZc9l2FTY7Zs2YIhQ4YgNTUVqampOHLkiCfjEhERuY3HClbXdWRmZmLZsmUoLCxEVVUVFi9e3OwxlZWVuOeee/DGG29gz5492LRpEyIjIz0Vl4iIyK08VrDZ2dmIjY1FamoqACAzMxMrVqxo9pglS5Zg6tSp6Nu3LwAgPDz8smdrISIi8kYeK1ibzYa4uDjX5fj4+EtOAdXUmPz8fNTV1eHaa69FRkYGHnvsscueTWTBggWwWq2ur/Lycg89IyIioubz6GewiqK4/t7YehaNjbHb7Vi7di3ee+89bNq0CVu3br1kFzMAzJ8/H3l5ea4v7kYmIiJv4LGCjYuLa3D2DZvNdsnhM02NiY+Px+TJk9GpUye0b98eN998M7Zv3+6puERERG7lsYIdNGgQSktLXYfMLFq0CDNmzGj2mBkzZmDDhg2ora2FYRhYs2aN67NaIiIib+exgtU0DQsXLsTMmTORlJSE4OBgzJo1Czk5OZgyZUqTYwDneRrvueceDBw4EAMGDEDXrl0xd+5cT8UlIiJyqza32L/VauVCE0RE1Cqa6hyuRUxEROQBLFgiPyfVp2Ec3gmpOWN2FKI2pc2tRUxEjRMRoOoUjGMFkGMFzj+rTjmvVFSo3a1QE4dDjR0AxRJoblgiH8eCJWrDRASoPAHj2H4Yx/IhRwsg575djEULgNq5J9Rew6F0jIUcyYNxMBuO0m+gBLSH2nMw1MThUDr3bHC8OhE1DwuWqI0SRz0cG1+Dcejb48e1QKhdE6GmjIYalQKlcw8oWsB3N4jPgAy6BYZtF4yizdD3b4BesA5KWBS0xOFQew2F0qGjOU+GyAexYInaIDlXAXvW3yCnDkHrPR5qz8FQOiVA0Zr+llcsgdB6DILWYxCk5gyMA1uhF22GY8eHwI7/QEscBm3Y3d97P0TEgiVqc4zTh+FYswBSexaWEbOhJY24ovtR2odDS70eqvU6yOnDMPauhl60GVJ3Dpax9zXc+iWiS3AWMVEbYhzeCfvnfwIc9QiY+PMrLtcLKYoCtVM8tJFzoA2YBsO2E46sv0Mc9W5ITNR2sWCJ2gARgZ73JexZf4cSHIGAKb+CGp3i1sdQFAWW9BthybgZxpE9cKx5BWKvc+tjELUlLFgiHye6A/qWJXDkLIManYKAyY9ACYvy2ONp/SfBMvhWGEfz4fjyJUj9OY89FpEvY8ES+TCpPwfHmleg718PLWkkLNf+D5SgEI8/rtb3WliG3QXjRBHsX/wFUlfl8cck8jUsWCIfJZUnYP/vczDK9sEycAa04bNadXavljIGlhGzIadKYF/1Z0htZas9NpEvYMES+SCprYT98z9Bqk7CMu5H0PrdYMpiEFrSCFhGZ0IqjsC+8gXIuYpWz0DkrViwRD5GRODY+Aak5iwCrv0ZtPgMU/NoPQfDMvZ+SOVx2Fc+D6k+bWoeIm/BgiXyMUb+Whilu6ENmAI1urfZcQAAWnwGAsY9AKkuh/3z5yG1/EyWiAVL5EOM8lI4vn4fapde0AZMNTtOA2psfwSM/wmk+jQc294xOw6R6ViwRD5CHPVwrP8XFEWDZVQmFFUzO9Il1JhUaH0nwCjOgX5+DWQiP8WCJfIR+vYVkIoj0IbdCSW0s9lxGqVlTIcS2hX61rc5s5j8GguWyAcYtl3Q92VB7TUUWq+hZsdpkmIJhGXkbEhtFRxbuauY/BcLlsjLSc0ZODa9CSWkEyxD7jA7TrOoXZOgWa+Fcehr6Ie+NjsOkSlYsERezHVITl2183PXwPZmR2o2Lf0mKGFR0LdwVzH5JxYskRcz9q6GcWQPtAFToXZNNDtOiyiWQFhG3AOpq4Zj69tmxyFqdSxYIi9lnD4Mx/YVzt2t/aeYHeeKOHcVT4RxaDv04hyz4xC1KhYskRdyHpLzbyha4LeH5Pjut6qW/gPnruKt73BXMfkV3/2uJWrD9JzlkDNl0IbfDSWko9lxropzV/Fs567iLUsgImZHImoVLFgiL2McyYNe8BW0xOHQegwyO45bqF0TnbuKS3bA4K5i8hMsWCIvIiJw5CyH0i4U2uDbzI7jVg12FdecNTsOkcexYIm8iHFgK6SiFNqAqT51SE5zOBegmOM8SfxW7iqmto8FS+QlRLdDz/0ISmgXqMmjzY7jEWqXXtBSr4NRkguDC1BQG8eCJfISRv5XkOpTzrV8NYvZcTxGS7sRSkhn6Ns/gOgOs+MQeQwLlsgLSP056Ls+g9IpAWrCNWbH8SjFEggt7UZI1UkYRZvNjkPkMSxYIi+g71kFqa+GZeAMKIpidhyPU3sOgRLeDfquTyGOerPjEHkEC5bIZHKuAnrel1C7p0Lt1sfsOK1CUVVo6TdCzpXD2L/B7DhEHsGCJTKZvvNjQHdAG3iz2VFalRo/EEpkHPTdn0HsdWbHIXI7FiyRieTMUej7N0LtNQRqxziz47QqRVFgyfgBpLYSxr4ss+MQuR0LlshEjh0fAKoKS/pNZkcxhRLTH2rnntD3rITUnzM7DpFbsWCJTGIcL4JRkgut9zgoIZ3MjmMKRVGgZUx3zqLO+9LsOERu5dGCzcrKgtVqRVJSEubOnQuH49Jj3hobs3btWoSGhiI9PR3p6emYOXOmJ6MStSoRgb59BZSAdj57Kjp3Ubv1gRrdG0beakhtldlxiNzGYwWr6zoyMzOxbNkyFBYWoqqqCosXL27RmKFDhyI3Nxe5ublYvny5p6IStTqx7YJxvBBq6g1Q2oWYHcd0WvpNEEct9D0rzY5C5DYeK9js7GzExsYiNTUVAJCZmYkVK1a0eAxRWyOGAcf2D6C0D4dmnWh2HK+gdk2EGtMf+r4syLkKs+MQuYXHCtZmsyEu7rtZkfHx8bDZbC0a8/XXXyM9PR1jxozBypWX/812wYIFsFqtrq/y8nI3PxMi9zKKNjvP9Zp2IxRLoNlxvIaW8QNAt0Pf/bnZUYjcwqMLnl64Ik1jZ85obMzAgQNx6NAhhIWFITc3F1OmTMHmzZuRkJDQ4Pbz58/H/PnzXZetVqu74hO5nTjqoe/8CEpYNNSkEWbH8Spqx3ioCQOh718HLfU6v534RW2Hx7Zg4+LiUFJS4rpss9kQGxvb7DFhYWEICwsDAKSnp2PEiBHIzc31VFyiVmF8uwvUMvBmKKpmdhyvo6X9ADAM6Ls+NTsK0VXzWMEOGjQIpaWlyMvLAwAsWrQIM2bMaPaYsrIy1xatzWbD1q1buXVKPk0c9dDzvoDauQeUuDSz43glNaIb1F5DoBdthpw9ZnYcoqvisYLVNA0LFy7EzJkzkZSUhODgYMyaNQs5OTmYMmVKk2MA4P3330e/fv2Qnp6OadOm4dlnn0VycrKn4hJ5nHFgC6S20jlz2A8W9L9SlgHTAACOnZ+YnITo6ijS2IejPspqtbq2iIm8hYjA/p/HATEQcNMTUFSu8dIUx+a3oO/fgIAbfws1MsbsOESNaqpz+F1O1ArEtgty9hg060SWazNoA6YAqgo99yOzoxBdMX6nE7UC/ZuVUIJCoCZy5nBzKB06QkseA+NwLuTMUbPjEF0RFiyRhxnHi2CcKILaexyPe20BzXotAAX63tVmRyG6IixYIg/T874AtABofcaZHcWnKKFdoManO2cUc41i8kEsWCIPkrPHnWfMSRwBpV2o2XF8jmad6FzdqWCd2VGIWowFS+RB50/B5tzdSS2ldEmE0ikBRn4WRLebHYeoRViwRB4itZXQizZBjU+HEhZldhyfpCgKNOt1kJqzMIpzzI5D1CIsWCIP0fO/AnQ7NOt1ZkfxaWp8BpTgSOh5Xza6pjmRN2LBEnmAOOph7MuC2iURatdEs+P4NEWzQOszHlJugxzNNzsOUbOxYIk8wCjaDKmrgpZ6vdlR2gQ1ZTRgCXJ9pk3kC1iwRG4mhgE97wsooV25qL+bKIHB0JJGwCjdzYUnyGewYInczDicC6k84TynKRf1dxutLxeeIN/CgiVyMyPvCyjtQqH2GmZ2lDbFufBEmnPhiTouPEHejwVL5EbG8UIYJw5wWUQP0fpe51x4Ip8LT5D3Y8ESuZG+59tlEXuPMztKm6R0Pb/wxFqI7jA7DlGTWLBEbiJnjsI4vBNa0kgo7ULMjtMmfbfwxBkuPEFejwVL5CauZRH7cllET+LCE+QrWLBEbiC1VdAPbIGakAElrKvZcdq07xaeOMyFJ8irsWCJ3MAo3OhcFrEPt15bg2vhCR6yQ16MBUt0lcQwoBd8BSUiBgqXRWwVroUnbLu48AR5LRYs0VWSI3sgVaeg9RnHhSVakdZnApwLT6wxOwrRZbFgia6Snv8VFEs7qD2Hmh3FryhhXb9deGITF54gr8SCJboKUnkSRuk3UBOHQwkIMjuO39H6XAvodhj7N5odhegSLFiiq6DvXwdAoPYea3YUv6REJUMJ7wZ9/3oeskNehwVLdIXEUQ9j/0aoUSlQI7qZHccvKYoCrfdYSOUJSNles+MQNcCCJbpCxqHtkLoqbr2aTO01zHnITv5XZkchaoAFS3SFjIKvoLQPgxqXbnYUv6YEtofWc7DzkJ3q02bHIXJhwRJdAeN0ifOsOcmjoWgWs+P4PbX3WEAM6JzsRF6EBUt0BYz8rwBFhZY8yuwoBEDtGA+1c08Y+9fzLDvkNViwRC0k9eegH9gGNS4NSoeOZsehb6kpY5xn2SndbXYUIgAsWKIWM4q2AHo9NE5u8ipqj0FQAoOdexeIvAALlqgFRAR6/looYVFQovuYHYcuoFgCoSYOh1G2F3L2mNlxiFiwRC0hR/MhZ49B6z2W6w57IS1lDABAL1hvchIiFixRi+j5awEtAGricLOj0GUo4dFQo3vDKNwEcdSbHYf8HAuWqJnkXDmMwzuh9RwCJTDY7DjUCLX3WEh9NYxD282OQn6OBUvUTHrBBkAMqL3HmR2FmqDGpkFpHwajYJ3ZUcjPsWCJmkF0B4z966F27gm1U7zZcagJimaBmjQKxokiGOU2s+OQH/NowWZlZcFqtSIpKQlz586Fw3HpAeDfN6aiogLdu3fHvHnzPBmVqEmGbSek5gy3Xn2EljIagMJDdshUHitYXdeRmZmJZcuWobCwEFVVVVi8eHGLxzzyyCO49tprPRWTqFmM/K+gBHaAmjDQ7CjUDEqHjlBjB0A/sBVirzU7DvkpjxVsdnY2YmNjkZqaCgDIzMzEihUrWjQmKysLdXV1LFgylVFRBuNoPtTkUVAsgWbHoWbSeo8BHHUwDmw1Owr5KY8VrM1mQ1xcnOtyfHw8bDZbs8fU1NTg17/+NZ5//vkmH2fBggWwWq2ur/Lycjc+CyLA2O+cLOPc7Ui+QumeCiWkE/T8r3gydjKFRz+DvfBA/Mbe4I2N+f3vf48f/ehH6NKlS5OPMX/+fOTl5bm+IiMjrzI10XfEUQ+jaAvUblYooU2/F8m7KIoCLXkMpKIUcqLI7Djkhzx2nq24uDiUlJS4LttsNsTGxjZ7zKZNm/Duu+/iiSeeQFVVFerq6iAi+Pe//+2pyESXMA5th9Sf49arj1KTRwI7P4JesA5q1ySz45Cf8dgW7KBBg1BaWoq8vDwAwKJFizBjxoxmj1m/fj2Ki4tRXFyM559/HrfddhvLlVqdsX89lHahUGMHmB2FroDSLhRq/EAYxV9D6qrMjkN+xmMFq2kaFi5ciJkzZyIpKQnBwcGYNWsWcnJyMGXKlCbHEHkDo6IMxvFCqEkjeFJ1H6b1HgsYDhiFm8yOQn5GkTb26b/VanVtERNdDUf2e9D3rkbg9CehhHU1Ow5dIRGB/aP/AwwdAdOf4EkayK2a6hyu5ER0Gd9NburLcvVxiqJASxkNqTwOOVZgdhzyIyxYosswSnIh9dVQk0eZHYXcQO01FFAtPI0dtSoWLNFlGPvXOSfIxKWbHYXcQAkKgdrjGhgl2yG1nOxErYMFS3QROXMUxrH9UBM5uakt0ZJHA4YO48AWs6OQn2DBEl1E378BAKAljzQ5CbmT0jUJSlg09IL1XNmJWgULlugCotthFG6CGt0bSliU2XHIjZyTnUZBzh6FHC80Ow75ARYs0QW+m9zElZvaIrXXcEDVoO/nZCfyPBYs0QWM/eudp6WLTzc7CnmA0i6EKztRq2HBEn1Lzh5znpYuaQQULcDsOOQhWvIo58pOB7aZHYXaOBYs0bf0/RsBfPsDmNosJbo3lNAu0AvWcbITeRQLlgiA6A4YRZugRiVDCY82Ow55kPM0dqMhZ8p4GjvyKBYsEQDjcC6kthJq8hizo1ArUJNGAKoG49tDsog8gQVLBMDYv4GTm/zI+VW69OIcSP05s+NQG8WCJb8nZ4/DKNsLNXEYFEug2XGolWjJowDdDuPAVrOjUBvFgiW/pxc6dxPy2Ff/onTrCyWkM1d2Io9hwZJfE915Im61axLUiG5mx6FW5JrsVFEKOVVsdhxqg1iw5NcM265vJzdx69UfqUnDAUWFwdPYkQewYMmvGQXroQQGQ00YaHYUMoHSPhxqXBr0g9mQ+hqz41Abw4IlvyWVJ2CU5UHtNZSTm/yYljwa0OthFGebHYXaGBYs+a3zp6VTU8aanITMpHS3QunQCTp3E5ObsWDJLzknN23k5CaCoihQk0dCTpfAOHXI7DjUhrBgyS8Ztp2c3EQuWtIITnYit2PBkl/i5Ca6kBIcCTWmP/SD2yD2WrPjUBvBgiW/893KTcM5uYlctJTRgKMOxkGexo7cgwVLfocrN9HlKN1TnZOd8nkaO3IPFiz5FdfKTVHJnNxEDSiqCjV5FKT8MISTncgNWLDkV747LR23XulS3012Wmd2FGoDWLDkV5yTmzpAjc8wOwp5ISU44oKVnXgaO7o6LFjyG3L2OIyj+6AmcXITNU5LGeNc2YmnsaOrxIIlv3F+5SaNu4epCUq3vlBCu/A0dnTVWLDkF0R3wChyTm5SwqPNjkNerMFp7E4UmR2HfBgLlvyCUbLDObmJ6w5TM6hJIwBV48pOdFVYsOQXjP3nJzelmx2FfIDSLhRq/EDoh76G1FWZHYd8FAuW2jw5ewzG0XyoSSOgaAFmxyEfoaWMBnQ7jKItZkchH8WCpTbv/GnItORRJichX6JEpUAJi+JkJ7piTRbsc8895/r79u3bPR6GyN1Et8Mo2gw1ujcnN1GLKIoCLWUM5OxRyLH9ZschH9RkwS5dutT193nz5nk8DJG7GSW5kLoqrtxEV0RNHAaoFuhc2YmuQJMFe+FukSvZRZKVlQWr1YqkpCTMnTsXDoej2WM2b96M9PR0pKeno1+/fvjb3/7W4scnMgrWQQkK4eQmuiJKUAjUHtfAKNkOqa00Ow75mCYLtrq6Gps3b8bGjRtx7tw5bN68GZs2bXJ9NUXXdWRmZmLZsmUoLCxEVVUVFi9e3OwxaWlpyMnJQW5uLrZs2YJnn30WxcXFV/dsya/ImaMwjhVwchNdFS1lDGDoMAqb/plHdDFLU1fGxMTg0UcfBQB0797d9XfA+fnEmjVrGr1tdnY2YmNjkZqaCgDIzMzEK6+8gnvvvbdZY4KDg13jampqoOs6JxpQi3y3chMnN9GVU7okQgnvBn3/eqip10NRFLMjkY9osmCzsrKu+I5tNhvi4uJcl+Pj42Gz2Vo0Jjc3F7NmzUJhYSH++Mc/omfPnpc8zoIFC7BgwQLX5fLy8ivOTG2HOOqdp6WL7g0lLMrsOOTDFEWB1nssHNuWQsr2QuluNTsS+YgmCxZwFtaSJUuwd+9eKIqC1NRU3HHHHYiIiPjeO7/wN73Gtj6bGpOeno7du3fj6NGjmDlzJiZPnozevXs3GDN//nzMnz/fddlq5ZufAOPQdkh9tXP3HtFVUnsNBb5+37kVy4KlZmryM9jCwkL07dsX7777LgICAmCxWLB06VKkpqbi4MGDTd5xXFwcSkpKXJdtNhtiY2NbPAYAoqOjMXr0aHz88cfNelJERv5aKO3Docalmx2F2gAlMBhazyHOWek1Z8yOQz6iyYJ9/PHH8Ytf/ALr16/HX/7yF/zlL3/BV199hV/84hf47W9/2+QdDxo0CKWlpcjLywMALFq0CDNmzGj2mKKiItjtdgBAZWUlVq1ahX79+l3ZsyS/YpwshnHyINSUMVC0791JQ9QsaspoQAzo+zeaHYV8RJMFm52djV/84heX/PvPf/5zZGdnN3nHmqZh4cKFmDlzJpKSkhAcHIxZs2YhJycHU6ZMaXIMAKxduxbp6elIS0vDyJEjcccdd2DSpElX+jzJjxj5awFF5eQmciulUw8okXEw9m+AGIbZccgHKNLE1NyMjAzs2LGjxdeZyWq1uraIyf9IXRXql/0Kanw6AsbcZ3YcamP0gnVwbFmCgGt/BjWGe9So6c5pcv/Z+eNgL9fB586dc086Ijcy9m8EDAe03uPNjkJtkNpzCJSc96HvW8uCpe/VZMFefOzrxdcReRMxDOj5X0GJiIHSNdHsONQGKQHtoCYNh75vLeTscShhXc2ORF6syYJdu3ZtK8UgunpSuhtSfQqWYXdzMQDyGK33OOj7sqDnr4Vl8K1mxyEv1uQkp4MHD2LGjBno378/7rrrLpSVlbVWLqIW0/ethRLQHmrPIWZHoTZMCY+G2t0Ko3AjxF5ndhzyYk0W7Ny5c5GSkoI//elPCA8Px0MPPdRauYhaRM4chVGW51x3OCDI7DjUxml9xkPstTAObDY7CnmxJncRnzx5Es888wwA4IYbbkBGRkarhCJqKb3gKwDO3XdEnqbE9IcS2sU52SllLD+SoMtqcgs2IOC7M5AoigJVbXI4kSnEXudcd7h7KiedUKtwrk88DnKmDFK21+w45KWabMzc3FwEBga6vs5fDggIQGBgYGtlJGqScXArxF4Lrc84s6OQH1GTRgCWIOj71podhbxUk7uIDa5WQl5ORKDvy4IS0hlKdx6XSK1HCQyG1msY9IJ1kMqTUEI7mx2JvAz3+ZJPk2P7IRVHoPUeC4UfYVArU/uMByDQ89eaHYW8EH8ikU/T89cCWoBzdx1RK1MjukGN7uM8ZMdRb3Yc8jIsWPJZcq4cRskOaD2HQAkKMTsO+Smt7wRI/TkYB7aaHYW8DAuWfJZesB4QAyoPzSETKTH9oXToBH3fmsuu207+iwVLPkl0B4yCdVC7JELtFG92HPJjiqpC6zMOUnEEcqzA7DjkRViw5JOMkh2Q2kpuvZJXUJNGAFoA9H1ZZkchL8KCJZ9k7MuC0i4UasJAs6MQQQkKgdZrKIySXEjVabPjkJdgwZLPMU6XwDhRBDVlDBStyUO5iVqN65CdgrVmRyEvwYIln2PszQIUFVryKLOjELmokbFQo5JhFGzgITsEgAVLPkbOVUA/uBVqwjVQOnQ0Ow5RA2qfCZD6ahgHs82OQl6ABUs+Rd+3BjB0aKnXmx2F6BJqXBqU4Ejo+7J4yA6xYMl3iL0WRv46qNG9eWgOeSVF1Zxn2Sk/DDleZHYcMhkLlnyGsX8DxF7DrVfyamryKEC1OPe2kF9jwZJPEN0Bfe9qKBHdoXRPNTsOUaOUdt8esnNoO6TyhNlxyEQsWPIJxqHtkOrT0KzXQVEUs+MQNen8XhZ9zxcmJyEzsWDJ64kI9D2roARHQO05xOw4RN9LCY+GGp8GvWgTpLbS7DhkEhYseT0p2wspPwytzwQuLEE+Q0u9AdDt0PeuNjsKmYQFS15P3/MFFEs7qCmjzY5C1Gxql17OhSf2rYXYa82OQyZgwZJXM8ptMMryoKaMhhIYbHYcohbR+k2C2Gtg7F9vdhQyAQuWvJq+Z5VzWcS+E8yOQtRiSvdUKJGx0PO+hOgOs+NQK2PBkteS6tMwDmZD7TmYyyKST1IUBVrqDZBzFTAObjU7DrUyFix5LX3vGkAMLixBPk3tcQ2UDp2gf7OKyyf6GRYseSWpPwejYD3U7laokbFmxyG6YoqqQUu9DnL2KMS2y+w41IpYsOSVjIL1EEctt16pTVCTRkIJCoG++7/civUjLFjyOqI7oO9bAyUyDkp0H7PjEF01xRIItc94GCcPQo7tNzsOtRIWLHkd4+A2yLkKaP1u4LKI1GZofcYBliDoe1aaHYVaCQuWvIqIQM/7AkqHjlDjM8yOQ+Q2SlAItORRMEq/gVFuMzsOtQIWLHkVObIHUnEEWt9ruSwitTmadSKgqNC/4VasP/BowWZlZcFqtSIpKQlz586Fw3HpgdaNjVmyZAnS0tIwYMAADB48GGvXrvVkVPIS+p5VUALaQ03msojU9igdOjpPZVecA6k6ZXYc8jCPFayu68jMzMSyZctQWFiIqqoqLF68uNljevbsiaysLOzatQuvv/46br/9dhiG4am45AWM44UwjuZD7TMOSkCQ2XGIPEJNvQEQA3oeT2XX1nmsYLOzsxEbG4vUVOfJsTMzM7FixYpmjxkxYgQ6dnSu3mO1WlFbW4uqqipPxSUvoOd+BMXSzrkbjaiNUiO6QY1Ng75/A6SWP9PaMo8VrM1mQ1xcnOtyfHw8bDZbi8cAwNtvv43U1FSEhYVdct2CBQtgtVpdX+Xl5W58FtRajLJ9zq1X67VQgkLMjkPkUVq/652nstu3xuwo5EEe/Qz2wkMsGju4+vvGbN++HY899hhef/31y95+/vz5yMvLc31FRkZeXWhqdSICfefHUALac+uV/ILaNQlq16RvT2VXZ3Yc8hCPFWxcXBxKSkpcl202G2JjY1s0pqCgALfccguWLl2K5ORkT0Ulk0nZXhjHC6GmXsdT0pHf0PpPhtRXw+BWbJvlsYIdNGgQSktLkZeXBwBYtGgRZsyY0ewxNpsNU6dOxT/+8Q8MHTrUUzHJZCICPfc/UAI7QOt7rdlxiFqN0j0VapdE6N+shNRVmx2HPMBjBatpGhYuXIiZM2ciKSkJwcHBmDVrFnJycjBlypQmxwDA//3f/+H48eP45S9/ifT0dKSnp6O4uNhTcckkUrobxsli56pNAe3MjkPUahRFgZYxHWKvcZ73mNocRdrYytNWq9W1RUzeTURg/+QPQE0FAm7+Aw/NIb9k//IlGMcKETjjKSjtw82OQy3UVOdwJScyjVGyA1J+GFq/SSxX8ltaxnRAr4e+679mRyE3Y8GSKVwzh9uHQ00ZY3YcItOonRKgJgyEvn8dV3dqY1iwZAqjOMe55vCAKVAsgWbHITKVlvYDwDCg7/zY7CjkRixYanViGNB3fuI8Y07SSLPjEJlOjegGLXE49KItMCrKzI5DbsKCpVZnHNwGOXsU2oCpULQAs+MQeQUtbRqgqtBz/2N2FHITFiy1KtEd0Hd9AiWkM9Rew8yOQ+Q1lJBO0FLGwCjZAeNksdlxyA1YsNSqjANbIZUnoKVN4/leiS6i9Z8CaIHQd3Arti1gwVKrcW69fgolLApqzyFmxyHyOkr7MGjWa2GU5cE4mm92HLpKLFhqNUbhBkj1KWhpN0JRNbPjEHklLfV6KAHtoe/4sNGTpJBvYMFSqxBHPfTd/4US3g1qj0FmxyHyWkpgMLR+k2CcOACx7TI7Dl0FFiy1CiN/LeRcBbT0HzQ4RSERXUrtMx5K+zA4dvyHW7E+jAVLHifnKuDY+QnULolQ4zPMjkPk9ZSAIGj9p0AqSmEU55gdh64QC5Y8zrF9BeCohzb0dm69EjWTmjwaSodO0HP/A9EdZsehK8CCJY8yjhfCOLAVWspoqB3jzY5D5DMUzQIt/UZI5QkYhRvNjkNXgAVLHiOGAcfWpc5JGxk3mR2HyOeoPYdCiYiBvuM/kNoqs+NQC7FgyWOMwg3O09Fl3AQlKMTsOEQ+R1FVWIbeCamvhr59hdlxqIVYsOQRUlcFffuHUCJjoSbzdHREV0qNSoKWOAJ64UYYx4vMjkMtwIIlj9B3fASpr4ZlyO1QVL7NiK6Gds0MKIHBcGx9G2LoZsehZuJPPnI74/Rh6AXroPYcAjUq2ew4RD5PaRcKbeDNkHIbjPyvzI5DzcSCJbcSEejblgKWQFiumWF2HKI2Q00eDbVzD+eEp3MVZsehZmDBklsZB7NhHC+Epf8UKMGRZschajMURYE29E6Iow6OnOVmx6FmYMGS24i9DvrXy6GEdoVqvdbsOERtjtopAVrvcTCKs2GU7TU7Dn0PFiy5jb77U0jNGViG3AZFCzA7DlGbpGX8AEq7UDi2vgPR7WbHoSawYMkt5Owx6HlfQo3pDzWmn9lxiNosJTAY2qBbnN9ze74wOw41gQVLbuHIfg8AYBl8q8lJiNo+5wz9FOi7P4NUnjQ7DjWCBUtXzbDtglH6jfNE0WFdzY5D1Oadn/AEQ4cj+12z41AjWLB0VaT+HBxb34ESHAmt32Sz4xD5DTWiG7TU65y/4B7eaXYcugwWLF0Vx7alkOrTsAy/G0pAkNlxiPyK1n8qlA4d4dj2LsReZ3YcuggLlq6YXpzjPBVd73Gc2ERkAiUgCJbBt0GqT0Hf/ZnZcegiLFi6InKuHPqWJVDCoqBd80Oz4xD5LSUuDWpMf+h7VsE4edDsOHQBFiy1mIjAsfFNiL0WllFzoVgCzY5E5LcURfn2I5r2cKz7F6S+xuxI9C0WLLWYsS8LRlketLRpUDv3MDsOkd9TgiNgGTkbUnUSjq1vmx2HvsWCpRYxKsrg2L4Capde0PpNMjsOEX1LjUuD1mc8jIPboBdtMTsOgQVLLSC6A471/wYUFZaR90JRNbMjEdEFtIEzoETEOM8be/aY2XH8HguWmk3f9Qmk/DAsg2/lghJEXkixBMIy5j5ADNjX/xuiO8yO5NdYsNQsxvFC6Ls/hxqbBjVppNlxiKgRakQ356E7pw5Bz/2P2XH8GguWvpfU18CxYRGUdiGwjJgFRVHMjkRETVCTR0FNGOg8dOdIntlx/JZHCzYrKwtWqxVJSUmYO3cuHI5Ld1c0Nqa4uBhjxoxBhw4dMG/ePE/GpO+hZ78HqToFy4h7oLQLNTsOEX0PRVFgGXa3c5WnDYsgtZVmR/JLHitYXdeRmZmJZcuWobCwEFVVVVi8eHGzx4SFheGZZ57BCy+84KmI1Ax6yQ7oRZugJY+GGjvA7DhE1ExKUAdYRmdCaqvg2PAaRMTsSH7HYwWbnZ2N2NhYpKamAgAyMzOxYsWKZo/p2LEjRowYgXbt2nkqIn0PqToNffNbUEK7QBt0i9lxiKiF1K5J0NKmwTiyB8be1WbH8TseK1ibzYa4uDjX5fj4eNhsthaP+T4LFiyA1Wp1fZWXl19dcAIAiL0W9jWvOFdrGj2PC/kT+Sit/xSoUclwbF8B41SJ2XH8ikc/g71wMkxjuyeaM6Yp8+fPR15enusrMjKy5UGpATF0ONYthFSUwjJyDldrIvJhiqp+u6RpEBzr/8Wz7rQijxVsXFwcSkq++23JZrMhNja2xWOo9ek5y5wnUE+7EVrPwWbHIaKrpHToCG3EPZCzx5y/PBu62ZH8gscKdtCgQSgtLUVennOK+KJFizBjxowWj6HWpeevhb4vC2qvodAGTDU7DhG5iRafAS3tRhilu6FvfZuTnlqBxwpW0zQsXLgQM2fORFJSEoKDgzFr1izk5ORgypQpTY4BgHPnziE2NhYPP/ww3nnnHcTGxmL1an5I70lG6R44tr0LtWsSLMN5vCtRW6MNmAoteRT0/Rt4/thWoEgb+zXGarW6toip+YyKI3D891kgKAQBU34DpV2I2ZGIyAPE0OHI+juM0t2wjJgNLWmE2ZF8WlOdw5WcCFJzFo7VrwBQEHDtz1iuRG2YomqwjLkPSqcEODYvhlG6x+xIbRYL1s+Jox6OrL9BzpXDMvZ+KOHRZkciIg9TAoKcv0x36Aj7V6/y8B0PYcH6MRGBY9ObME4ehGXoHVC7W82OREStRGkXioCJ/wNFC4BjzcuQqlNmR2pzWLB+TN/5MYzibGjW66CljDE7DhG1MiUsCpYJ8yH1NbB/+RKkrsrsSG0KC9ZP6fs3Qt/1KdTYNGgDeWgUkb9Su/RCwJj7IGePw7HmbxBHvdmR2gwWrB/S92XBsflNqJ17wDI6E4rKtwGRP1Pj0mAZegeME0XOs+8YhtmR2gT+ZPUz+u7/wrFtKdSoFFiue4hrDBMRAEDrPRZa/8kwSnY4F6JgyV41i9kBqHWICPQdH0D/ZiXU7qmwjPsxFEug2bGIyIto6TcBNWeh718Pqa92rmGsBZgdy2exYP2AiEDfthR6/lqoCQNhGZUJReN/PRE1pCgKtOGzgHYh0L9ZCUdtFSzjH4ASGGx2NJ/EXcRtnBg69E1vQM9fCy1xuPPUcyxXImqEoiiwDJwBy6BbYBwrgH3lC5BzFWbH8kks2DZMdAcc6xZCL9oMrfd4aCNmQ1E1s2MRkQ/QrBNhGT0PcqYM9v8+Bzl7zOxIPocF20adX6HJKNkBrd8kaENu4+L9RNQiWs/BCJjwU0hdFeyf/wnGyWKzI/kUFmwbJPU1cKz+K4wje2DJmA7LwJtZrkR0RdTuVgTc8P8AAPZVL8I4wpOpNBcLto2RyhOwr3wBxrH9sAy5HVr/yWZHIiIfp3ZKQMCkR6C0C4V99cvQD2w1O5JPYMG2Ifqhr2H/5CnI2aOwjLwXWp/xZkciojZCCeuKgMmPQImIgWPDIuh7VvGk7d+DBdsGiKMeji1vw/HVP4H2EQiY8mtoicPMjkVEbYzSPhwBN/w/qNG94fj6fTi+epXrFzeBx2v4ODl7DPavFkLKD0PrNQza0Du5OhMReYwS2B6Wa/8H+s6PoH+zCvYTB2AZOYdn47oMFqwP0w9mw7F5MSACy4jZ0JJGmB2JiPyAollgGTgDajcrHBtfh/3Ll6D1vRZaxnSuEHcBFqwPEkc99Ox3oe/fACWiOyxj7oca0c3sWETkZ9RufRBw42/h2Po29L2rYZTtg2V0JtTIGLOjeQUWrI+RM0dh/+qfkIpSaEkjoQ25nb8xEpFplKAOsIyeByOmP/St78D+6dOwXDMDap8Jfn94IAvWR4huh7F3DRy7PgUAWEZlQus1xORURETfrmGcOAxq1yQ4NiyCI/s9qKXfwDJiNpTgCLPjmYYF6+VEBMbhXOg5yyFVJ6F2SYRlxD1QwqPNjkZE1IAS2hmWG/4f9N3/hb7rU9g/egLaoJlQew3zy/NOs2C9mFFug579Hoyj+VA6dIRl9DyoPQb5/W4XIvJeiqrBkjYNanfnBCjHpjeg5H3pXFEupp9f/fxiwXohqa2EvuM/0PdvALQAaGk3Qku9np+1EpHPULv0QsCNv4NRuAH6zk9gX/MK1KgUaNf8EGrnHmbHaxUsWC8iugPGvjXQd30KsddC7TXU+VtfcKTZ0YiIWkzRLNB6j4Paazj0vC+g71kF47M/Qk24BpaM6VDCupod0aNYsF5AdAeMkh3Qcz+CVB6H2rknLINvhdqll9nRiIiumhIQBEvaNGgpY6Dv+hR6wTrUl+yAljIWWtpUKO1CzY7oESxYE0ltFYz966HnfwU5Vw4lOAKWUXOh9hziV59TEJF/UNqHwTL0Dmh9r4Vjx4fQ87OgF21yLlKRMhpKh45mR3QrFqwJjHIbjL1roB/cBuh2KB3jYcm4yTmBSQswOx4RkUcpYV0RMPZ+GCeLoW9fAX33Z9C/+Rxq7ABoKWOgdLe2iY0MFmwrEcOAlO52rnZyNB9QVKjxGdD6ToDSJbFNvJmIiFpC7dwD6vUPwzhdAiN/HfSD22AczoUS0hlayhioSSN8evexIm3sfENWqxV5ed5zQmCpOgXj0NfQ89dCqk5BCQyGmjIaWso4KCFta3cIEdHVkPoaGAe3Qs9fB6koBVQNasI1zq3arkleuSHSVOdwC9YD5MxR6Ie2wzicCzl1CACghHeDZdhdzgOuebgNEdEllMD2zlnHKWMhJ4qgF6yDUfw1jIPboIR3g5owEGrsACidEryybC/GgnUDEYGcPgyjZDuMklzImTIAgBIWBa3fJKjxGT7zhiAiMpuiKFC6JkHtmgQZdCuMok3QizY7ZyDv+hRK+zCoMf2hxqVB6dbXazdaWLBXSOqqIScOwCjb6yzV6lMAACUyDlr6D6DGD4QSHs1SJSK6Ckq7EGip10NLvR5SeRKGbRcM2y7oB7ZAL9wIaAFQo/tAjRsANba/V60bwIJtBhEBqk/DOF4IOV7o/LOiDIDz42u1SyK0PuOcW6qhXcwNS0TURimhnaH1nQCt7wTn57VH9sCw7YLYvoGjdLdzTHg3qJ17QOnSC0rnnlAiukNRNVPysmAbYZwugRwvcpWqnKtwXqGoUDslQLVe69qF4cuz3IiIfJES2B5aj0HQegxyHqVx4gCM0l2Q40XQi3OAos3OgZYgqJ0SoHTpCbVzLyhdekJpH94qGVmwjXCsXwQ5UwYloB2ULolQU8ZC7Zro/I3IS/f3ExH5I0VVoUQlQY1KAuBcHU8qSp2le/Kg889vCqCfH9+hEwKmPQolKMSjuViwjbAMvQMI6gAlvLtfnmaJiMhXKZoFSqcEoFMCNIwH4Fw5T04edBbumaNAYAeP5/Boc2RlZcFqtSIpKQlz586Fw+Fo0ZhHHnkESUlJSElJwfLlyz0Z9RJqdG+okbEsVyKiNkBpFwI1tj8s6T9AwNj7W2UCqsfaQ9d1ZGZmYtmyZSgsLERVVRUWL17c7DGrVq3Cli1bsG/fPmRlZeGhhx5CZWWlp+ISERG5lccKNjs7G7GxsUhNTQUAZGZmYsWKFc0es2LFCsyZMwcWiwUxMTEYNWoUVq1a5am4REREbuWxgrXZbIiLi3Ndjo+Ph81ma/aY5tweABYsWACr1er6Ki8vd/dTISIiajGPfsB44T7uxpY8bmpMc24/f/585OXlub4iI73nIGMiIvJfHivYuLg4lJSUuC7bbDbExsY2e0xzbk9EROStPFawgwYNQmlpqessA4sWLcKMGTOaPWbGjBl44403oOs6jhw5gg0bNuD666/3VFwiIiK38ljBapqGhQsXYubMmUhKSkJwcDBmzZqFnJwcTJkypckxAHDddddh6NCh6N27N8aOHYsXXngBoaFcMYmIiHwDzwdLRER0hZrqHK6iQERE5AEsWCIiIg9gwRIREXlAm/sMNiwszOsO5ykvL+fxuR7G17h18HX2PL7GnufO19hms+Hs2bOXva7NFaw34sQrz+Nr3Dr4OnseX2PPa63XmLuIiYiIPIAFS0RE5AEs2FYwf/58syO0eXyNWwdfZ8/ja+x5rfUa8zNYIiIiD+AWLBERkQewYImIiDyABetmPXr0QGpqKtLT05Geno68vDysXbsWoaGhrn+bOXOm2TF9WlVVFe655x6kpKSgT58+ePXVVwEAjzzyCJKSkpCSkoLly5ebnNL3Xe515nvZfY4cOeJ6HdPT0xEdHY2bb74ZAN/L7tLYa9xa72OLR+7Vz61cubLBYhfHjx/H0KFD8eWXX5qYqu14+OGH0a9fP7z55psQEZw4cQKrVq3Cli1bsG/fPhw7dgzDhg3DDTfcwDMwXYXLvc55eXl8L7tJ9+7dkZub67o8ceJE3HLLLXwvu1FjrzGAVnkfcwuWfEplZSU++eQTPPzwwwAARVHQtWtXrFixAnPmzIHFYkFMTAxGjRqFVatWmZzWdzX2OpNnHDlyBDk5OZg+fTrfyx5y4WvcWliwHnDjjTciLS0Njz32GBwOBwDg66+/Rnp6OsaMGYOVK1eanNB3HThwAFFRUfjpT3+KgQMH4qabbkJxcTFsNhvi4uJc4+Lj42Gz2UxM6tsae50Bvpc9YcmSJZg+fTqCg4P5XvaQC19joHXexyxYN9uwYQN27NiBDRs2YPfu3XjhhRcwcOBAHDp0CLm5ufjrX/+Ke++9F4cOHTI7qk+y2+3Izc3FTTfdhO3bt+PGG2/E3LlzATi3ss7j0WdXp7HXme9lz3jrrbdw9913uy7zvex+F77GrfU+ZsG62fnPXkNDQ3Hfffdhy5YtCAsLQ1hYGAAgPT0dI0aMaPC5ADVfXFwcOnbsiMmTJwMA7rzzTmzfvh1xcXEoKSlxjbPZbF530gdf0tjrzPey++3evRsnT57EhAkTAIDvZQ+4+DVurfcxC9aNqqurXWdVcDgceP/99zFgwACUlZW5fgu12WzYunUrrFarmVF9VlRUFPr164ecnBwAwBdffIHU1FTMmDEDb7zxBnRdx5EjR7BhwwZcf/31Jqf1XY29znwvu9/ixYtx1113QVWdP475Xna/i1/j1nofcxaxGx07dgwzZsyAYRjQdR0jR47Er3/9a/z73//G3//+dwQEBAAAnn32WSQnJ5uc1nf9/e9/R2ZmJqqrqxEREYF//etf6Nu3L7744gv07t0biqLghRde4KzLq3S51/n999/ne9mNDMPAO++8g08//dT1b9dddx3fy250ude4td7HXCqRiIjIA7iLmIiIyANYsERERB7AgiUiIvIAFiwREZEHsGCJiIg8gAVL5GaDBg363jG5ubn46KOPWiFN05544okmr//tb3/rOpvL7373O3z22WdX9Dhr167FxIkTr+i2F5s2bRqKiorccl9EnsTDdIhM8Prrr2PDhg3417/+1aLb6boOTdPclsNisbjWy77Y2bNnMXLkSOzatavB0n1XYu3atXjqqafccvaSlStX4t1338WiRYuu+r6IPIlbsERuZrFYGvz9qaeeQkZGBgYMGICCggJUVlbid7/7HT744AOkp6fjr3/9KwDg5ZdfxpAhQ5CWloZ58+bBbrcDcJ5j+Mknn8TYsWPx4osvori4GJMnT8aAAQOQlpaG1atXA3CW2KhRo3DNNdfguuuuw+HDhwEAc+bMwQMPPIBhw4YhOTkZL774IgDgoYcegq7rSE9Pv+zW5fLlyzFp0iRXuc6ZMwdvvfWW6+8/+9nPMGbMGPTs2RMLFixw3W7NmjWu5zF48GCcOHECAFBTU4O7774bffv2xZQpU1BbWwsAOH36NG6//XbXbc5vMefn52P48OHIyMhAamoqPvzwQwDOU46tXLnSdXsiryVE5Faaprn+DkDeeecdERF57rnnZN68eSIi8tprr0lmZqZr3OrVq+Wuu+4SXddFROSBBx6Qv/3tbyIikpCQII899phr7IgRI+TNN98UERFd16W8vFxOnTolw4YNk4qKChERWbp0qdx6660iIjJ79mwZPXq01NfXS0VFhSQmJsquXbsuyXqxOXPmyNKlS12XZ8+eLYsXL3b9ferUqeJwOMRms0l4eLjU19fLiRMnpHv37pKXlyciIpWVlVJbWytZWVkSHBwsRUVFIiIydepUeeutt0REZNasWfL555+LiMjp06clMTFRTp06Jf/zP//jep6GYbiem4jIhAkTZMOGDU3/RxCZjEslEnmQoij44Q9/CAAYMmRIo6fF+uyzz7B+/XoMHDgQAFBbW4sOHTq4rr/rrrsAOM/Tmp+fj1mzZgEAVFVFREQEPvnkExQUFGDs2LEAnMvDXbi83u23346AgACEh4fjxhtvxLp169C/f/8msx85cqTJc8DefPPN0DQNMTExiIyMxLFjx5Cbm4thw4ahb9++AICQkBDX+IEDB6JXr14AgMGDB+PgwYMAgP/+97/YtWsXfvWrXwFwnsnnwIEDGDlyJJ544gkcPnwYkydPRkZGhuu+oqOjceTIkSbzE5mNBUvkQaqqutY71TSt0c87RQQPPfQQfv7zn1/2+guLqrHbjx492rUb9fs05zPV9u3bo66urtHrg4KCXH8//9ykiSkdlxsPOH8ZWLt2LSIiIhqMHzRoEIYNG4bPP/8c999/P2699Vb88pe/BODc3dy+ffvvfQ5EZuJnsEQmCAsLQ2Vlpevy5MmT8dprr6G8vBwAUFFR4drCu1BoaCh69+6NxYsXA3CWU0VFBYYPH45t27bhm2++AeA8m9Pu3btdt1u6dCnsdjvOnDmDjz/+GKNHjwYABAcH49y5c5fNmJqaiv3797foeQ0fPhxbtmzB3r17AQBVVVVNlvT5537+c2HAOcNaRFBYWIi4uDjcf//9eOihh7Bt2zbXmPz8fPTr169F2YhaGwuWyAQTJkzAoUOHMGjQILzyyiuYOHEifvzjH2Ps2LEYMGAAJkyYAJvNdtnbvvXWW3jrrbfQv39/DBw4ENu3b0fnzp3xzjvvYN68eUhLS0NaWhrWrVvnus35iU+DBg3CT37yE9fu4QcffBBDhgzBpEmTLnmcH/zgBy2e9du5c2csXrwYs2bNQlpaGiZMmNDgF4nL+etf/4oDBw6gf//+SE1Nxa9//WuICN577z3069cPGRkZePnll/HYY48BcO66tlgs6NGjR4uyEbU2HqZD1MbNmTMHEydOxN13393i244ZMwbvvPMOYmJiPJDsyvzhD39AdHQ0MjMzzY5C1CRuwRJRo15++WUcOnTI7BgNdOnSBXPmzDE7BtH34hYsERGRB3ALloiIyANYsERERB7AgiUiIvIAFiwREZEHsGCJiIg8gAVLRETkAf8frupsCX6cprQAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "posterior_inter.plot(color='C1')\n", "decorate(xlabel='intercept (inches)',\n", " ylabel='PDF',\n", " title='Posterior marginal distribution of intercept')" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:25.023742Z", "iopub.status.busy": "2021-04-16T19:39:25.023322Z", "iopub.status.idle": "2021-04-16T19:39:25.027308Z", "shell.execute_reply": "2021-04-16T19:39:25.027853Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "64.448 [58.725 70.275]\n" ] } ], "source": [ "from utils import summarize\n", " \n", "summarize(posterior_inter) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior mean is about 64 inches, which is the expected amount of snow during the year at the midpoint of the range, 1994.\n", "\n", "And finally, here's the posterior distribution of `slope`:" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:25.063785Z", "iopub.status.busy": "2021-04-16T19:39:25.044731Z", "iopub.status.idle": "2021-04-16T19:39:25.212957Z", "shell.execute_reply": "2021-04-16T19:39:25.213516Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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mDFjhuE6Kd/3yzHVz3p/meJnvb+G9LN+VVtwzVxubq6Ijo4Wzc3NorGxUURGRorTp09fMu7s2bNCo9EIIYSora0VI0eOFDt27BBCCPH444+Lxx9/XAghxHfffTdkOzn1N3t9fb0YPXq0WL9+/SW3lZWVGb7fvn27CAkJMVperVYrwsPDxcmTJ4UQQixevLjHnZx6G7Nt2zYxZcoUodVqRVlZmQgKChrSnW0ul10IIVasWCHuuusuodfru11fXl5uuK60tFQoFAqRl5dn/OCif9mbm5tFQ0ODEEIIjUYjli9fLp5++mkhhHm870II8cgjj4hHHnmk23VSvu9d+trJyRQ/6xfqa0chU/ysX6i37EP9WR/WBSuEEK+++qqIiIgQ4eHh4s033zRc//bbb4unnnpKCCHEF198IeLi4sSoUaNEXFyceO211wzj6uvrxfz584VSqRSjR4827BVoKtmff/55YW9vLxISEgxf+/btE0IIsXTpUsPrmjx5ssjIyDBq3h07dojY2FgREREh7rrrLqHRaER6erqYO3dun2O6PPLIIyIiIkIolUrx2WefGTXrQLPv3btXABDx8fGG9/mNN94QQgjxj3/8Q6hUKsP1XXu5mkr206dPi4SEBDFy5EihUqnEb37zG9Ha2mq4vym/70IIodPphEKhEMePH+92Xynf91WrVonAwEABQAQGBopVq1aZzWf9ctlN+bN+uexD/VnnVIlERERGYPHbYImIiKTAgiUiIjICFiwREZERsGCJiIiMgAVLRERkBCxYol688sorGDlyJBISEhAfH49NmzYBAN5//33D/NPGtmzZMqSnpwMAVq5cecUH7Q9lZlO2YMECnD59WuoYNExY/FSJRFfi0KFD2LRpE9LT02Fvb4+WlpYep600poKCApSWlmLs2LEAgPfee29In38o6HQ6WFtbD9lz3X///fjLX/6CdevWDclz0vDGJViiHpSVlcHNzQ22trYAACcnJyiVykvGdXR04J577kF8fDzi4+O7laBcLsdTTz2FUaNGISkpCVlZWQAAvV6PJ554AuPGjcPIkSPx+OOP95jhww8/7HY+zWnTpmHv3r2G7x977DFMmDABYWFh+PLLLw3jPvvsMyQmJiIhIaHb1Jjnzp3DDTfcgKioKCxbtsxwfXFxMRYsWIDk5GQkJyfjp59+AgDs27cPY8aMQWJi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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "posterior_slope.plot(color='C4')\n", "decorate(xlabel='Slope (inches per year)',\n", " ylabel='PDF',\n", " title='Posterior marginal distribution of slope')" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:25.217691Z", "iopub.status.busy": "2021-04-16T19:39:25.217238Z", "iopub.status.idle": "2021-04-16T19:39:25.219918Z", "shell.execute_reply": "2021-04-16T19:39:25.219480Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.512 [0.1 0.9]\n" ] } ], "source": [ "summarize(posterior_slope)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior mean is about 0.51 inches, which is consistent with the estimate we got from least squared regression. \n", "\n", "The 90% credible interval is from 0.1 to 0.9, which indicates that our uncertainty about this estimate is pretty high. In fact, there is still a small posterior probability (about 2\\%) that the slope is negative. " ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:25.224069Z", "iopub.status.busy": "2021-04-16T19:39:25.223483Z", "iopub.status.idle": "2021-04-16T19:39:25.226209Z", "shell.execute_reply": "2021-04-16T19:39:25.225770Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "array(0.01840519)" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior_slope.make_cdf()(0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, it is more likely that my conjecture was wrong: we are actually getting more snow around here than we used to, increasing at a rate of about a half-inch per year, which is substantial. On average, we get an additional 25 inches of snow per year than we did when I was young.\n", "\n", "This example shows that with slow-moving trends and noisy data, your instincts can be misleading. \n", "\n", "Now, you might suspect that I overestimate the amount of snow when I was young because I enjoyed it, and underestimate it now because I don't. But you would be mistaken.\n", "\n", "During the Blizzard of 1978, we did not have a snowblower and my brother and I had to shovel. My sister got a pass for no good reason. Our driveway was about 60 feet long and three cars wide near the garage. And we had to shovel Mr. Crocker's driveway, too, for which we were not allowed to accept payment. Furthermore, as I recall it was during this excavation that I accidentally hit my brother with a shovel on the head, and it bled a lot because, you know, scalp wounds.\n", "\n", "Anyway, the point is that I don't think I overestimate the amount of snow when I was young because I have fond memories of it. " ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "## Optimization\n", "\n", "The way we computed the likelihood in the previous section was pretty slow. The problem is that we looped through every possible set of parameters in the prior distribution, and there were more than 60,000 of them.\n", "\n", "If we can do more work per iteration, and run the loop fewer times, we expect it to go faster.\n", "\n", "In order to do that, I'll unstack the prior distribution:" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:25.229663Z", "iopub.status.busy": "2021-04-16T19:39:25.228880Z", "iopub.status.idle": "2021-04-16T19:39:25.265229Z", "shell.execute_reply": "2021-04-16T19:39:25.265554Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Sigma20.020.521.021.522.022.523.023.524.024.5...30.531.031.532.032.533.033.534.034.535.0
SlopeIntercept
-0.554.0000.0000150.0000150.0000150.0000150.0000150.0000150.0000150.0000150.0000150.000015...0.0000150.0000150.0000150.0000150.0000150.0000150.0000150.0000150.0000150.000015
54.5250.0000150.0000150.0000150.0000150.0000150.0000150.0000150.0000150.0000150.000015...0.0000150.0000150.0000150.0000150.0000150.0000150.0000150.0000150.0000150.000015
55.0500.0000150.0000150.0000150.0000150.0000150.0000150.0000150.0000150.0000150.000015...0.0000150.0000150.0000150.0000150.0000150.0000150.0000150.0000150.0000150.000015
\n", "

3 rows × 31 columns

\n", "
" ], "text/plain": [ "Sigma 20.0 20.5 21.0 21.5 22.0 22.5 \\\n", "Slope Intercept \n", "-0.5 54.000 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 \n", " 54.525 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 \n", " 55.050 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 \n", "\n", "Sigma 23.0 23.5 24.0 24.5 ... 30.5 \\\n", "Slope Intercept ... \n", "-0.5 54.000 0.000015 0.000015 0.000015 0.000015 ... 0.000015 \n", " 54.525 0.000015 0.000015 0.000015 0.000015 ... 0.000015 \n", " 55.050 0.000015 0.000015 0.000015 0.000015 ... 0.000015 \n", "\n", "Sigma 31.0 31.5 32.0 32.5 33.0 33.5 \\\n", "Slope Intercept \n", "-0.5 54.000 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 \n", " 54.525 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 \n", " 55.050 0.000015 0.000015 0.000015 0.000015 0.000015 0.000015 \n", "\n", "Sigma 34.0 34.5 35.0 \n", "Slope Intercept \n", "-0.5 54.000 0.000015 0.000015 0.000015 \n", " 54.525 0.000015 0.000015 0.000015 \n", " 55.050 0.000015 0.000015 0.000015 \n", "\n", "[3 rows x 31 columns]" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "joint3 = prior.unstack()\n", "joint3.head(3)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "The result is a `DataFrame` with `slope` and `intercept` down the rows and `sigmas` across the columns.\n", "\n", "The following is a version of `likelihood_regression` that takes the joint prior distribution in this form and returns the posterior distribution in the same form." ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:25.270539Z", "iopub.status.busy": "2021-04-16T19:39:25.270009Z", "iopub.status.idle": "2021-04-16T19:39:25.272082Z", "shell.execute_reply": "2021-04-16T19:39:25.271704Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "from utils import normalize\n", "\n", "def update_optimized(prior, data):\n", " \"\"\"Posterior distribution of regression parameters\n", " `slope`, `inter`, and `sigma`.\n", " \n", " prior: Pmf representing the joint prior\n", " data: DataFrame with columns `x` and `y`\n", " \n", " returns: Pmf representing the joint posterior\n", " \"\"\"\n", " xs = data['x']\n", " ys = data['y']\n", " sigmas = prior.columns \n", " likelihood = prior.copy()\n", "\n", " for slope, inter in prior.index:\n", " expected = slope * xs + inter\n", " resid = ys - expected\n", " resid_mesh, sigma_mesh = np.meshgrid(resid, sigmas)\n", " densities = norm.pdf(resid_mesh, 0, sigma_mesh)\n", " likelihood.loc[slope, inter] = densities.prod(axis=1)\n", " \n", " posterior = prior * likelihood\n", " normalize(posterior)\n", " return posterior" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "This version loops through all possible pairs of `slope` and `inter`, so the loop runs about 2000 times." ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:25.276199Z", "iopub.status.busy": "2021-04-16T19:39:25.275543Z", "iopub.status.idle": "2021-04-16T19:39:25.278211Z", "shell.execute_reply": "2021-04-16T19:39:25.278659Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "2091" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(prior_slope) * len(prior_inter)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Each time through the loop, it uses a grid mesh to compute the likelihood of the data for all values of `sigma`. The result is an array with one column for each data point and one row for each value of `sigma`. Taking the product across the columns (`axis=1`) yields the probability of the data for each value of sigma, which we assign as a row in `likelihood`." ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:25.282991Z", "iopub.status.busy": "2021-04-16T19:39:25.282462Z", "iopub.status.idle": "2021-04-16T19:39:27.180270Z", "shell.execute_reply": "2021-04-16T19:39:27.179860Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 1.23 s, sys: 3.86 ms, total: 1.23 s\n", "Wall time: 1.23 s\n" ] } ], "source": [ "%time posterior_opt = update_optimized(joint3, data)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "We get the same result either way." ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:27.185227Z", "iopub.status.busy": "2021-04-16T19:39:27.184354Z", "iopub.status.idle": "2021-04-16T19:39:27.188848Z", "shell.execute_reply": "2021-04-16T19:39:27.189315Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.allclose(posterior, posterior_opt.stack())" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "But this version is about 25 times faster than the previous version. \n", "\n", "This optimization works because many functions in NumPy and SciPy are written in C, so they run fast compared to Python. If you can do more work each time you call these functions, and less time running the loop in Python, your code will often run substantially faster.\n", "\n", "In this version of the posterior distribution, `slope` and `inter` run down the rows and `sigma` runs across the columns. So we can use `marginal` to get the posterior joint distribution of `slope` and `intercept`." ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:27.192910Z", "iopub.status.busy": "2021-04-16T19:39:27.192447Z", "iopub.status.idle": "2021-04-16T19:39:27.200629Z", "shell.execute_reply": "2021-04-16T19:39:27.200147Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
probs
SlopeIntercept
-0.554.0007.633362e-08
54.5251.013295e-07
55.0501.327249e-07
\n", "
" ], "text/plain": [ "Slope Intercept\n", "-0.5 54.000 7.633362e-08\n", " 54.525 1.013295e-07\n", " 55.050 1.327249e-07\n", "dtype: float64" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from utils import marginal\n", "\n", "posterior2 = marginal(posterior_opt, 1)\n", "posterior2.head(3)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "The result is a `Pmf` with two columns in the index.\n", "To plot it, we have to unstack it." ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:27.204066Z", "iopub.status.busy": "2021-04-16T19:39:27.203624Z", "iopub.status.idle": "2021-04-16T19:39:27.226398Z", "shell.execute_reply": "2021-04-16T19:39:27.225993Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Slope-0.50-0.46-0.42-0.38-0.34-0.30-0.26-0.22-0.18-0.14...1.141.181.221.261.301.341.381.421.461.50
Intercept
54.0007.633362e-081.244120e-071.999617e-073.168007e-074.945131e-077.601557e-070.0000010.0000020.0000030.000004...0.0000030.0000020.0000019.123148e-075.975833e-073.853761e-072.448104e-071.532653e-079.460588e-085.760046e-08
54.5251.013295e-071.658787e-072.678095e-074.262364e-076.684267e-071.032304e-060.0000020.0000020.0000030.000005...0.0000040.0000030.0000021.272146e-068.301525e-075.333476e-073.375444e-072.105422e-071.294898e-077.856004e-08
55.0501.327249e-072.182169e-073.538722e-075.657543e-078.912797e-071.382827e-060.0000020.0000030.0000050.000007...0.0000060.0000040.0000031.750579e-061.138148e-067.285261e-074.593750e-072.854925e-071.749592e-071.057750e-07
\n", "

3 rows × 51 columns

\n", "
" ], "text/plain": [ "Slope -0.50 -0.46 -0.42 -0.38 \\\n", "Intercept \n", "54.000 7.633362e-08 1.244120e-07 1.999617e-07 3.168007e-07 \n", "54.525 1.013295e-07 1.658787e-07 2.678095e-07 4.262364e-07 \n", "55.050 1.327249e-07 2.182169e-07 3.538722e-07 5.657543e-07 \n", "\n", "Slope -0.34 -0.30 -0.26 -0.22 -0.18 -0.14 \\\n", "Intercept \n", "54.000 4.945131e-07 7.601557e-07 0.000001 0.000002 0.000003 0.000004 \n", "54.525 6.684267e-07 1.032304e-06 0.000002 0.000002 0.000003 0.000005 \n", "55.050 8.912797e-07 1.382827e-06 0.000002 0.000003 0.000005 0.000007 \n", "\n", "Slope ... 1.14 1.18 1.22 1.26 1.30 \\\n", "Intercept ... \n", "54.000 ... 0.000003 0.000002 0.000001 9.123148e-07 5.975833e-07 \n", "54.525 ... 0.000004 0.000003 0.000002 1.272146e-06 8.301525e-07 \n", "55.050 ... 0.000006 0.000004 0.000003 1.750579e-06 1.138148e-06 \n", "\n", "Slope 1.34 1.38 1.42 1.46 \\\n", "Intercept \n", "54.000 3.853761e-07 2.448104e-07 1.532653e-07 9.460588e-08 \n", "54.525 5.333476e-07 3.375444e-07 2.105422e-07 1.294898e-07 \n", "55.050 7.285261e-07 4.593750e-07 2.854925e-07 1.749592e-07 \n", "\n", "Slope 1.50 \n", "Intercept \n", "54.000 5.760046e-08 \n", "54.525 7.856004e-08 \n", "55.050 1.057750e-07 \n", "\n", "[3 rows x 51 columns]" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "joint_posterior = posterior2.unstack().transpose()\n", "joint_posterior.head(3)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Here's what it looks like." ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:27.240820Z", "iopub.status.busy": "2021-04-16T19:39:27.240115Z", "iopub.status.idle": "2021-04-16T19:39:27.414765Z", "shell.execute_reply": "2021-04-16T19:39:27.414340Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from utils import plot_contour\n", "\n", "plot_contour(joint_posterior)\n", "decorate(title='Posterior joint distribution of slope and intercept')" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "The ovals in the contour plot are aligned with the axes, which indicates that there is no correlation between `slope` and `inter` in the posterior distribution, which is what we expect since we centered the values.\n", "\n", "In this example, the motivating question is about the slope of the line, so we answered it by looking at the posterior distribution of slope.\n", "\n", "In the next example, the motivating question is about prediction, so we'll use the joint posterior distribution to generate predictive distributions." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Marathon World Record\n", "\n", "For many running events, if you plot the world record pace over time, the result is a remarkably straight line. People, [including me](http://allendowney.blogspot.com/2011/04/two-hour-marathon-in-2045.html), have speculated about possible reasons for this phenomenon.\n", "\n", "People have also speculated about when, if ever, the world record time for the marathon will be less than two hours.\n", "(Note: In 2019 Eliud Kipchoge ran the marathon distance in under two hours, which is an astonishing achievement that I fully appreciate, but for several reasons it did not count as a world record).\n", "\n", "So, as a second example of Bayesian regression, we'll consider the world record progression for the marathon (for male runners), estimate the parameters of a linear model, and use the model to predict when a runner will break the two-hour barrier. " ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "The following cell downloads a web page from Wikipedia that includes a table of marathon world records, and uses Pandas to put the data in a `DataFrame`." ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [], "source": [ "url = \"https://github.com/AllenDowney/ThinkBayes2/raw/master/data/Marathon_world_record_progression.html\"" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:27.418039Z", "iopub.status.busy": "2021-04-16T19:39:27.417570Z", "iopub.status.idle": "2021-04-16T19:39:27.824997Z", "shell.execute_reply": "2021-04-16T19:39:27.825376Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "5" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tables = pd.read_html(url)\n", "len(tables)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "The first table is the one we want." ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:27.838976Z", "iopub.status.busy": "2021-04-16T19:39:27.838551Z", "iopub.status.idle": "2021-04-16T19:39:27.842313Z", "shell.execute_reply": "2021-04-16T19:39:27.842643Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TimeNameNationalityDateEvent/PlaceSourceNotes
472:03:23Wilson KipsangKenyaSeptember 29, 2013Berlin MarathonIAAF[83][84] ARRS[82]The ARRS notes Kipsang's extended time as 2:03...
482:02:57Dennis KimettoKenyaSeptember 28, 2014Berlin MarathonIAAF[85][86] ARRS[82]The ARRS notes Kimetto's extended time as 2:02...
492:01:39Eliud KipchogeKenyaSeptember 16, 2018Berlin MarathonIAAF[1]NaN
\n", "
" ], "text/plain": [ " Time Name Nationality Date Event/Place \\\n", "47 2:03:23 Wilson Kipsang Kenya September 29, 2013 Berlin Marathon \n", "48 2:02:57 Dennis Kimetto Kenya September 28, 2014 Berlin Marathon \n", "49 2:01:39 Eliud Kipchoge Kenya September 16, 2018 Berlin Marathon \n", "\n", " Source Notes \n", "47 IAAF[83][84] ARRS[82] The ARRS notes Kipsang's extended time as 2:03... \n", "48 IAAF[85][86] ARRS[82] The ARRS notes Kimetto's extended time as 2:02... \n", "49 IAAF[1] NaN " ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "table = tables[0]\n", "table.tail(3)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "We can use Pandas to parse the dates.\n", "A few of them include notes that cause parsing problems, but the argument `errors='coerce'` tells Pandas to fill invalid dates with `NaT`, which is a version of `NaN` that represents \"not a time\". " ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:27.853767Z", "iopub.status.busy": "2021-04-16T19:39:27.853247Z", "iopub.status.idle": "2021-04-16T19:39:27.855693Z", "shell.execute_reply": "2021-04-16T19:39:27.856161Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "0 1908-07-24\n", "1 1909-01-01\n", "2 1909-02-12\n", "3 1909-05-08\n", "4 NaT\n", "Name: date, dtype: datetime64[ns]" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "table['date'] = pd.to_datetime(table['Date'], errors='coerce')\n", "table['date'].head()" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "We can also use Pandas to parse the record times." ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:27.860393Z", "iopub.status.busy": "2021-04-16T19:39:27.859869Z", "iopub.status.idle": "2021-04-16T19:39:27.861986Z", "shell.execute_reply": "2021-04-16T19:39:27.861604Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "table['time'] = pd.to_timedelta(table['Time'])" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "And convert the times to paces in miles per hour." ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:27.868089Z", "iopub.status.busy": "2021-04-16T19:39:27.867544Z", "iopub.status.idle": "2021-04-16T19:39:27.869998Z", "shell.execute_reply": "2021-04-16T19:39:27.870375Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "0 8.967143\n", "1 9.099504\n", "2 9.419942\n", "3 9.465508\n", "4 9.672854\n", "Name: y, dtype: float64" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "table['y'] = 26.2 / table['time'].dt.total_seconds() * 3600\n", "table['y'].head()" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "The following function plots the results." ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:27.874390Z", "iopub.status.busy": "2021-04-16T19:39:27.873871Z", "iopub.status.idle": "2021-04-16T19:39:27.876092Z", "shell.execute_reply": "2021-04-16T19:39:27.875730Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "def plot_speeds(df):\n", " \"\"\"Plot marathon world record speed as a function of time.\n", " \n", " df: DataFrame with date and mph\n", " \"\"\"\n", " plt.axhline(13.1, color='C5', ls='--')\n", " plt.plot(df['date'], df['y'], 'o', \n", " label='World record speed', \n", " color='C1', alpha=0.5)\n", " \n", " decorate(xlabel='Date',\n", " ylabel='Speed (mph)')" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Here's what the results look like.\n", "The dashed line shows the speed required for a two-hour marathon, 13.1 miles per hour." ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:27.896251Z", "iopub.status.busy": "2021-04-16T19:39:27.894071Z", "iopub.status.idle": "2021-04-16T19:39:28.025535Z", "shell.execute_reply": "2021-04-16T19:39:28.026172Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdgAAAFgCAYAAAAYQGiBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAAuJAAALiQE3ycutAAA1IElEQVR4nO3de3yU5Z3//9c9h4QJIYEgBE0CyCFACCGoQIEQhKKURUs9/bT1gLZU3GVh1+O6la31123ddXtQK4q0Xe2uttVaCwWtUJaToYgtGlFiEDkH0HAIJJBJMpm5vn8MGRNymoTcmWTm/Xw8fOjc9xyuXJJ5c1/3dX0uyxhjEBERkQ7liHQDREREopECVkRExAYKWBERERsoYEVERGyggBUREbGBAlZERMQGrkg3IFxJSUmkp6dHuhkiIiIhJSUllJeXN3mu2wRseno6RUVFkW6GiIhISFZWVrPnNEQsIiJiAwWsiIiIDRSwIiIiNlDAioiI2EABKyIiYgMFrIiIiA0UsCIiIjZQwIqIiNhAASsiImIDBayIiIgNFLAiIiI26Da1iKuqqnjvvfcaHEtISGDkyJEAfPrpp00WXM7JycHlcvH5559z+PDhRucHDx5MSkoKVVVVTdY6TklJYfDgwQB89NFH1NTUNDjvcrnIyckB4ODBgxw/frzRe4wcOZKEhAROnTrF3r17G52/5JJLGDBgAIFAgMLCwkbnExMTyczMBOCTTz7hzJkzjZ6Tm5uLw+Hgs88+48iRI43ODxkyhN69e1NZWUlxcXGj8xdddBEDBw4EYMeOHdTW1jY4HxcXR3Z2NgD79+/n5MmTjd4jKyuLHj16cPLkSfbv39/ofFpaGqmpqdTW1rJjx45G55OSkhg2bBgAxcXFVFZWNnrOZZddBsDRo0c5evRoo/NDhw4lOTmZM2fO8MknnzQ6369fPzIyMgAoLCwkEAg0OB8fH8/o0aMB2Lt3L6dOnWr0HqNHjyY+Pp4TJ05w4MCBRuczMjLo168fPp+PDz/8sNH55ORkhg4dCsDHH3+M1+ttcN6yLMaNGwfA4cOH+fzzzxu9x/Dhw+nVqxcVFRXs3r270fnU1FTS0tIAeP/99zHGNDjv8XgYNWoUAHv27OH06dON3mPMmDG43W6OHTvGoUOHGp0fNGgQffv2pbq6mp07dzY637t3b4YMGQLAzp07qa6ubnDe4XCQm5sLwKFDhzh27Fij98jMzCQxMZHTp0+zZ8+eRucvvvhiLr74YoBG3w+g74j69B0R1NHfES3RFayIiIgNLHP+X227qKysLO2mIyIiXUpL2aQrWBERERvYGrCLFi0iPT0dl+uLW71bt24lNzeX3NxcsrOzefbZZ+1sgoiISETYOkRcUFDA8OHDSUtLC90Qr6ysJC4uDpfLxZkzZxg9ejSbNm0KTRJojoaIRUSkq2kpm2ydRZyXl9foWEJCQui/vV4vfr+/0QxHERGR7i4i92ALCwsZM2YMAwcO5IEHHuDSSy+NRDNERERsE5GAzc3N5cMPP2Tfvn289tpr7Nq1q9Fzli5dSlZWVuifsrKyCLRURESkfSI6i3jAgAFMnTqVVatWNTq3cOFCioqKQv/06dMnAi0UEZFoYfw+jPc0xu/rlM/r9EpOe/bsYeDAgbjdbioqKli7di0/+MEPOrsZIiISI0wggH93AYHi9eDzgtuDY+QMnMPzsBz2XWfaGrALFizgjTfewO/3k56ezpw5c5gwYQI/+clPcLlcGGO44447+MpXvmJnM0REJIb5dxcQKFwJSf2xeqZgfN7gY8A1It+2z1UlJxERiVrG78O3+gcQ58Fye7447vNCjRf3NY9gOd3tfn9VchIRkdhUUwk+b4NwBYKPfd7geZsoYEVEJHrFJYDbE7xircecuxdLXEIzL7xwClgREYlaltONY+QMKC8NhazxeaG8FMfIGRc0PNyabrMfrIiISHs4hwerCgaK12POngzOIs6dGzpuFwWsiIhENcvhwDUiHzNsUvCea1yCrVeudRSwIiLS7Ri/r81haTnd4Em2uWVfUMCKiEi3EamiEe3RtVojIiLSglDRiDgPVu80iPMQKFyJf3dBpJvWiAJWRES6POP3EThzgsDHfw5WZDq3rtVyeyCpf3ACUyfVGA6XhohFRKTLqj8kbLynMUeKsNKyIWUglmUBwZA1Z08G78l24j3W1ugKVkREuoSmdrtpMCScMhDcPQgcKcKcPPjF6zqhaER76ApWREQiqrmJS44hE4PH6g8J9x+GOVJE4PPdWCkZUFsdLBqRO7dTlt60hQJWRERs1dqSmuZ2uzHVZ4N1hHumhJ5rpQzEAZjDH2FOHMDyJHdK0Yj2UMCKiIgtwllSY/y+xlepbg8mqT+BPVuxXHGYesX6LcuCpP4QNxH3VYuxPMld7sq1ju7BioiILcJaUtPCbjeWvxrH0ClN1hF2Zs3EkXhRlw1XUMCKiEgHa9OSmlZ2u3GMnI4jdy7UeDGnDkONt8sOCZ9PQ8QiItIh2rOkpm63m0DhSsy5MA7tdpM7F4c7HkcE6gh3BAWsiIh0iAaTlTzJmGN7CRwpwgFYfQcBTS+pCWe3m86uI9wRFLAiInLBmpysFOaSmkjtdmM33YMVEZEmNVX4oVlNTFayUgbiuCQLq7Yac+JAq/dPLae7S88KbitdwYqISAPt2rGm3mSl7rikxg66ghURkQbas2NN3WSl7rqkxg4KWBERCWmu8EM4O9Y4h+d12yU1dtAQsYiIhMoZGr+vUXlCCG/HmmidrNReClgRkRjQXD3g8++3Gmc85kwZVkIKjrgvJiy1Zcea7rikxg4KWBGRKNbahKXzC+3j82KOe4PF9NOzGxV+iOUr0rZSwIqIRKG6K1b//u0EdrzRaKcaAOewSU3eb7XSRmOO7YXqs80WfpDWKWBFRKJIg3KFNWcxh3dCv6E4XD2AejvVFK/HkZbV5P1WR1wCpmcfXDP/Ccvpivl7qe2lWcQiIlGkwRKbxH7Bg8f3YU4eDD3HcnuCw8VYLRbatzxJMbd2tSMpYEVEokSjJTZON7h7YFzxmOP7MCYQfF69AG1u7apj5AwF6wVSwIqIRIvzyhVaDifWRZdi+aoxvmrw+xoFqNau2kf3YEVELlBzS2A6XVPlClMGYmqrsY7tw5SXYsX3bBCgWrtqHwWsiEg7tatmr42a2luV2iocrnisWffjGnx5swGqtasdTwErItJO568hrb8ExjUiPyJtamlv1UiEfixTwIqINKOlod/mavbWLYExwyZFZKhVQ75dhwJWROQ8YQ391k0oakfN3s6gId/I03iBiMh5wtqurd6EovraUrNXopsCVkSknnC3a2tp/1OtIRVQwIqINHTeWtI6oepHNZWhY1pDKi3RPVgRkfqaWEsKTQ/9akKRtERXsCIi9VhON47MfExZCYFzV6utDf1aTrdq9kojuoIVkZjRWsWlutnD/l2bMN4KKH0bf2I/HP0Ga+hX2kwBKyJRL9yKS3Wzh62k/jgGXUag+iycOoKVmR+xwhHSfWmIWEQuiPH7MN7Todm1XVE4y26amj3siO+JlZKO+WRzl/75pGvSFayItEtXq8PbnLArLnXxwhHS/XSd3wIR6VbCKsbQFYS77EaFI6SDKWBFpM3CLcZgdxtaGpoOnXe6wwpOFY6QjqYhYhFpuw4cTm3rXqqtDU03dd4k9odjn0JyarCNdcGZO7fBZ7a0E41IWylgRaTtWijGYJzxwdD0+1oMzPbew21ti7imznPsU+g3DM6UthicKhwhHUkBKyJhOf9K8/yNvQM1lZjDO8Htofat/2o1MNuzl2prE5YCl17R9NB1ciqcKcU1+yEsv6/V4NRONNIRFLAi0qLmrjQdQycDXwynmrNlAFj9h2LFeVoMzHbvpdra0PSZEy2et/w+LAWndBIFrIi0qLUrTTNsEsZbTu26JyE+MbzAbO893NbqBCf2DbuOsIjdNItYRJoVzmxhy+nGcrqgtiasHWiAdi+JaW2mryMuQTOBpctQwIpI82xaQ3ohS2Ja2yJOW8hJV6EhYhFpXphbtzU16am5pTB12rskprWZvpoJLF2FAlZEmtWW4GxrYF5oELY201czgSXSFLAi0qJwg7O9gakglGilgBWRFrU1OBWYIkG2TnJatGgR6enpuFxf5PjLL7/M2LFjycnJYfz48WzcuNHOJohIB7GcbixPsu5nioTJ1oC9+eab2b59e4Njl156KRs2bGDHjh28+OKL3HLLLQQCATubISIi0ulsHSLOy2s8uWHy5Mmh/87KyqKqqoozZ86QlJRkZ1NEREQ6VUTXwf76179m9OjRClcREYk6EZvk9N5777FkyRLWrl3b5PmlS5eydOnS0OOysrLOapqIiMgFs4wxxu4Pcblc1NbWhh5/8sknzJ49m1//+tdMnDgxrPfIysqiqKjIriaKiIi0WUvZ1OlDxCUlJcyZM4dly5aFHa4iYj/j92G8p4Pb0onIBbN1iHjBggW88cYb+P1+0tPTmTNnDoFAgNLSUh588MHQ81asWMHgwYPtbIqINCPgqyZQvIHAni1QWxP2xuci0rJOGSLuCBoiFulYdfu81r7zEqb0U4hPxJE6HHr1x6oIlkJsbuNzEQnqUkPEItI1+HcX4H//D1D+OST2C26S/tkuqChtsB2diLSPAlYkBoX2eU3oA8YE93N1uCC+J+b4PnDFN72Pq4iETQErEovq9nnt0QucLoz/3Cx/hwv8tZiqihY3PheR1ilgRWLRuX1e8ddgXXQpVvXZYMgGajEAZ0+2uvG5iLRMASsSg+r2eaW8FHr1w7p4BFZtFVQcw0oegHPcda1ufC4iLdN2dSIxqv4+rzhdkD4Wx9BJOEfNwOGOj3DrRLo/BaxIjGrvBukiEh4FrEiM0wbpIvbQPVgREREbKGBFYpRqD4vYS0PEIjGmrkRioHh9sJiEag+L2EK/TSIxxr+7gEDhSojzYPVOgzgPgcKV+HcXRLppIlFFASsSQwI1lQQ+egvTqx+W2wMQ/LdqD4t0OA0Ri8SA0M45O97E7NsGCb2h3xCslIFYloXl9mDOngwu19GMYpEOoYAViQG1n2zG//YvMd7TUH0WfF4ClaewjMF50WDMuXuxqj0s0nE0RCwS5Yzfh3/brzFnjgdDtFc/MAGoPoM5/CGBmkooL1XtYZEOpitYkShg/L5mqzEZbzmcOACeZCzLwniSgifOlkHFcag8hSN3rmoPi3QwBaxIN9FUiIaz5MYE/JjqSvCWB3fKcTiC+8D2SYfKk7iu+mecyQMi94OJRCkFrEgX11KIhpbcJPXH6pmC8XmDjwHXiHwAAoc/AgwEaoNDxAAVx8AVj3XxSByJfSP0k4lEN92DFenimlu3WrtrYzB0k/o3u+TG+H2YTzZDRi7EJwZD1u8DywITwDn+Zt13FbGJrmBFujDj9zUZoiapP4GideD34eiZ0uA1DZbcAPi8OFOHY9zxmGN7obYGXHHgScY5+LLO/pFEYoYCVqQrq6kEnxerqRANHMdyujE+byh8gcZLbtweqK3C0XcQpk86+H2YgB+rthorPrEzfxqRmKIhYpGuLC4B3J5gaNZjfF6suJ44smZCeWnovPF5Gyy5sZxuHCNnhJ5jOZyAwTpzXMtyRGymgBXpws4PSGgYos4RV+LInQs1Xsypw1DjbbTkxjk8r9XniEjH0xCxSBdXF4SB4vXBe6tuTyggLYcD14h8zLBJza6DDec5ItLxFLAiXVxYIep0t1pDOJzniEjHUcCKdBMKSJHuRfdgRUREbBDWFWxNTQ3bt2/nyJEjeDwesrOzGThwoN1tExER6bZaDNh9+/bx7//+76xZs4ZRo0aRmpqK1+tl165duN1uFi9ezJ133ollWZ3VXhERkW6hxYBdvHgxixcv5uc//zkOR8PR5CNHjvDiiy/yy1/+kvnz59vaSJFo0tLONyISPSxjjIl0I8KRlZVFUVFRpJsh0m7h7HwjIt1LS9kU9izirVu3sm/fPmpra0PH7rjjjgtvnUiMCGfnG13dikSPsAL2zjvv5IMPPmDcuHE4nU4ALMtSwIqEqcWi/cXrCQyZSGDvNl3dikSRsAJ269atFBUVhcJVRNqopaL9Z08SKN5AoOjPLV7dikj3EtZfjUeOHElFRYXdbRGJWsbpBstJoG4LubrjPi/GGU9gz5YW93UVke6nxSvYb3/721iWhWVZ5OTkMH36dOLj40Pnly9fbnsDRbozEwjg37WRQNE6/CdLoPwzzIAROPoPg9qqYNH+UTMxn2zESvQ0eG2DfV1VwUmk22kxYPPyvtht47rrrrO9MSLRxAQC1GxYRqBwBTjdwU3Oe6ZgPism4K3A0W8wjty5OIZMpHbfttb3dRWRbqXFgJ03b16Dx15vcLssj8fT1NNFpJ7aXRsxhX+AHklY7h4QqIXqM5jUTCxPMq7ZD+E4F56OkTMIFK7EnBsmDm1JlztXs4lFuqmw7sHu3LmT8ePHk5GRQUZGBhMmTGDnzp12t02k2zJ+H4GideB0B8MVwOGC+J5Yp4+C34dV796q9mwViT5hzSKeN28ejz32GHPmzAFg9erVzJs3j7/97W+2Nk6k26qphIAP3D0w/los57lfNYcLU3UGh9PdYOhXe7aKRJ+wrmB9Pl8oXAGuueYaLdkRaUlcAlZcT+h9CVb1WYw/WKDF+KrA78ORNbPJALWcbixPssJVJAqEFbBz587l5z//OV6vF6/Xy/LlyzXpSaQFltONY+QMLGcc9BuMFaiFyjKsqnIcuV/DOeLKSDdRRGwWVi1it9uN3+9vcKx+Raeamhp7WlePahFLd1O/9rCpOQsON46smbhGXKnqTCJR4oJrEft8Wugu0la6ryoS28Iu9u/z+Th69GiDYv9DhgyxpVEi0cRyulUoQiQGhRWwTz75JN///vfp169faHN1y7I0ZCsiItKMsAL2mWeeYffu3aSkpLT+ZJEYpy3nRATCDNghQ4aQmJhod1tEujVtqC4i9YUVsP/1X//FzJkzmTp1aoNi/9/97ndta5hIdxPOhuoiEjvC+mv1/fffT79+/ejRowdOpzP0j4gENbehuracE4ldYV3Bnjx5knXr1tndFpHuq5UN1bXlnEjsCesKdvLkyWzfvt3utoh0X3EJULcLTj3ack4kdoUVsH/605+YOHEigwYNIjMzk+HDh5OZmWl320S6jbrSiJSXhkI2tOXcyBmaTSwSg8IaIl6/fr3d7RDp9uq2lgsUrw8OC7s92nJOJIaFFbCDBg2yux0i3Z5KI4pIfS0OEU+bNo1f/epXnDlzptG5Dz74gEWLFrF8+XLbGifSHWnLORGBVq5gV6xYwZNPPklOTg4ej4f+/ftTXV3NgQMHyM3NZfHixcyaNauz2ioiItJthLVdHcDBgwc5cuQIHo+HzMxMPB6P3W1rQNvViYhIV9NSNoVdv23gwIF86UtfYuzYsWGH66JFi0hPT8fl+uJCef/+/eTn59OzZ0/mz58f7seLiIh0K7YWSL355psbrZ9NSkriP/7jP/jxj39s50eLiIhElK0Bm5eXR2pqaoNjKSkpTJ48mR49etj50SIiIhEV9obrnW3p0qUsXbo09LisrCyCrREREWmbFgP2qquuCm2w3pS1a9d2eIPqLFy4kIULF4YeZ2Vl2fZZIiIiHa3FgF2yZAkAq1at4uDBg9x2220AvPTSS4wYMcL+1omIiHRTLQbstGnTAHjooYfYtm1b6Pi1117LlVdeaWvDREREurOwJjmVlZVRWloaelxaWspnn33W6usWLFhAeno6fr+f9PR0FixYQGVlJenp6dx333385je/IT09nf/7v/9r/08gIiLSBYU1yem73/0u48aNY+rUqRhj2LJlC0888USrr3v++eebPF5SUtK2VoqIiHQzYVdy+vzzz9m2bRvGGL70pS81Wn5jN1VyEhGRrqZDKjkVFhZy8OBB5s6di2VZfPLJJx3WQBERkWgTVsAuWbKEZ555hp/97GcABAIB7rzzTjvbJSIi0q2FFbCrVq1i5cqVJCQkADBgwIAmt7ATERGRoLAC1uPx4HB88dTq6mrCvHUr0m0Yvw/jPY3x+yLdFBGJAmHNIp45cyZLliyhsrKSP/7xjzz33HPceOONdrdNpFOYQAD/7gICxevB5wW3B8fIGTiH52E5bC3XLSJRLKxvj+9///sMHTqUnJwc/ud//ocbb7yRRx991O62iXQK/+4CAoUrIc6D1TsN4jwEClfi310Q6aaJSDcW1hWsZVncddddXHPNNfTr18/uNkmUMX4f1FRCXAKW0x3p5jRg/L7glWtSfyx3cJ9jy+3BJPUnULweM2xSl2uziHQPYV3Bbt68mSFDhnDFFVcAwSU72ixdWmMCAWp3bca3+gf43vghvtU/oHbXZkwgEOmmfaGmEnzeULjWsdye4HBxTWWEGiYi3V1YAfvAAw+wYcMGUlJSAMjNzeWdd96xtWHS/TU19Op//w/UfrSm60wkiksAtwfj8zY4bM7diyUuIUINE5HuLuwZHIMGDWrw2Ol0dnhjJHrUH3rFGUegxkvg1GeYY3vxr3sS36r/v0tczVpON46RM6C8NBSyxueF8lIcI2doeFhE2i2se7CpqakUFRWF9oZ94YUXGgWuSAM1lZiaSqiqwBzfhzl7CqorIPEicMVhnHHBq1vANSI/ok11Ds8DCN5zPXsyOIs4d27ouIhIe4QVsEuXLuWb3/wmH3/8MX379mX06NG8/PLLdrdNurO4BEzlKczJQxDfC/zV4IyHsyfBk4TVoxe44rrERCLL4cA1Ih8zbFKXnYwlIt1PWAE7cOBA1q1bx9mzZzHGkJiYaHe7JBqEapH4IRAApxvqjQhbbk/wirGmEjzJkWhhA5bT3SXaISLRIayAra2tZfny5WzatAnLspg2bRrz58/H7dbf8qUZNZVYCb2xPL0IHNsLAT9YQK9+gAV+H8YENJFIRKJWWAH77W9/m7Nnz3LbbbcB8NJLL7Ft2zZefPFFO9sm3VlcAlZ8AsR5cPa+hMDnn2JOHgBXPBYGE/BjVRzDkTtXw7EiEpXCCth33nmHjz/+OPT42muvJTs727ZGSfdnOd04RlxJ7du/xHhPgzFQUwXecug3FMtXpYlEIhLVwgrYQYMGUVpaSv/+/QEoLS0lMzPT1oZJ91d3C7Zu9jmeXpj4RBzj/z/c2VfrylVEolpYARsXF0dWVhYzZ84EYN26dUyfPp27774bgOXLl9vXQumWjN+H2bURR3o2OOPA7wtOcvLXwP6/QvbVkW6iiIitwgrYG264gRtuuCH0ePbs2bY1SKJEXQnCnsHqXzjOFSZxdK2ZwyIidgkrYOfNm2d3OyTa1CtBWL/Or0oQikisaLFU4m9/+1v27t0berxgwQKSk5PJzc3lww8/tL1xcuEitYm4ShCKSKxr8Qr2hz/8Idu2bQPgd7/7HX/+859Zt24d77//PosWLWLjxo2d0UZph66wibhKEIpILGsxYB0OBx5PcHhv9erVfOtb32L8+PGMHz+epUuXdkoDpX1CO9kk9cfqmYLxeTu99q9KEIpILGvxUiYQCODz+TDGsHnzZqZPnx465/f7bW+ctE9zm4hTt4l4BIaLLU+ywlVEYkqLV7Dz5s1j8uTJJCcnk5KSwqRJkwDYtWsXffr06ZQGSjucP4P3nK5W+1dEJJq1GLD3338/U6dO5fDhw1x99dWhggGWZfHUU091SgOlHTSDV0Qk4lpdpjNhwoRGx1TFqWurm8EbKFyJOTdMHJrBq9q/IiKdIqx1sNL9aAaviEhkKWCjlGbwiohElgI2yrVnE3Hj9ymURUQukAJWQrpCcQoRkWihb00JCRWniPNg9U6DOA+BwpX4dxdEumkiIt2OAlaArlecQkSku1PASlBdcYp662bhXMj6vMHzIiISNgWsBNUrTlGfilOIiLSPAlYAbS8nItLRNIu4C+vs5TIqTiEi0nEUsF1QpJbLqDiFiEjH0RBxFxTp5TLaXk5E5MIpYLsYLZcREYkOCtiuRstlRESiggK2q9FyGRGRqKCA7WK0XEZEJDpoFnEXpOUyIiLdnwK2C9JyGRGR7k8B24W1Zy9XERHpGnQPVkRExAYKWBERERsoYEVERGyggBUREbGBAlZERMQGClgREREbKGDbwfh9GO9pFd4XEZFmaR1sG0Rqn1YREel+lAptEOl9WkVEpPtQwIZJ+7SKiEhbKGDDpX1aRUSkDWwN2EWLFpGeno7L1fBW70MPPcSwYcPIzMzktddes7MJHUf7tIqISBvYGrA333wz27dvb3Bs7dq1vPPOOxQXF7NhwwbuvfdeKioq7GxGh9A+rSIi0ha2BmxeXh6pqakNjr3++uvceeeduFwu0tLSyMvLY+3atXY2o8M4h+fhyJ0LNV7MqcNQ49U+rSIi0qROX6ZTUlLCDTfcEHo8cOBASkpKOrsZ7dLaPq3G79P+rSIiAkRoHaxlWaH/NsY0+ZylS5eydOnS0OOysjLb29VeWh8rIiLn6/SAzcjI4ODBg6HHJSUlTJw4sdHzFi5cyMKFC0OPs7KyOqV9LWkuSDEBAh+sCi7h6ZmC8XmD62UB14j8CLdaREQiodMvr66//np+9atf4ff7OXLkCAUFBVx99dWd3Yx2aarQhP/9P1D7zq+1PlZERBqwNWAXLFhAeno6fr+f9PR0FixYwFVXXcXEiRMZMWIE06ZN48c//jG9evWysxkdotlCEwl94OQBcMU3eL7Wx4qIxDZbh4iff/75Jo8/8cQTPPHEE3Z+dMerKzTRM6XBYatHLwxgqiqwPMmh41ofKyIS2zQDJ1zNFJrAXwN9B8HZk1ofKyIiIQrYMLVUaMI58Rs4x12n9bEiIhKi7eraoC4wA8XrMWdPBmcRnwtSy+Fodn2siIjEHgVsG7RWaMJyuqHefVgREYldCth2UJCKiEhrYv4erPH7MN7TWq8qIiIdKmavYFXeUERE7BSzSdJUVaZA4Ur8uwsi3TQREYkCMRmwzVZlUnlDERHpIDEZsKGqTOfCtY7KG4qISEeJzYBtpiqTyhuKiEhHicmAbakqk8obiohIR4jZWcQtVWUSERG5UDEbsK1VZRIREbkQMRuwdVSVSURE7BCT92BFRETspoAVERGxgQJWRETEBgpYERERGyhgRUREbKCAFRERsYECVkRExAYKWBERERsoYEVERGyggBUREbGBAlZERMQGClgREREbxHTAGr8P4z2N8fsi3RQREYkyMbmbjgkE8O8uIFC8Hnze4F6wI2fgHJ6H5Yjpv3OIiEgHick08e8uIFC4EuI8WL3TIM5DoHAl/t0FkW6aiIhEiZgLWOP3EShej+nVDywHxgSw3B5I6h88ruFiERHpADE3RGyqzhA4th+qyzH+WnC6sC66FCtlIJw9CTWV2oBdREQuWMwFrP/g+3D6MKZHElaPXhCoxXy2C1NbgyOxL8QlRLqJIiISBWJqiNj4fZhPNsOAEVi+6uAVrMOFccVjPtuFIzMfy+mOdDNFRCQKxNYVbE0l+Lw4+g/HuOLh+H7weYOh2vsSHIPGRbqFIiISJWIrYOMSwO2B2iocfQdh+qSD34cJ+LFqq7HiEyPdQhERiRIxNURsOd04Rs6A8lKMz4vlcAIG68xxHCNnaHhYREQ6TGxdwQLO4XkAwSU5Z08Gi0zkzg0dFxER6QgxF7CWw4FrRD5m2KTgPdm4BF25iohIh4u5gK1jOd1a7yoiIraJqXuwIiIinUUBKyIiYgMFrIiIiA0UsCIiIjZQwIqIiNhAASsiImIDBayIiIgNFLAiIiI2UMCKiIjYQAErIiJiAwWsiIiIDWI2YI3fh/Gexvh9kW6KiIhEoZgr9m8CAfy7CwgUrwefN7hd3cgZOIfnYTli9u8bIiLSwWIuUfy7CwgUroQ4D1bvNIjzEChciX93QaSbJiIiUSSmrmCN3xe8ck3qj+X2AGC5PZik/sEN2IdN0t6wIjHKGBPpJkgXZVlWu14XUwFLTSX4vFg9UxocttwezNmTwfPaI1YkZgQCAY4dO8bp06fx+/2Rbo50UfHx8WRkZOB2t+0CLLYCNi4B3B6Mzxu6ggUw5+7FEpcQwcaJSGc7dOgQlmUxaNAg3G53u69UJHoZYzhx4gSHDh1iyJAhbXptTAWs5XTjGDmDQOFKzLlhYuPzQnkpjty5Gh4WiSHGGCorK8nMzMTpdEa6OdJFWZZF3759OX78OMaYNv0lLGKTnJYtW0Z2djajR4/mnnvu6bThGefwPBy5c6HGizl1GGq8OHLn4hye1ymfLyJdi0OrB6QV7R3ZiMifrJ07d/KjH/2ILVu2sHPnTuLj43nppZc65bMthwPXiHzc1zyCe853cF/zCK4R+VqiIyJh6+h19A899BCPPvpo6PGDDz7IiBEjQo+3b99OdnZ2m97zzjvvbPZ7dfDgwZSUlLSvsTbYv38/w4YNi3QzAHjxxReZP39+h7xXRFKlqKiIiRMnkpwcnFA0a9YsXn311U757LpfDADLk6xhYREJmwkEqN21Gd/qH+B744f4Vv+A2l2bMYHABb3v1KlTefvtt0OPt27dSmJiIqWlpQAUFBQwderUsN+vI0YE7RxVjJUJZREJ2LFjx7JlyxaOHDmC3+/nd7/7HYcOHbL1M+36xRCR2GHXOvq8vDz++te/UltbS1VVFdXV1fzd3/0dBQXB960L2JqaGv7+7/+e7OxssrOz+cUvfhF6D5fLxeOPP86UKVN45ZVXGrz/gQMHyMvLIzs7m3/4h39odknSlVdeySOPPMKVV17JAw88wMmTJ7nllluYMGECY8eO5bXXXgs99+mnn2bMmDGMHTuWG2+8EYDTp09z8803h46vWrUKCF6hDhkyhPvuu4+JEyeyZcsW1q1bx6hRo7jssstYvnx5k+2prKzkuuuuIycnh+zsbB555BEAvve973H77beTn59PZmYmDzzwQOg1O3bsYMaMGVx++eVMmTKFDz/8EACv18s999zDhAkTGDNmDM8880zoNU888QTDhw9n0qRJbNu2Lbz/aWGIyCSnzMxMHn/8cb72ta/hcrm46qqr+OCDDxo8Z+nSpSxdujT0uKys7II+M/SLkdQfq2cKxucNPgZcI/Iv6L1FJPrZuY6+T58+DB48mPfeew+v18v48ePJy8tjzZo1XH/99WzZsoUf//jHLFu2jGPHjrFjxw5OnTrFFVdcwaRJkxg9ejR+v5/+/fuzZcsWANauXRt6/3/6p3/itttu45577mHVqlU899xzzbalpKSEDRs2YFkWd9xxB3fddRezZs2irKyM8ePHM2PGDLZv386LL75IQUEBycnJnDhxAoDHHnuMSy65hFdeeYX9+/czefJkJk2aBMC+ffuYM2cOP/nJT6iurmbo0KG89dZbZGdnNwjI+tasWUNKSgp/+MMfgIY5sG3bNv72t7/Ro0cPrrzySlavXs2sWbO4++67+f3vf09aWhrbtm1j/vz5bNu2jccff5xx48axbNkyqqqqmDJlCjNmzKCmpoZf/vKXbN++PfReWVlZ7fr/eL6I3Xj8+te/zrvvvstf/vIXcnNzG9xvAFi4cCFFRUWhf/r06dPuz2ruF4O6XwzVIxaR1tSto6+3xA/OfZf4vMHzF6BumPjtt99mypQpTJo0ib/85S98+umnxMXFMXDgQDZu3Mhdd92Fw+EgJSWFr371q2zatCn0HrfeemuT771p0yZuv/12AK699toWv0+//vWvhyb1/OlPf+Jf/uVfyM3NZfr06fh8Pvbu3cuaNWu46667Qrf5+vbtC8DGjRtD9y8HDx7MhAkTePfddwFITU3ly1/+MgDFxcVccsklofvKdW07X05ODhs3buTBBx9kzZo1JCUlhc597WtfIykpibi4OG6++WY2bdrErl272LlzJ3PmzCE3N5cFCxZw9OhRAN58802efvppcnNz+dKXvkRZWRm7du1i06ZNzJ07t8F7dZSILdP5/PPPSU1Npby8nP/8z//kJz/5iX0fpgITInKhbF5HP3XqVF599VW8Xi+33XYbSUlJ1NbWsmbNmtD916aGduvC0Ol00qNHj7A+q6WqVYmJiaH/DgQCbNy4kd69ezd4zm9+85uw37euffXfN9yqWUOHDuW9995j7dq1/OIXv+Dpp5/mjTfeaPK5lmVhjGHo0KEUFhY22baXX36Z3NzcBseffPLJsNrSHhG7gr3lllvIyspi4sSJ3H333UyePNm+D6v3i1GfCkyISLjq1tFTXhr6Lgmtox8544InTE6dOpWCggIOHjzI4MGDAZg4cSI//elPQwE7ffp0XnjhBQKBACdPnuSPf/wj+fmt3+KaNm0a//u//wvAqlWrOHXqVFhtmj17doOLn8LCQowxzJ49mxdeeIHTp4MTRuuGiKdPnx66L7x//37effddxo8f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4r//+79jul8g+Ofi1ltvBSAnJ4eMjAz27NkT9f3SUp/87Gc/48SJEwCMGTOG1NRUioqKorJP/H4/t956K1dccQX33nsvEPwzcfDgwdBzSkpKmDhxIn379uXMmTNUVVXRo0cPKisr8fl8JCcnR1XftKVP6tjyndsB95QlTPUnaJw6dcpUVVUZY4ITOMaMGRO6yf7iiy+acePGmVOnTjV4/alTp0xGRoY5evSo8fl8ZsqUKd1yEsL5wu2X+qZNmxaa5BTr/fJv//Zv5kc/+pExxpiDBw+aAQMGmLKysqjsl3D7JCsry6xevdoYE+yT/v37m+PHj0dln3zzm980d911lwkEAqFja9euNfn5+aa2ttYcPnzYZGRkhCb0fOMb3zDLly83xhjz7LPPhiY5RVPftLVP7PrOVcB2grvvvtukpaUZwKSlpZm7777bbNu2zQwbNsyMHDnSTJs2zRQXF4ee73K5zODBg83YsWPN2LFjze233x4695vf/MYMGzbMDBkyxDz88MOR+HE6TFv7pb76AWtMbPdLeXm5ue6668zo0aPN2LFjzYoVK0LnoqVf2tonW7duNePHjzc5OTkmOzvbvPLKK6Fz0dInxhhTUFBgAJOdnR36vnjqqaeMMcY8+OCDZujQoWbYsGHm1VdfDb3m4MGDJi8vzwwfPtxMnTrVlJSUhM5FQ9+0p0/s+s5VqUQREREbaJKTiIiIDRSwIiIiNlDAioiI2EABKyIiYgMFrIiIiA0UsCJRwLIscnNzyc7OZtSoUTzwwAOhak4tWbFiRYOF9CLScRSwIlHA6XRSWFjIRx99xLZt2zh06BDXXXddq69TwIrYR+tgRaKAy+WitrY29Pj06dNccsklbN26lZycHG688Ub2799PVVUVV111FT/96U/ZsGEDN9xwA7169aJPnz48++yzjBs3jnvvvZf33nsPr9fLggUL+Md//McI/mQi3ZdqEYtEoeTkZIYNG8bHH39MTk4Ozz//PH379iUQCHD99dezZs0aZs2axVe/+lVmzpzJbbfdBsB3v/tdxo0bx7Jly6iqqmLKlCnMmDGDrKysCP9EIt2PAlYkitUVLV++fDmvvvoqfr+f0tJS8vLymDVrVqPnv/nmm3i93lAR/fLycnbt2qWAFWkHBaxIFCovL2fPnj1kZWWxadMmfv/737N582Z69erF/fffT1VVVZOvM8bw8ssvk5ub27kNFolCmuQkEmUqKiq45557mDx5MtnZ2ZSXl9O7d2969erFiRMn+P3vfx96blJSUoPZxrNnz+app57C7/cD8Omnn4Y1G1lEGlPAikQBv98fWqYzYcIE0tLSeP311wH4yle+QmJiIqNHj+a2225j2rRpodfdeuutPPvss4wfP56tW7eyZMkSEhMTGTt2LGPGjGH+/PlUV1dH6scS6dY0i1hERMQGuoIVERGxgQJWRETEBgpYERERGyhgRUREbKCAFRERsYECVkRExAYKWBERERsoYEVERGzw/wA55rxf3bNYjwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_speeds(table)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "It's not a perfectly straight line. In the early years of the marathon, the record speed increased quickly; since about 1970, it has been increasing more slowly.\n", "\n", "For our analysis, let's focus on the recent progression, starting in 1970." ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:28.039659Z", "iopub.status.busy": "2021-04-16T19:39:28.039051Z", "iopub.status.idle": "2021-04-16T19:39:28.041586Z", "shell.execute_reply": "2021-04-16T19:39:28.041953Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TimeNameNationalityDateEvent/PlaceSourceNotesdatetimey
322:09:28.8Ron HillUnited KingdomJuly 23, 1970Edinburgh, ScotlandARRS[9]NaN1970-07-230 days 02:09:28.80000012.140871
332:09:12Ian ThompsonUnited KingdomJanuary 31, 1974Christchurch, New ZealandARRS[9]NaN1974-01-310 days 02:09:1212.167183
342:09:05.6Shigeru SoJapanFebruary 5, 1978Beppu-ÅŒita MarathonARRS[9]NaN1978-02-050 days 02:09:05.60000012.177236
352:09:01Gerard NijboerNetherlandsApril 26, 1980Amsterdam MarathonARRS[9]NaN1980-04-260 days 02:09:0112.184472
362:08:18Robert De CastellaAustraliaDecember 6, 1981Fukuoka MarathonIAAF,[53] ARRS[9]NaN1981-12-060 days 02:08:1812.252533
\n", "
" ], "text/plain": [ " Time Name Nationality Date \\\n", "32 2:09:28.8 Ron Hill United Kingdom July 23, 1970 \n", "33 2:09:12 Ian Thompson United Kingdom January 31, 1974 \n", "34 2:09:05.6 Shigeru So Japan February 5, 1978 \n", "35 2:09:01 Gerard Nijboer Netherlands April 26, 1980 \n", "36 2:08:18 Robert De Castella Australia December 6, 1981 \n", "\n", " Event/Place Source Notes date \\\n", "32 Edinburgh, Scotland ARRS[9] NaN 1970-07-23 \n", "33 Christchurch, New Zealand ARRS[9] NaN 1974-01-31 \n", "34 Beppu-ÅŒita Marathon ARRS[9] NaN 1978-02-05 \n", "35 Amsterdam Marathon ARRS[9] NaN 1980-04-26 \n", "36 Fukuoka Marathon IAAF,[53] ARRS[9] NaN 1981-12-06 \n", "\n", " time y \n", "32 0 days 02:09:28.800000 12.140871 \n", "33 0 days 02:09:12 12.167183 \n", "34 0 days 02:09:05.600000 12.177236 \n", "35 0 days 02:09:01 12.184472 \n", "36 0 days 02:08:18 12.252533 " ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "recent = table['date'] > pd.to_datetime('1970')\n", "data = table.loc[recent].copy()\n", "data.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the notebook for this chapter, you can see how I loaded and cleaned the data. The result is a `DataFrame` that contains the following columns (and additional information we won't use):\n", "\n", "* `date`, which is a Pandas `Timestamp` representing the date when the world record was broken, and\n", "\n", "* `speed`, which records the record-breaking pace in mph.\n", "\n", "Here's what the results look like, starting in 1970:" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:28.057142Z", "iopub.status.busy": "2021-04-16T19:39:28.056331Z", "iopub.status.idle": "2021-04-16T19:39:28.210918Z", "shell.execute_reply": "2021-04-16T19:39:28.210485Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdcAAAFgCAYAAADpSzMMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAAuJAAALiQE3ycutAAAvSklEQVR4nO3de3BUZZ7/8U8n3YFGCDcBIQkiBAi5owQWSEBuIkaHEWXRlZuKgsvijAr8KE2hlqtWzdaoOOIgowVTCqOMuiDgCLLcjIOoMBEEuShiCAGj3ALSSTrdz++PlpYYEjrhdDdJv19VlPQ5p09/8xjyyfOcc57HZowxAgAAlokKdwEAADQ2hCsAABYjXAEAsBjhCgCAxQhXAAAsRrgCAGAxe7gLsFpsbKzi4+PDXQYAoJEpKipSaWlpQMc2unCNj4/X7t27w10GAKCRSU5ODvhYhoUBALAY4QoAgMUIVwAALEa4AgBgMcIVAACLEa4AAFiMcAUAwGKEKwAAFiNcAQCwGOEKAIDFCFcAACzW6OYWLisr0/bt26tsa9asmZKSkiRJX3/99QUnXk5PT5fdbtf333+vw4cPV9vfpUsXtWnTRmVlZRecu7hNmzbq0qWLJOnLL79URUVFlf12u13p6emSpMLCQv3444/VzpGUlKRmzZrp5MmTOnDgQLX9nTp10lVXXSWv16uCgoJq+5s3b64ePXpIkvbt26czZ85UOyYzM1NRUVE6evSoiouLq+3v2rWrWrVqpbNnz2rPnj3V9l955ZXq3LmzJGnHjh2qrKyssj8mJkapqamSpIMHD+r48ePVzpGcnKymTZvq+PHjOnjwYLX9cXFx6tChgyorK7Vjx45q+2NjY5WYmChJ2rNnj86ePVvtmGuvvVaSdOTIER05cqTa/m7duqlly5Y6c+aM9u3bV21/u3btlJCQIEkqKCiQ1+utsr9JkyZKSUmRJB04cEAnT56sdo6UlBQ1adJEx44d03fffVdtf0JCgtq1aye3262dO3dW29+yZUt169ZNkvTVV1/J5XJV2W+z2dS7d29J0uHDh/X9999XO0f37t3VokULnT59Wvv376+2v0OHDoqLi5Mk/etf/5Ixpsp+p9OpXr16SZK++eYbnTp1qto50tLS5HA49MMPP+jQoUPV9l999dVq27atysvLtWvXrmr7W7Vqpa5du0qSdu3apfLy8ir7o6KilJmZKUk6dOiQfvjhh2rn6NGjh5o3b65Tp07pm2++qba/Y8eO6tixoyRV+/kg8TPifPyM8LnYz4iLoecKAIDFbObXv6o2cMnJyayKAwCwXF3yhZ4rAAAWI1wBALAY4QoAgMUIVwAALEa4AgBgMcIVAACLEa4AAFiMcAUAwGKEKwAAFiNcAQCwGOEKAIDFCFcAACxGuAIAYDHCFQAAixGuAABYjHAFAMBihCsAABYjXAEAsBjhCgCAxQhXAAAsRrgCAGAxwhUAAIsRrgAAWCyo4TpjxgzFx8fLbrf7t23ZskWZmZnKzMxUamqqXn755RrfP3v2bCUmJqpHjx56++23g1kqAACWsV/8kPobN26c8vLyFBcX59+WkZGhzz//XHa7XWfOnFFKSopuuukmdenSpcp7165dq08++UR79uzR999/r3/7t3/TyJEj1aJFi2CWDADAJQtqzzU7O1sdOnSosq1Zs2b+nqzL5ZLH45Exptp73333XU2ePFl2u11xcXHKzs7W2rVrg1kuAACWCMs114KCAqWlpalz586aOXOmrrnmmmrHFBUVKSEhwf+6c+fOKioqCmWZAADUS1jCNTMzUzt37tS3336rt99+W3v37r3gcTabzf/3C/VuJWn+/PlKTk72/zlx4kRQagYAIFBhvVv4qquuUk5OjlauXFltX0JCggoLC/2vi4qKFB8fX+246dOna/fu3f4/rVu3DmrNAABcTMjD9ZtvvpHb7ZYknT59WmvXrlVqamq148aMGaO//vWv8ng8Ki4uVn5+vm644YZQlwsAQJ0F9W7hqVOnavXq1fJ4PIqPj1dubq769u2r5557Tna7XcYYTZw4UTfeeKMkae7cuerUqZOmTZumESNG6MMPP1TPnj1ls9n0xz/+kTuFAQANgs3UdDGzgUpOTtbu3bvDXQYAoJGpS74wQxMAABYjXAEAsBjhCgCAxQhXAAAsRrgCAGAxwhUAAIsRrgAAWIxwBQDAYoQrAAAWI1wBALAY4QoAgMUIVwAALEa4AgBgMcIVANAoGY9bxnVKxuMO+WcHdT1XAABCzXi98uzPl3fPesntkhxORSUNVXT3bNmiQtOnpOcKAGhUPPvz5S1YIcU4ZWsVJ8U45S1YIc/+/JDVQLgCABoN43H7eqyx7WVzOCXJ99/Y9vLuWR+yIWLCFQDQeFScldwuf7CeY3M4fUPEFWdDUgbhCgBoPGKaSQ6njNtVZbP5+dqrYpqFpAzCFQDQaNiiHYpKGiqVlvgD1rhdUmmJopKGyhbtCEkd3C0MAGhUortnS5LvGutPx313C2eO9m8PBcIVANCo2KKiZO85SCaxv+8aa0yzkPVYzyFcAQCNki3aITlbhuWzueYKAIDFCFcAACxGuAIAYDHCFQAAixGuAABYjHAFAMBihCsAABYjXAEAsBjhCgCAxQhXAAAsRrgCAGAxwhUAAIsRrgAAWIxwBQDAYoQrAAAWI1wBALAY4QoAgMUIVwAALEa4AgBgMcIVAACLEa4AAFiMcAUAwGKEKwAAFiNcAQCwGOEKAIDFCFcAACwW1HCdMWOG4uPjZbfb/duWLFmijIwMpaenKysrSxs3brzge40x+v3vf6+UlBQlJyfrgQcekMfjCWa5AABYIqjhOm7cOG3btq3KtmuuuUYbNmzQjh07tHjxYt1xxx3yer3V3rthwwZ99tln2rFjh3bu3Kkvv/xSH3zwQTDLBQDAEvaLH1J/2dnZ1bYNGDDA//fk5GSVlZXpzJkzio2NrXKczWZTWVmZKioqJEnl5eXq0KFDMMsFAMASYb3munTpUqWkpFQLVkkaMmSIhgwZoo4dO6pjx47KyclRnz59wlAlAAB1E7Zw3b59u/Ly8rR48eIL7v/8889VWFioI0eO6MiRI9q1a5f+/ve/Vztu/vz5Sk5O9v85ceJEkCsHANSF8bhlXKdkPO5wlxIyQR0Wrsm+ffs0duxYvfnmm+revfsFj1m8eLFGjBghp9MpSRozZow2bNigsWPHVjlu+vTpmj59uv91cnJy8AoHAATMeL3y7M+Xd896ye2SHE5FJQ1VdPds2aIa98MqIf/qioqKlJubqwULFqhfv341Hnf11Vdr3bp18nq98ng8+vDDDwlOAGhAPPvz5S1YIcU4ZWsVJ8U45S1YIc/+/HCXFnRBDdepU6cqPj5eHo9H8fHxmjp1qp588kmVlJRo1qxZyszMVGZmpg4ePChJmjt3rhYsWCDJ1yO12+1KTU1Venq6WrZsqalTpwazXACARYzH7euxxraXzeEbgbQ5nFJse3n3rG/0Q8Q2Y4wJdxFWSk5O1u7du8NdBgBENOM6JffqZ3w91l/vO3lYjtxHZXO2DENl9VeXfGncg94AgPCIaSY5nDJuV5XN5udrr4ppFqbCQoNwBQBYzhbtUFTSUKm0xB+wxu2SSksUlTRUtmhHmCsMrrDcLQwAaPyiu/smEvLuWS/z03Hf3cKZo/3bGzPCFQAQFLaoKNl7DpJJ7C9VnJVimjX6Hus5hCsAIKhs0Q6pgd28dKm45goAgMUIVwAALEa4AgBgMcIVAHBJInFi/ovhhiYAQL1E8sT8FxPZXz0AoN4ieWL+iyFcAQB1FukT818M4QoAqLuKs5Lb5Q/Wc2wOp2+IuOJsmAq7PBCuAIC6i/CJ+S+GcAUA1FmkT8x/MQHdLVxRUaFt27apuLhYTqdTqamp6ty5c7BrAwBcxiJ5Yv6LqTVcv/32W/33f/+31qxZo169eqlDhw5yuVzau3evHA6HHnzwQU2ePFk2my1U9QIALGY87npNrB/JE/NfTK3h+uCDD+rBBx/UX/7yF0X96pml4uJiLV68WK+99pqmTJkS1CIBANaz6jnVSJyY/2JsxhgT7iKslJycrN27d4e7DAC47FXu3ex7TvXnx2n810wzR8vec1C4y7vs1CVfAp6hacuWLfr2229VWVnp3zZx4sS6VwcACLuanlM1555TTezPEO8lCChcJ0+erC+++EK9e/dWdHS0JMlmsxGuANBQnXtO9Yo2VTbbHE7fzUkVZxnqvQQBheuWLVu0e/duf7ACABq4855TPX8iCJ5TtUZAV6yTkpJ0+vTpYNcCAAgRnlMNrlp7rvfdd59sNptsNpvS09M1ZMgQNWnSxL9/4cKFQS8QABAcPKcaPLWGa3b2Lw186623Br0YAEDo8Jxq8NQarpMmTary2uXyDR04nc4LHQ4AaIB4TtV6AV1z3bVrl7KyspSQkKCEhAT17dtXu3btCnZtAICfGY9bxnUq4pdyaygCult40qRJevLJJ5WbmytJWrVqlSZNmqTPP/88qMUBQKSzahYlhFZA/2fcbrc/WCXp5ptv5rEcAAgBz/583yxKMU7ZWsVJMU55C1bIsz8/3KWhFgGF6+jRo/WXv/xFLpdLLpdLCxcu5AYnAAiymmZR0rlZlBgivmwFNLeww+GQx+Opsu38mZoqKiqCU109MLcwgMbCuE7JvfoZX4/11/tOHpYj91HZuBEpZCyfW9jt5rcjAAg5ZlFqsAKeuN/tduvIkSNVJu7v2rVrUIoCAPwyi5K3YIXMBVau4ZnUy1dA4frCCy/oqaeeUrt27fwLo9tsNoZfASDImEWpYQooXF966SXt379fbdq0ufjBAADLMItSwxRQuHbt2lXNmzcPdi0AgBowi1LDElC4/s///I+GDx+unJycKhP3z507N2iFAQDQUAUUro888ojatWunpk2bKooZQQAAqFVA4Xr8+HGtW7cu2LUAANAoBNQNHTBggLZt2xbsWgAgojE5f+MRUM/1H//4hxYsWKC4uDg1adJExhjZbDbt27cv2PUBQKPH5PyNT0Dhun79+mDXAQARyz85f2x72a5oI+N2+V5LsvccFObqUB8BhevVV18d7DoAICLVNDm/OTc5f2J/nmttgGodbxg8eLD++te/6syZM9X2ffHFF5oxY4YWLlwYtOIAoNGrOCv9au5g6efVb9wu3340OLX2XJcvX64XXnhB6enpcjqdat++vcrLy/Xdd98pMzNTDz74oEaOHBmqWgGg8WFy/kYpoCXnJKmwsFDFxcVyOp3q0aOHnE7nxd8UBiw5B6Chqdy7+Zdrrr+anJ9rrpcPy5eck6TOnTurc+fO9S4KAHBhTM7f+AQcrgCA4GBy/saHcAWAywST8zceQX06ecaMGYqPj5fd/kuGL1myRBkZGUpPT1dWVpY2btxY4/s/+eQT9e3bVykpKUpJSVFxcXEwywUAwBK19lxHjBjhXxz9QtauXVvryceNG6e8vDzFxcX5t11zzTXasGGD2rRpo127dmnYsGEqLi6utiDA6dOnNXHiRK1YsUK9evXSqVOnFBMTE8jXBABAWNUarnl5eZKklStXqrCwUOPHj5ckvfHGG+rZs+dFT56dXf1i/IABA/x/T05OVllZmc6cOaPY2Ngqxy1ZskS5ubnq1auXJKllS4ZKAAANQ63hOnjwYEnS7NmztXXrVv/2W265Rddff/0lf/jSpUuVkpJSLVglae/evSovL9ewYcN0/Phx5ebm6qmnnqq1Jw0AwOUgoGuuJ06cUElJif91SUmJjh49ekkfvH37duXl5Wnx4sUX3O92u7Vx40YtW7ZM//znP7V161a9/vrr1Y6bP3++kpOT/X9OnDhxSXUBiGysTAMrBHS38Ny5c9W7d2/l5OTIGKOPP/5Yf/jDH+r9ofv27dPYsWP15ptvqnv37hc8pnPnzho1apTatm0rSbr11lu1fft2TZw4scpx06dP1/Tp0/2vk5OT610XgMjFyjSwUkDhOn78eI0YMUJbt26VMUYvvviiOnToUK8PLCoqUm5urhYsWKB+/frVeNyYMWN01113qaysTDExMVq/fj1TLQIIGlamgZUC/nWsoKBAhYWFGj16dMBruU6dOlXx8fHyeDyKj4/X1KlT9eSTT6qkpESzZs1SZmamMjMzdfDgQUm+HvKCBQskSYmJiZo4caKuvfZapaenq3379rrnnnvq91UCQC1qWplG51amYYgYdRTQ3MJ5eXn64osvtG/fPu3du1dHjx7VmDFj9M9//jMUNdYJcwsDqCvjOiX36mdkaxVXfd/Jw3LkPiobkztEvLrkS0A915UrV2rFihVq1sy3OsNVV111wWXoAKBBOm9lmvOxMg3qK6BwdTqdVSZ5KC8vV4CL6QDAZc8W7VBU0lCptMQfsP6VaZKGMs8v6iygcB0+fLjy8vJ09uxZvffee/rtb3+r22+/Pdi1AUDIRHfPVlTmaKnCJXPysFThYmUa1FtA11yNMVq8eLHef/99GWM0atQo3XvvvaGor8645grgUhiPm5VpcEGWr+dqs9l099136+abb1a7du0uqTgAuJyxMg2sENCw8ObNm9W1a1f16dNHku+xnClTpgS1MAAAGqqAwnXmzJn+lWwkKTMzU5988klQCwMAoKEKeBKJq6++usrr6Ohoy4sBAKAxCChcO3TooN27d/tXpFm0aFG1sAUAAD4B3dA0f/583XPPPfrqq6/Utm1bpaSkaMmSJcGuDQCABimgcO3cubPWrVunn376ScYYNW/ePNh1AQDQYAUUrpWVlVq4cKE2bdokm82mwYMHa8qUKXI4eAYMAIBfCyhc77vvPv30008aP368JOmNN97Q1q1ba1zoHACASBZQuH7yySf66quv/K9vueUWpaamBq0oAAAasoDuFr766qtVUlLif11SUqIePXoErSgAABqygHquMTExSk5O1vDhwyVJ69at05AhQ3T//fdLkhYuXBi8CgEAaGACCtfbbrtNt912m//1qFGjglYQAFiNyfgRagGF66RJk4JdBwBYzni98uzPl3fPeunnhc+jkoYqunu2bFEBT1AH1Fmt311vvvmmDhw44H89depUtWzZUpmZmdq5c2fQiwMQuYzHLeM65et11pNnf768BSukGKdsreKkGKe8BSvk2Z9vYaVAdbX2XJ955hlt3bpVkvT3v/9dH374odatW6d//etfmjFj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fkbuVU+rcu9mGa83aJ9J7xG4/ARr7uzs7Gx99tlnqqysVFlZmcrLy3XTTTcpP9933nPhWlFRoQceeECpqalKTU3Vq6++6j+H3W7Xs88+q4EDB+qtt96qcv7vvvtO2dnZSk1N1X/+53/W+OjR9ddfr8cee0zXX3+9Zs6cqePHj+uOO+5Q3759lZGRobffftt/7Isvvqi0tDRlZGTo9ttvlySdOnVK48aN829fuXKlJF/PtGvXrnr44YfVr18/ffzxx1q3bp169eqla6+9VgsXLrxgPWfPntWtt96q9PR0paam6rHHHpMkPfHEE5owYYIGDRqkHj16aObMmf737NixQ0OHDtV1112ngQMHaufOnZIkl8uladOmqW/fvkpLS9NLL73kf88f/vAHde/eXf3799fWrVsD+59WD/RcfyVsz54CuGwE81G51q1bq0uXLtq+fbtcLpeysrKUnZ2tNWvWaMyYMfr444/1xz/+UQsWLNAPP/ygHTt26OTJk+rTp4/69++vlJQUeTwetW/fXh9//LEkVVmS83e/+53Gjx+vadOmaeXKlfrzn/9cYy1FRUXasGGDbDabJk6cqLvvvlsjR47UiRMnlJWVpaFDh2rbtm1avHix8vPz1bJlSx07dkyS9OSTT6pTp0566623dPDgQQ0YMED9+/eXJH377bfKzc3Vc889p/LycnXr1k0ffPCBUlNTq4Tj+dasWaM2bdrof//3fyVVXT5069at+vzzz9W0aVNdf/31WrVqlUaOHKn7779f77zzjuLi4rR161ZNmTJFW7du1bPPPqvevXtrwYIFKisr08CBAzV06FBVVFTotdde07Zt2/znSk5Ortf/x4shXM/DZPQAJAX9UbmcnBx99NFHcrlcGjhwoPr376/HH39cX3/9tWJiYtS5c2dt3LhR9957r6KiotSmTRv95je/0aZNm5SSkiJJuuuuuy547k2bNmnJkiWSpFtuuUWtW7eusY4777zTfwPPP/7xD+3YsUP/7//9P0m+54IPHDigNWvW6O6771bLlr6vt23btpKkjRs36vXXX5fku67bt29fffrpp0pOTlaHDh00bNgwSdKePXvUqVMn/3XkCRMmaPny5dVqSU9P18yZMzVr1iwNHz5cw4cP9+/77W9/q9jYWEnSuHHjtGnTJnXp0kW7du1Sbm6u/7jjx49Lkt5//325XC7/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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_speeds(data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The data points fall approximately on a line, although it's possible that the slope is increasing.\n", "\n", "To prepare the data for regression, I'll subtract away the approximate midpoint of the time interval, 1995." ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:28.214686Z", "iopub.status.busy": "2021-04-16T19:39:28.214200Z", "iopub.status.idle": "2021-04-16T19:39:28.215796Z", "shell.execute_reply": "2021-04-16T19:39:28.216157Z" } }, "outputs": [], "source": [ "offset = pd.to_datetime('1995')\n", "timedelta = table['date'] - offset" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When we subtract two `Timestamp` objects, the result is a \"time delta\", which we can convert to seconds and then to years." ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:28.221866Z", "iopub.status.busy": "2021-04-16T19:39:28.220942Z", "iopub.status.idle": "2021-04-16T19:39:28.223586Z", "shell.execute_reply": "2021-04-16T19:39:28.223108Z" } }, "outputs": [], "source": [ "data['x'] = timedelta.dt.total_seconds() / 3600 / 24 / 365.24" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:28.231701Z", "iopub.status.busy": "2021-04-16T19:39:28.231064Z", "iopub.status.idle": "2021-04-16T19:39:28.234172Z", "shell.execute_reply": "2021-04-16T19:39:28.233719Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "count 18.000000\n", "mean 0.740913\n", "std 15.417918\n", "min -24.444201\n", "25% -12.352152\n", "50% 4.264319\n", "75% 13.492498\n", "max 23.707699\n", "Name: x, dtype: float64" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['x'].describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As in the previous example, I'll use least squares regression to compute point estimates for the parameters, which will help with choosing priors." ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:28.243896Z", "iopub.status.busy": "2021-04-16T19:39:28.243090Z", "iopub.status.idle": "2021-04-16T19:39:28.246900Z", "shell.execute_reply": "2021-04-16T19:39:28.246348Z" } }, "outputs": [ { "data": { "text/plain": [ "Intercept 12.460507\n", "x 0.015464\n", "dtype: float64" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import statsmodels.formula.api as smf\n", "\n", "formula = 'y ~ x'\n", "results = smf.ols(formula, data=data).fit()\n", "results.params" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The estimated intercept is about 12.5 mph, which is the interpolated world record pace for 1995. The estimated slope is about 0.015 mph per year, which is the rate the world record pace is increasing, according to the model.\n", "\n", "Again, we can use the standard deviation of the residuals as a point estimate for `sigma`." ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:28.251555Z", "iopub.status.busy": "2021-04-16T19:39:28.250995Z", "iopub.status.idle": "2021-04-16T19:39:28.253487Z", "shell.execute_reply": "2021-04-16T19:39:28.253872Z" } }, "outputs": [ { "data": { "text/plain": [ "0.041399612201932" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results.resid.std()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "These parameters give us a good idea where we should put the prior distributions." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The Priors\n", "\n", "Here are the prior distributions I chose for `slope`, `intercept`, and `sigma`." ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:28.258022Z", "iopub.status.busy": "2021-04-16T19:39:28.257434Z", "iopub.status.idle": "2021-04-16T19:39:28.259420Z", "shell.execute_reply": "2021-04-16T19:39:28.259062Z" } }, "outputs": [], "source": [ "qs = np.linspace(0.012, 0.018, 51)\n", "prior_slope = make_uniform(qs, 'Slope')" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:28.263808Z", "iopub.status.busy": "2021-04-16T19:39:28.263043Z", "iopub.status.idle": "2021-04-16T19:39:28.265744Z", "shell.execute_reply": "2021-04-16T19:39:28.265217Z" } }, "outputs": [], "source": [ "qs = np.linspace(12.4, 12.5, 41)\n", "prior_inter = make_uniform(qs, 'Intercept')" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:28.270542Z", "iopub.status.busy": "2021-04-16T19:39:28.269999Z", "iopub.status.idle": "2021-04-16T19:39:28.272030Z", "shell.execute_reply": "2021-04-16T19:39:28.272481Z" } }, "outputs": [], "source": [ "qs = np.linspace(0.01, 0.21, 31)\n", "prior_sigma = make_uniform(qs, 'Sigma')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's the joint prior distribution." ] }, { "cell_type": "code", "execution_count": 69, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:28.277187Z", "iopub.status.busy": "2021-04-16T19:39:28.276205Z", "iopub.status.idle": "2021-04-16T19:39:28.287288Z", "shell.execute_reply": "2021-04-16T19:39:28.287636Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
probs
SlopeInterceptSigma
0.01212.40.0100000.000015
0.0166670.000015
0.0233330.000015
\n", "
" ], "text/plain": [ "Slope Intercept Sigma \n", "0.012 12.4 0.010000 0.000015\n", " 0.016667 0.000015\n", " 0.023333 0.000015\n", "dtype: float64" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prior = make_joint3(prior_slope, prior_inter, prior_sigma)\n", "prior.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can compute likelihoods as in the previous example:" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:39:28.292255Z", "iopub.status.busy": "2021-04-16T19:39:28.291742Z", "iopub.status.idle": "2021-04-16T19:40:08.384282Z", "shell.execute_reply": "2021-04-16T19:40:08.384694Z" } }, "outputs": [], "source": [ "xs = data['x']\n", "ys = data['y']\n", "likelihood = prior.copy()\n", "\n", "for slope, inter, sigma in prior.index:\n", " expected = slope * xs + inter\n", " resid = ys - expected\n", " densities = norm.pdf(resid, 0, sigma)\n", " likelihood[slope, inter, sigma] = densities.prod()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can do the update in the usual way." ] }, { "cell_type": "code", "execution_count": 71, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:08.387896Z", "iopub.status.busy": "2021-04-16T19:40:08.387383Z", "iopub.status.idle": "2021-04-16T19:40:08.394693Z", "shell.execute_reply": "2021-04-16T19:40:08.395061Z" }, "tags": [ "hide-output" ] }, "outputs": [ { "data": { "text/plain": [ "654100803618.6724" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior = prior * likelihood\n", "posterior.normalize()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And unpack the marginals:" ] }, { "cell_type": "code", "execution_count": 72, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:08.398478Z", "iopub.status.busy": "2021-04-16T19:40:08.397965Z", "iopub.status.idle": "2021-04-16T19:40:08.406205Z", "shell.execute_reply": "2021-04-16T19:40:08.406577Z" } }, "outputs": [], "source": [ "posterior_slope = posterior.marginal(0)\n", "posterior_inter = posterior.marginal(1)\n", "posterior_sigma = posterior.marginal(2)" ] }, { "cell_type": "code", "execution_count": 73, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:08.429912Z", "iopub.status.busy": "2021-04-16T19:40:08.424037Z", "iopub.status.idle": "2021-04-16T19:40:08.536904Z", "shell.execute_reply": "2021-04-16T19:40:08.536549Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "posterior_sigma.plot();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the posterior distribution of `inter`:" ] }, { "cell_type": "code", "execution_count": 74, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:08.558330Z", "iopub.status.busy": "2021-04-16T19:40:08.557823Z", "iopub.status.idle": "2021-04-16T19:40:08.711888Z", "shell.execute_reply": "2021-04-16T19:40:08.712426Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdgAAAFgCAYAAAAYQGiBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAAuJAAALiQE3ycutAABDQklEQVR4nO3deXhU5d0+8Ps5M0nIngAhe8IStgm7bC6IICqi/b0WUdwQBVq1tK/at9rW2mLV16q1+rYV69IqLlAtLdpq3SFUFEEQgUAgGEiAycZiAtkzc87398eQkUASJmFOTmbm/lwXVzIzZ2buOSRzZ85zznOUiAiIiIjIrzSrAxAREQUjFiwREZEJWLBEREQmYMESERGZgAVLRERkAhYsERGRCViw1CPFxMQgPz/f6hh+5c/X1L9/f7z11ls+Lz9mzBgsW7YMALB8+XKcd955fsnR1uN1NtuZrFu3DhkZGX57vM76/ve/j969eyMlJeW02w4cOICYmBgcO3bMgmTU07FgQ9hFF12EiIgIxMTEIDExEVOnTsWmTZvO+jH/7//+76yz1dbWYuTIkWf9OD1JT3lNN954I9avX3/G5ZYtW4YxY8b47fF8UVJSAqUUqqurvddNmTIFTqfTL4/fWZ999hn+/ve/o7i4GBUVFafdnpWVhdraWsTHx/v0eP76/TDLLbfcgrvuusvqGEGDBRviHnvsMdTW1qK8vBzjxo3DVVddZWket9t9VvcXEei67qc0Pfc5e4qz/f/q6YqLi5GVleVzgZot2Nd30BEKWVOnTpWnnnrKezk/P18AyJEjR6SiokKuueYa6du3r2RmZsp9990nLpdLRESOHj0qV111lSQmJkp8fLyMGzdOSkpK5Mc//rFomibh4eESHR0tM2fOFBGRmpoaWbx4sWRmZkpSUpLMmzdPqqurRUSkuLhYAMiLL74ogwYNkn79+omICAD56quvRETEMAx54oknZODAgZKYmCiXXXaZ7N2715s7OztbHnnkEZk0aZL06tVLtm/f3uZrvffee2X69OkSFRUlkyZNEqfTKUuWLJG+fftKenq6rFq1yrv8Bx98IOecc47ExcVJSkqK3HHHHVJfX9/hc+7YsUMmTZokMTExctFFF8k999wjU6dO9d7n5Ne0ZMkSufLKK2Xx4sUSHx8vmZmZ8vrrr3fq+d988812/2//+Mc/SkZGhvTu3Vvuu+8+GT16tLz00ksiIvLSSy/J6NGjvcv+7ne/k8zMTImJiZHs7Gx54YUXZMuWLRIRESGapkl0dLRER0fL/v37ZcmSJXLFFVfI7bffLomJifLjH//4tMfLzs6Whx9+WMaOHSuxsbFy6aWXSmlpaav/76qqKu/yd955p8yfP19ERJKSkgSA9zlfe+01ycvLk/j4eO/yx48fl+9973uSkpIiKSkpctttt0ltbW2rx3/llVdk0KBBEh8fL/Pnz5fm5uZ219UHH3wgY8aMkbi4OBk7dqx89NFHIiLy+9//vtU6aMl4slNfz/z582XRokUyd+5ciYmJkSFDhkheXp6IiF9/PzZv3izTpk2TxMRE6du3r/zwhz/0Zvryyy/loosuksTERBk0aJA8//zz3tta/v8WLFggsbGxkpOT4/25//3vfy92u13CwsIkOjpaHA5Hu+uMfMOCDWEnF2xdXZ3ceeedkp2dLSIi06dPlxtuuEFqamqkpKREHA6H/O///q+IiPz85z+XK6+8Uurq6sTtdstXX30lR48ePe0xW1xzzTVy/fXXS1VVldTW1sp1110nN910k4h8+wZy1VVXSVVVldTV1YlI6zJ6+eWXJS0tTbZv3y4NDQ3y4x//WIYPH+4t/OzsbBkyZIjs3r1b3G63NDU1tfla09PTJT8/XxoaGmT69OkyYMAAefLJJ8Xlcsnzzz8vffr08b4Rf/LJJ7JlyxZxu92yd+9eGTZsmDz88MPexzv1ORsbG2XgwIHywAMPSFNTk2zYsEH69OnTYcGGhYXJihUrxO12y8svvywxMTFy/Phxn5+/vYJdvXq1xMXFyfr166WpqUnuu+8+sdlsbRZsYWGhREZGyq5du0REpKKiQrZt23baci2WLFnifSyXyyV1dXVtFmz//v1l165dUldXJzfffLNcdNFFrf6/2yvYtm4/tWBvvfVWmTZtmhw5ckQOHz4sU6dOle9973ut7j937lw5duyYlJaWSnp6uve1n6qoqEh69eol//jHP8TlcsnKlSslMjJS9u3b1+46OFlbBRsTEyOrV68Wt9stDz30kPd3SsQ/vx9Op1Pi4uJk6dKl0tDQIHV1dfLJJ5+IiEh5ebn07t1b3njjDXG73ZKfny+pqany8ccft/r/e/bZZ8Xlcsm//vUviYiIkKKiIm/+O++8s93XS53Dgg1hU6dOlV69ekl8fLwkJyfLZZddJtu2bROn0ykApLy83Lvs8uXLZfDgwSIi8qtf/UrOPfdc2bp1a5uPefIbyKFDh0TTNG8Bi4js2bNHwsLCxO12e99AWoqnxcnXzZgxQx599FHvbY2NjRIbGyufffaZiHje0E9902or109/+lPv5aVLl0pKSor3cl1dnQCQr7/+us37P/XUUzJjxgzv5VOf85NPPpH4+Hhv6YuI/OAHP+iwYCdNmuS9zTAMCQ8Pl82bN/v8/O0V7IIFC+SOO+7wXm5ubpa4uLg2C7alYP7+97+3+oR86nItlixZctp1bRXsY4895r1cUVEhAOTgwYNnXbC6rktERIRs2LDBe/tnn30mERERouu69/4tfzCIiCxatKjVJ7yTPfzww95Pki0uueQS7x+TXSnYuXPnem9v+V06cuSIiPjn9+PRRx+VadOmtZnn8ccfl6uuuqrVdffdd58sWLBARDz/f8OHD291+8yZM+Whhx7y5mfB+o+9W7ZDU4/1m9/85rSdGjZu3IhevXq12mty4MCB3h1N7rnnHjQ2NuLaa6/FsWPHMHfuXDz66KOIjIw87fFLSkpgGAYGDhzY6npN01rtNJKVldVuRqfTif79+3svR0REIC0trdWOLx3dv8XJrycqKgrJycmtLgOeHZEAYNOmTfj5z3+O/Px8NDQ0wO12Y+jQoa0e7+TnLCsrQ2pqKux2e6vbd+7c6VMepRQiIyNRU1Pj8/O3p6ysDBdddJH3clhYGFJTU9tcdtCgQXj55Zfx9NNP49Zbb8XkyZPx+OOPd7hzky/rOjs72/t9cnIyIiIiUFpa2mqdd8Xhw4fR1NTU6udh4MCBaGpqwpEjR7zXnbxuo6OjW+00dbJTf7ZaHu9sdqo69bkBoKamBn369Dlt2a78fuzfvx+DBw9u87lLSkrw7rvvIiEhwXudruuYMmWK9/LJ/zctl0tLS314ZdRZ3MmJTpORkYHGxkZUVlZ6rysuLvYeKhETE4PHHnsMhYWF+Pzzz7F69Wo888wzADxvDCfLzMyEpmkoKytDdXW1919jYyPS09O9y516v1PzlJSUeC83NzejrKys1aEbHd2/K66//npMmzYN+/btw/Hjx/HII49ATjnx1MnPmZaWhoqKilY7oRw4cMDU529PWloa9u/f773scrlQXl7e7vLXXnst8vLyUFlZidGjR2PevHkA2l+nvqzrk5//0KFDaGpqQnp6OmJiYgAA9fX13ttPznamx05KSkJ4eHirn4fi4mJERESgb9++Z8x1qlN/tloez6zDgvzx+5GdnY2ioqI2Hz8zMxPf/e53Wz1WTU0N3n33Xe8yJ//fAJ6f05bn8vfvUajj2qTTpKenY9q0afjJT36Curo6HDhwAI888gjmz58PAHjnnXewZ88eGIaBuLg4hIWFeT+5JScnY+/evd7HSklJwVVXXYUf/vCH3k8YFRUVePPNN33Oc9NNN+Hpp59GQUEBmpqacP/99yM9PR0TJ07046tu7fjx40hISEB0dDR27dqFP/3pTx0uP3nyZCQmJuI3v/kNXC4XNm3ahL/97W/d9vwnu/7667F8+XJs3LgRzc3NePDBB1FXV9fmsoWFhfjoo4/Q0NCA8PBwxMTEtPq/LC8vR0NDQ6fzP/fccygsLERDQwN++tOf4sILL0RGRgb69u2LrKwsvPzyyzAMA3l5ea3e/JOSkqBpWqufoZNpmoYbbrgBv/jFL/DNN9/g6NGj+MUvfoF58+Z1qRzmzp2LtWvX4p///Cd0XceqVauwbt06XHfddZ1+LF/44/fjxhtvxBdffIFnn30WTU1NqK+vx7p16wAA8+bNw5o1a/CPf/wDLpcLLpcLW7dubXX43Z49e/DCCy/A7Xbj3//+N9asWYO5c+d68+3bt8+Mlx6SWLDUphUrVqChoQHZ2dk4//zzccUVV+Dee+8FABQVFWHmzJmIjY2Fw+HAueeeizvuuAMAcNddd+Hjjz9GQkICrrzySgCe4ykTEhIwYcIExMXFYcqUKfjyyy99znLzzTfjRz/6Ea688kqkpKRg27ZtePvtt1ttjvW35557Dk888QRiYmJw++23n/ENNywsDG+99RbeeecdJCYm4t5778VNN92EiIiIbnn+k82YMQMPPfQQrr76aqSmpsIwDIwYMaLNZZubm/HLX/4SycnJ6NOnD9asWeOdkGL69OmYPHky0tPTkZCQ0KlP5AsWLMD111+P5ORklJaWYvny5d7bXnzxRbz00kuIj4/Hc8891+q1RUZGYsmSJbj88suRkJCAFStWnPbYv//979G/f384HA7k5uYiJycHTz75pM/ZTpaTk4NVq1ZhyZIlSExMxIMPPog333zztE22/uKP34+MjAx8/PHHWLFiBZKTk9G/f3/8/e9/B+D54/iDDz7Ac889h9TUVCQnJ2Px4sU4fvy49/4zZ87Ehg0b0Lt3b9x555147bXXvJucFy1ahNLSUiQmJmLUqFGmrINQosTX7U5E1Cnf//73YRgG/vznP1sdhQgA8MADD2Dr1q1+nWmL2sdPsER+sm7dOhw8eBCGYWD16tVYsWIFrrnmGqtjEZFFuBcxkZ/s27cP1113HaqqqpCeno5HHnkEl112mdWxiMgi3ERMRERkAm4iJiIiMgELloiIyARBNwYbFxdn6bkjiYgodDidzlaHQZ0s6Ao2IyMDBQUFVscgIqIQ4HA42r2Nm4iJiIhMwIIlIiIyAQuWiIjIBCxYIiIiE7BgiYiITMCCJSIiMgELloiIyAQsWCIiIhOwYImIiEzAgiUiIjIBC5aIeiSp+wbGoSLwjJoUqIJuLmIiCnzScByu95+A1B2F1i8HtjH/D1rKUKtjEXUKP8ESUY8i7ma41/4JUl8F29CLIFWlcH34JFwfPgnjUJHV8Yh8xk+wRNRjiAjcn78K4/A+2CffCNuQCyFj/wt6wccwClbD9f5voaU6YBvzHWhJA62OS9QhFiwR9Rj69n/DKP4CtuEXwzbkQgCACo+Cfcz/gwyfDr3gY+i71sB47zFo6SNgG/0daH37WxuaqB0sWCLqEfSSzdC3vQ0tfSRs58w57XYVEQP72KtgG34x9J0fQt+dB6N0B7TMMbCfPx8qPMqC1ETt4xgsEVnOOFIM92fLoBLSYJ+yEEpr/61J9YqF/ZyrET77EdiGT4dxcCv0HR90Y1oi37BgichSUvcN3HnPQIX1Qtj0H0KFR/p0PxUZB/uEudBShsEoXAtprjc5KVHnsGCJyDLiaoJrzVJIUz3sF90BFdOn049hG3k5xNUIo/A/JiQk6joWLBFZQgwD7nV/gVQ5YT9vPrR+g7r0OCplKLS+A6DvWg1xN/s5JVHXsWCJyBL6V2/CcG6DbdQVsA2c2OXHUUp5PsU21sAo+syPCYnODguWiLqd/vVn0Hd+CC37HNhGf+esH09ljIKKT4W+4wOI7vZDQqKzx4Ilom4ljTVwb1wO1Scb9vNvgVLqrB/T+ym2vgpG8Rd+SEl09liwRNStjH0bAUOHfcK1UPZwvz2u1n88VEwf6DvehxiG3x6XqKtYsETUbUQEetF6qNh+UEld26mpPUqzwZZ7GeR4JYyDW/362ERdwYIlom4j3xyEVJdCG3SuXzYNn0obdC5UZBz0/Pd4mjuyHAuWiLqNUbQegIJt0GRTHl/Zw2FzXAL55gCkfJcpz0HkKxYsEXUL0V0wir+AljocKrq3ac+jDbkQKjwKev67pj0HkS9YsETULQzndkhzHbSc80x9HhXWC9qwaTAqv+b5Y8lSLFgi6hZG0XqosEhomaNNfy7b8OmAPQJ6/vumPxdRe1iwRGQ6qa+GUboT2oAJfj00pz0qIga2wRfAKM2H8c1B05+PqC0sWCIynbFvIwAxffPwyWy5lwCajaeyI8uwYInIVN5jX+NTofr077bnVVGJsA06F0bJZsjxQ932vEQtWLBEZCo5Ugw5XgGbSce+dsSWexkAQN/JT7HU/ViwRGQqo2g9oDRoJh372hEV1w9a//HQ934Oqa/q9uen0MaCJSLTiLsZRslmaGm5UJHxlmSwjZwJGDr0gtWWPD+FLhYsEZnGOLgN4mro1p2bTqUlZkBLHuwZi+X0idSNWLBEZBqj6DOo8GhoGaMszaFljILUV0GqnJbmoNDCgiUiU0jdNzDKd0MbOBHKZrc0S8vkFsbBbZbmoNDCgiUiU+h7N6C7j31tj4pLhopLgeHcbnUUCiEsWCLyOxGBsXc9VGIGtN5ZVscBAGiZoyBH90Pqq62OQiGCBUtEfieH9kJqDsM26Fyro3hpGSc2E/NTLHUTFiwR+Z2x98SxrwMnWR3FSyUNhAqPhnGQBUvdgwVLRH4lriboJZuhZY6C6hVrdRwvpWnQMkbCqNgNcTVZHYdCAAuWiPzKOLAFcDfBNsj6nZtOpTJHA7oLUrHb6igUAliwRORXRtF6qF6xUGm5Vkc5jZbmADQbD9ehbsGCJSK/kZrDMCr3QBs42fJjX9uiwnpBSxkKw7mdszqR6ViwROQ3RsmXAGDJxP6+0jJHQxprIEeKrY5CQc7Ugs3Ly4PD4UBOTg4WLFgAt9vt8zIigrvuugu5ublwOBy44447oOu6mXGJ6CwZZTuhontDJaRbHaVdWrpn2kYerkNmM61gdV3HwoULsXLlShQVFaG2thavvvqqz8vk5eVh06ZN2L59O/Lz87Fjxw68//77ZsUlorMkriYYh/dCS3N0+3lfO0PF9IZKzOQ4LJnOtILdtGkTMjIykJvr2dFh4cKFWLVqlc/LKKXQ2NiI5uZmNDc3o6mpCcnJyWbFJaKzJJWFgKFDpTmsjnJGWuYoSHUZpOaI1VEoiJlWsE6nE5mZmd7LWVlZcDqdPi8zbdo0TJs2DampqUhNTcWUKVMwfvz4055n6dKlcDgc3n9VVTypMpEVjLICAApayjCro5xRy9l9uJmYzGTqGOzJm4na22OvvWU2b96MAwcOoLy8HOXl5di5cydWrlx52v0XL16MgoIC77/ExEQ/vgIi8pVRVgAtaQBURLTVUc5I9cmGioznZmIylWkFm5mZiQMHDngvO51OZGRk+LzMsmXLcMkllyAyMhKRkZGYPXs28vLyzIpLRGdBao9CjldCpfb8zcOA5w97LWMUjMo9kOZ6q+NQkDKtYMePH4/S0lIUFBQAAF588UXMnj3b52Wys7Px8ccfwzAM6LqOjz76CA5HYPzyEoUao2wngBMTOQQILXMUIAaM0p1WR6EgZVrB2mw2vPDCC5gzZw5ycnIQFRWFefPmYfPmzZg1a1aHywCeTb92ux0jRozAqFGjEB8fj9tuu82suER0FoyyAqiwSKi+/a2O4jOVMgywhXMclkyjJMimM3E4HN5PxERkPjF0uN74H6jUYQi76Har43SKK+9PkIpChF37RI+ceYp6vo46hzM5EdFZkSPFEFcDtB449/CZaBmjIK4GyOG9VkehIMSCJaKz4jk8J7DGX1toGSMBKO5NTKZgwRLRWZGyAqi4ZKiYPlZH6TQVGQctaQAn/ydTsGCJqMukqRbGkZKA/PTaQssYBak5DDlWYXUUCjIsWCLqMqN8NwAJ6IJVmaMBAMLNxORnLFgi6jIpKwA0G1TyUKujdJmKT4WK6cPDdcjvWLBE1CUi4pkesV8OVFiE1XG6TCkFLXM0jMP7II01VsehIMKCJaIukWMVkPoqaAEyPWJHtIzRAASGM9/qKBREWLBE1CVS7jk8R6UHfsGqfjlQYZHcTEx+xYIloi4xSndC9YqFSsw888I9nLLZodJHwCgrgOguq+NQkGDBElGnibsZRuUeqDRHq1NOBjItzQG4myCHi62OQkGCBUtEnSaH9wK6KyjGX1u0nCjeqNxjcRIKFixYIuq0QJ4esT0qpjdUTF9IxW6ro1CQYMESUacZZQVQiZlQkXFWR/ErLWWo53Add7PVUSgIsGCJqFOk4RikyhlUn15bqJRhgKHz7DrkFyxYIuqUYNw83EJLGQIAMCoKLU5CwYAFS0SdYpQVALZwqH6DrI7idyoqASouGVLBHZ3o7LFgichnIgIp3wUtZQiULczqOKbQUobCOFIMcTVZHYUCHAuWiHwm3xyENNZAS8u1OoppVMpQQAzIoa+tjkIBjgVLRD6TIB5/baGleM4MZHAzMZ0lFiwR+cwo2wkV3RuIS7Y6imlUr1iohDQYPB6WzhILloh8Iq4mGIf3Qgui6RHbo6UMhRw9AGmutzoKBTAWLBH5RCoLAUOHCuLNwy1UylAAAqnkOCx1HQuWiHxilBYAUN45e4OZljwYgOLxsHRWWLBE5BOjfBe0vv2hIqKtjmI6FREDlZjBHZ3orLBgieiMpOEY5HjFiU2noUFLHQqpckKaaq2OQgGKBUtEZ9TySU4LpYI9MQ5rcByWuogFS0RnJJV7AKVBJQXf9IjtUf1yAChIOcdhqWtYsER0Rkbl157x17AIq6N0GxUeBdUni8fDUpexYImoQ9JwHHKsHCp5sNVRup2WOgxyrBzSWGN1FApALFgi6pBReWL8NTl0xl9btLxmHq5DXcGCJaIOScWJ8dd+OVZH6XaqXw6gNEg5NxNT57FgiahDRuUeaH2yQ2r8tYUKi4DWd4D3UzxRZ7Bgiahd0ljjGX9NGWJ1FMuolCGQ45WQ+mqro1CAYcESUbtaxh615NAt2JapITkOS53FgiWidknl1yE7/tpCJQ0ENBuEBUudxIIlonYZFYXQ+mRBhfWyOopllD0cWtJAHg9LncaCJaI2ecdfQ/DwnFOplGGQ2qOQ2qNWR6EAwoIlojZ5j38N4R2cWrSMQXMcljqDBUtEbZKKr0Nu/uH2qKQBgC2M47DUKSxYImqTUVkI1TsTKjzS6iiWU7YwaP1yYFQUQkSsjkMBggVLRKeRxhpIdVlInZ7uTFTyEEh9FVBz2OooFCBYsER0mpZzoIby8a+navljg+Ow5CsWLBGdRir3AFAhffzrqVSfbMAewYIln7Fgieg0RsUeqD5ZHH89ibLZofXLgVRyHJZ8w4IlolaksRZSXcrNw23QUoZCGo4DxyutjkIBgAVLRK0Yh06Mv/L419Mo7zgsZ3WiMzO1YPPy8uBwOJCTk4MFCxbA7XZ3apkNGzZg4sSJyM3NRW5uLsrKysyMS0TAiWM9Of7aFtXbM22kUcHT19GZmVawuq5j4cKFWLlyJYqKilBbW4tXX33V52Vqampw88034+WXX8bOnTuxfv16JCYmmhWXiE74dvw1yuooPY7SNKh+gyGVezgOS2dkWsFu2rQJGRkZyM3NBQAsXLgQq1at8nmZ5cuX44orrsDw4cMBAPHx8YiM5A4XRGaSJo6/nomWMuTEPM0VVkehHs60gnU6ncjMzPRezsrKgtPp9HmZwsJCNDU14eKLL8bYsWNx//33t/kX49KlS+FwOLz/qqqqTHpFRMFPKosAcPy1Iy3jsFLJw3WoY6aOwSqlvN+3tzmlvWVcLhfWrl2Lv/3tb1i/fj02btx42iZmAFi8eDEKCgq8/7gZmajrjEqOv56JSszkOCz5xLSCzczMxIEDB7yXnU4nMjIyfF4mKysLl19+Ofr06YPIyEh897vfxZYtW8yKS0Q4Mf7aO5Pjrx3gOCz5yrSCHT9+PEpLS1FQUAAAePHFFzF79myfl5k9ezY+/fRTNDY2wjAMrFmzxjtWS0T+J021kKpSbh72AcdhyRemFazNZsMLL7yAOXPmICcnB1FRUZg3bx42b96MWbNmdbgMAOTk5ODmm2/GuHHjMGrUKPTr1w8LFiwwKy5RyJNDewEId3DyAcdhyRdKgmwbh8Ph8H4iJiLfuTf9DfquNQi/7kluIj4DMQy43vgxVJoDYVO/b3UcslBHncOZnIgIwInx18QMlqsPlKZBJXMcljrGgiUiSFMdpMrJ8ddO4DgsnQkLloggh4oACE+w3gkqmeOw1DEWLBGdOMcpj3/tDJWYARUWyeNhqV0sWCL6dvw1ItrqKAGD47B0JixYohAnzfUcf+0ijsNSR1iwRCFOKr8Gj3/tGu84LM8PS21gwRKFOM/JwxUUP8F2mncctpLjsHQ6FixRiDPKC3n+1y7yjsNWcByWTseCJQph0ljjOf8rD8/pMi1liGce52PlVkehHoYFSxTCPIfngAV7Fr4dh+XxsNQaC5YohElFIaA8p1+jruE4LLWHBUsUwoyKQmh9B0CFRVgdJWB5xmGHcByWTsOCJQpRUvcN5HglVOowq6MEPI7DUltYsEQhqmWKPx7/evZaDnHiOCydjAVLFKKkYjeg2aGSBlodJeCpBI7D0ulYsEQhSEQ846/9BkHZw62OE/A4DkttYcEShaLaI5C6b6BSOP7qLxyHpVOxYIlCEI9/9T+Ow9KpWLBEIcgo3w3YI6D6ZFsdJWh4x2FZsHQCC5YoxIgIpGI3tH45UDa71XGChncctvJrjsMSABYsUciRYxWQxhpoPP7V77zjsNVlVkehHoAFSxRiWs5dyh2c/M87DsvDdQhnKNjHH3/c+/2WLVtMD0NE5jMqCqHCo6ASM6yOEnRUYiZUeBTHYQnAGQr29ddf936/aNEi08MQkbk846+FUClDoDRuwPI3pRRUv8EchyUAZyjYk39A+MNCFPik6iCkuR5aMg/PMQvHYalFh7sQ1tXV4fPPP4dhGKivr8fnn3/eqmjPO+880wMSkf9I+YnxV+7gZJpW47CJ6RanISt1WLDp6em47777AABpaWne7wHPppA1a9aYm46I/Mqo2APVKxYqPtXqKEHr5HFY27BpVschC3VYsHl5ed2Vg4hMJrobRuUeaBmjoJSyOk7QUkqdmJe4EGIYHOsOYWc8yryqqgrLly/Hrl27oJRCbm4urr/+eiQkJHRDPCLyF/nmAOBu4vSI3UBLGw73wa2Qb/ZD9R1gdRyySId/WhUVFWH48OF44403EBYWBrvdjtdffx25ubkoLi7uroxE5AfGifFXFqz5tFQHAMAo3WlxErJSh59glyxZgp/85Cf4yU9+0ur6p556Cr/85S/x2muvmRqOiPxHKgqhohKB2CSrowQ9FdcPKjYJUr4LGH2l1XHIIh0W7KZNm7B8+fLTrr/rrrswbBj3QiQKFKK7YBzeC1v/8Rx/7SZaqgP61+sgzfVQ4VFWxyELdLiJODo6us3rlVKIiuIPDFGgkMPFgO6C4ubhbqOl5wJiQCo4bWKo8uk42LYmmaivrzctFBH5l1HB8dfuppKHAEqDUVYALWuM1XHIAh0W7KnHvp56GxEFBqkohIpNgorubXWUkKHCI6ElDYRRxh2dQlWHBbt27dpuikFEZhFXE4wjxbAN4sxr3U2lOWBs/Rfk+CGouH5Wx6Fu1uEYbHFxMWbPno2RI0fixhtvRHl5eXflIiI/kcN7AUPn+KsFtLQTh+uUF1ichKzQYcEuWLAAQ4YMwW9/+1vEx8fj7rvv7q5cROQnHH+1juqdDRUeDaOUBRuKOtxEfOTIETz66KMAgMsuuwxjx47tllBE5D9G+W6ohDSoyDiro4QcpWlQqcMgpTshuhvKdsbJ8yiIdPgJNiwszPu9Ugoa59QkCijSXA85eoCfXi2kpeVC3I2QI5z9LtR0+OfU1q1bER4e7r3sdrsRHh4OEYFSCs3NzaYHJKKuk8qvAQi0FE4MYxUtbTgAeA7XSR5scRrqTh1+JDUMA83Nzd5/LZddLhfLlSgAGOW7ACgovrFbRkX3hopP5eE6IYjbfImClIjAKN0BLWkAVETbs7JR99DSHJCjByBNtVZHoW7EgiUKVscrITWHodJHWp0k5HkO1xEYZbusjkLdiAVLFKSM0nwAgJYxwuIkpJKHAJrNc3YdChksWKIgZTjzoaISoBIzrY4S8pQ9HFq/wTDKdrY5tzsFJ1MLNi8vDw6HAzk5OViwYAHcbnenl6murkZaWhoWLVpkZlSioCLNDTAqv4aWPoKnp+shtDQHpL4acqzC6ijUTUwrWF3XsXDhQqxcuRJFRUWora3Fq6++2ull7r33Xlx88cVmxSQKSkb5LkAMaBmjrI5CJ6gT0yYK9yYOGaYV7KZNm5CRkYHc3FwAwMKFC7Fq1apOLZOXl4empiYWLFEniTMf0GxQPP61x1CJGVC9YmGUcdrEUGFawTqdTmRmfjv2k5WVBafT6fMyDQ0N+NnPfoYnnniiw+dZunQpHA6H919VVZUfXwVR4PEcnpMPLWUoVFiE1XHoBKWU5+w6lXsgbs4jEApMHYM9eeynvYH99pZ54IEHcNtttyEpKanD51i8eDEKCgq8/xITE88yNVFgk6P7IY010Hh4To+jpToA3QU5VGR1FOoGps08nZmZiQMHDngvO51OZGRk+LzM+vXr8cYbb+DBBx9EbW0tmpqaICL4y1/+YlZkoqBgOFsOz2HB9jTfnr5ul/d7Cl6mfYIdP348SktLUVDgGW948cUXMXv2bJ+XWbduHUpKSlBSUoInnngCc+fOZbkS+cAozYeKS4GK7XjrD3U/FRkHlZgJo5Q7OoUC0wrWZrPhhRdewJw5c5CTk4OoqCjMmzcPmzdvxqxZszpchoi6RhqOQY7u56fXHkxLd0CqSyH11VZHIZMpCbKjnh0Oh/cTMVGo0Ys+g3v9Kwi75G5oqdyDuCcyynfD9dFTsJ9/K2yDJlsdh85SR53DmZyIgojhzIcK6wXVL8fqKNQO1W8QYAvn2XVCAAuWKEiI7oaU7YJKc0DZTNt/kc6SsoVBSxkCKd/FaRODHAuWKEjIoSKIu5GH5wQALc0BaayBVB20OgqZiAVLFCS8Z89J59lzejotzTN7nZRyf5FgxoIlChKGMx+qTzZUZJzVUehM4pKhohJhlLNggxkLligIyPFDkOOVnNw/QCiloKU5YBwqgriarI5DJmHBEgUBo3QHAM7eFEhU+gjA0PkpNoixYImCgOHM98wS1DvL6ijkIy0tF7CFwdi/xeooZBIWLFGAE1cTjMpCaOkjeXL1AKLCIqClj4Ac3M6z6wQpFixRgJOK3YChezY5UkDRss+BuBsh5busjkImYMESBTjj4DZAs/HsLAFIyxgJaHbo+7+0OgqZgAVLFMA8J1ffAa3fYKiwXlbHoU5SYb1ObCbeBtFdVschP2PBEgUwqToIaTjGvYcDmJY9DuLiZuJgxIIlCmDek6tz/DVgaRmjAM3GvYmDEAuWKICJMx8qNgkqPsXqKNRFKjwSWloujANbIbrb6jjkRyxYogAljTUwjpRw83AQ8GwmbvDsEU5BgwVLFKCM0p0AhGfPCQJa5mhuJg5CLFiiAGWU5gP2CKjkwVZHobOkwqOgpQ7nZuIgw4IlCkCiuyClO6GlDoeyhVkdh/xAyx4Haa6DVO6xOgr5CQuWKAAZznyIqwFa//FWRyE/0TJHA0qDwUknggYLligAGfs2Qtl7ed6UKSioiBhoqcM8m4kN3eo45AcsWKIAI021MErzoWWPg7KHWx2H/EjLHg9pqoVUfm11FPIDFixRgDFKvgQMHdrASVZHIT/jZuLgwoIlCjDGvo1QUYlQKUOtjkJ+pnrFQEsZCuPAVxDDsDoOnSUWLFEAkeOHYBzeC23gRJ77NUhp2eMgjTWQQ0VWR6GzxIIlCiB68RcAAG0ANw8HKy1rLADFzcRBgAVLFCBEBMa+DVCJmdAS062OQyZRvWKhpQyBcWALRMTqOHQWWLBEAUKOFENqDsM2iJ9eg52WPQ7ScJybiQMcC5YoQBj7NgJQ0PpPsDoKmYybiYMDC5YoAIjuhlG8yTM1YlSC1XHIZCoyHlpyjmdvYm4mDlgsWKIAIGU7Ic11PPY1hGjZ50DqqyGH91odhbqIBUsUAPR9GwFb+IlNhxQKvt1MzFPYBSoWLFEPJ831MA5ug5Y9Fioswuo41E1UVAK0foNg7OfexIGKBUvUwxn7twCGG7aBk62OQt1Myx4Hqa+CHCm2Ogp1AQuWqIcz9m2Aiozj1IghqGVIwCjZbHES6goWLFEPJrVHYVR+DW3ARCjNZnUc6mYquje01OEwitZD3M1Wx6FOYsES9WD6vo0AwL2HQ5ht2DSIq+HEcdAUSFiwRD2UZ2rEjVDxqVCJmVbHIYuo9JFQ0X2g787jzk4BhgVL1EPJNwcgxytgGziZZ84JYUrTYBs6FVJdyhOxBxgWLFEPZezbAEBBGzjR6ihkMW3w+YAtDHrhWqujUCewYIl6IDF0z9SIKUOgontbHYcspiJiYBsw0TN1Yn2V1XHIRyxYoh5IyndBGmu4cxN5acMuAsSAXviJ1VHIRyxYoh5I37sBsIVByxpndRTqIbTeWdCSBsH4eh1Ed1kdh3zAgiXqYcTVCOPgVmiZo6HCI62OQz2INmwapLGG8xMHCBYsUQ9j7NsI6C7YuHmYTqFljYWKjIexO8/qKOQDFixRDyKGDn3nB1BxKVDpI62OQz2MstmhDbkQxpFiGEdKrI5DZ2Bqwebl5cHhcCAnJwcLFiyA2+32eZnly5dj9OjRGDVqFCZMmIC1a9eaGZWoRzBKNkNqj8I24jIe+0ptsg2ZAmg2GDxkp8czrWB1XcfChQuxcuVKFBUVoba2Fq+++qrPywwYMAB5eXnYvn07li1bhuuuuw6GYZgVl8hyIgI9/z3P/LMDeOwrtU1FxkPLGge9eBOkscbqONQB0wp206ZNyMjIQG5uLgBg4cKFWLVqlc/LnHfeeejd23P8n8PhQGNjI2pra82KS2Q5ObgNcqwcttxLoWx2q+NQD2YbNg0w3DC+/tTqKNQB0wrW6XQiM/Pb+VOzsrLgdDo7vQwArFixArm5uYiLizMrLpGlRATu/HehesVCyznf6jjUw6mkgVC9s6AX/gdi6FbHoXaYOgZ78hhSe5NUn2mZLVu24P7778eyZcvavP/SpUvhcDi8/6qqOMsJBR4p3wU5uh+24TOg7OFWx6EeTinlOctOfRWMg9usjkPtMK1gMzMzceDAAe9lp9OJjIyMTi2zZ88eXHPNNXj99dcxePDgNp9n8eLFKCgo8P5LTEz08yshMp++432osEhoQ6daHYUChNZ/PFR4NHd26sFMK9jx48ejtLQUBQUFAIAXX3wRs2fP9nkZp9OJK664As8++ywmTeLxgBS8jEN7YVQUQhs2jRNLkM+UPRzakAtgVBTCqCq1Og61wbSCtdlseOGFFzBnzhzk5OQgKioK8+bNw+bNmzFr1qwOlwGAX//61zh06BDuuecejBkzBmPGjEFJSYlZcYkso+94H7CFwzb8YqujUICxDZkKQPFTbA+lJMjO4OtwOLyfiIl6OqPKCdfbD8E2/GLYJ1xrdRwKQK68P8EoK0D4NY9BhUdZHSfkdNQ5nMmJyEJ6/vuAZoPNMcPqKBSgbMOmAXozjKL1VkehU7BgiSwixw/BKNkM28DJPOcrdZlKGQoVnwq9cC1EP322PLIOC5bIIvrODwAAthGXWZyEAplSCrbcSyE1h2Hs4bliexIWLJEFpL4K+t7PPYdaxCVbHYcCnDboXKg+2dC3/gvSyBnvegoWLJEF9J0fAYYO28iZVkehIKCUgn3CtRBXA/St/7I6Dp3AgiXqZtJYA33POmjpI6ElZpz5DkQ+0PrlQOs/AfqeT2BUnT7lLHU/FixRN9N3rQH0ZthGXm51FAoy9nNmAzY79E0r252elroPC5aoG0lzA4zdedBShkLrN8jqOBRkVHRv2EbMhFGxG+LcbnWckMeCJepGRuF/IK4G2EZw7JXMYcu9FCoqEe7NKyG6y+o4IY0FS9RNpPYo3PnvQus7ACp1uNVxKEgpezhs51ztOWxn1xqr44Q0FixRNxARuD9/FTDcsJ07r9VpGon8Tes/HlrSILi3/xvScMzqOCGLBUvUDYyvP4VRvgu2UVdAS0y3Og4FOaUUbBPnAu5m6F/90+o4IYsFS2Qyqf0G+ua/QyVmwpbLWZuoe2h9smEbdC70ovUwju63Ok5IYsESmUhE4N7wKkRvhv38+VA2u9WRKITYxl0F2MOhf/EGD9uxAAuWyETG3vUwygpgGzkLWu9Mq+NQiFGR8bCPnAXj8F4YJZutjhNyWLBEJpH6KuibVkIlpHNSCbKM5rgYKqYv9C//AXE3Wx0npLBgiUzg2Wt4OcTdBPv5t3DTMFlG2cJgH3+N5w++nR9aHSeksGCJTGDs2wijNB+2ETOh9cmyOg6FOJU5GlrKUOg73ofUHrU6TshgwRL5mdRXQ//idaj4VNhGzbI6DpHnsJ0JcwEx4PrPc9xU3E1YsER+5NlreAXE1Xhi03CY1ZGIAABaYjrsk2+EHN0P9/pXuFdxN2DBEvmRUbwJhnMbbCMuhda3v9VxiFqx5ZwP2/CLYZRsgrHjfavjBD0WLJGfSMPxkzYNX2l1HKI22c65GlqaA+6v/gnj4Dar4wQ1FiyRH4gI3BtXQJrrYT/vZih7uNWRiNqkNBvsF34PKq4fXOv+AqO6zOpIQYsFS+QH+tZ/wjjwFWy5l0BLGmh1HKIOqfAohE37AZTS4F6zFNJUa3WkoMSCJTpL7u3vQs9/D1rWWNjGXmV1HCKfqPgU2C9c5DmN4n+eh+huqyMFHRYs0VnQCz6GvvWf0NJyYZ+yCEqzWR2JyGda+gjYx18No6IQ+uaVVscJOpxehqiL9D2fwL15JbSUobBfdDtna6KApA2fAVtVKfTCtVCJ6bANudDqSEGDn2CJukDfuwHuDSugJQ2Cfdpi7tREAUspBdukG6D1HQD3xr/CqNhjdaSgwYIl6iR9/5dwf7YMqk8W7Bf/ECoswupIRGdF2cM9W2Ei4+D+z3OcTtFPWLBEnWA4t8P9yZ+hElIRNuO/ocKjrI5E5BcqKgH2i+6AuJvg+vB3MKpKrY4U8FiwRD4yygrgWvscVGwSwi65CyoixupIRH6l9e2PsGk/AJrq4XrvMU5EcZZYsEQ+MCqL4Mr7E1RkvKdcI+OtjkRkCi3NgbBZP4OKSoAr70/Q89/jvMVdxIIlOgOjfDfcq/8IFRGFsEvvhorubXUkIlOp+BSEXf5TaKnD4f7qLbjX/YVn4OkCFixRO0R3wb3573B99H9AWATCLrkbKjbJ6lhE3UJFRMN+8Q+9JwdwffAEpL7K6lgBhQfuEbXBqHLCve5FSHUptKyxsJ97E8dcKeQozQb7hGuhEtLh3rgcrn//BvZpd0DrO8DqaAGBBUt0EjEMGAUfwb31n1C2MNjPvxXawElQSlkdjcgytsHnQ8Unw732WbjefwL2c+fBNmiy1bF6PBYs0QlSexTuz16CUfk1tOQhsJ9/K1QMx1uJAEDrl4OwWffBlfcM3J+9BKlywjbm/3GSlQ6wYCnkiQiMvZ9D/+INiOGCffwcaMNn8FMr0SlUTG+EzbwH7vUvQy/4CEbJZtjGfAfawHOhNO7ScyoWLIU0aayFe8NrMA58BZWYgbALFkBLTLc6FlGPpcIiYL/wezAOToC+5U24178CtfMj2Md9FypjFP8wPQkLlkKS1H0DfdcaGF+vg7iaYBtxGWyjvwNlC7M6GlGPp5SCLWsstIxRMIrWQ9/2Nlx5z0DrlwPbuO9C65djdcQegQVLIcX45gD0nZ5NWxADWqoD9tFX8A2BqAuUZoNtyBRoAyfB2LUa+o734Xr/t9Ayx8A29ipoCalWR7QUC5aCnohASnd4xowqCgHNBtvASdAcM6AlZlgdjyjgKXs4bCMvhzZkCvT896DvzoNxcBtsOedBc1wSskXLgqWgJe5mGMVfQC/4GHKsHCo8CrYRM2EbNg0qKsHqeERBR0XEwD7+GtiGTYe+9V/Qi9ZDL/oMKiEdtgEToPUfH1KTtSgJskkmHQ4HCgoKrI5BFpHmehhlBZDSnTBK8yGNNVAxfWBzXAJt0Hk8tRxRN5LjldCLN8Eo3gQ5XgEA0PoOgNZ/vKdsg+AP3Y46hwVLAU1EIFUHYTh3QMp2wji8DxAD0GzQkodCGzIFWuYYHkJAZCERgVSXwij+AkbxZkjdUQAKWvJgaAMmeH5HI+OsjtklLFgKGiICNByDcajI8ym1bCek4RgAQMX0gZY2AlrGCKjkofy0StQDiQjkSDGMkk0wSr5s9fur+g6EljQAqu8AqN6ZAbFXf0edwzFY6rHE3QypLoNUlUKqnZ6v3zghzXWeBTQbtOQhsOVeCi19BBCXzGPwiHo4pRRU0kBoSQMh51wDqdwDo2I35HAxxJkPd8kmz4KaDVrvTE/Z9h0IrW9/IKYPlGazNH9nmFqweXl5WLx4MZqbm3HhhRfi+eefh91u93mZe++9F6tWrYKmaXjkkUcwZ84cM+NSNxMRwNUAqasC6qsgdVWQ+irIsXJPmR4/BKBlA4uCiusHlToUWkI6tD5Z/JRKFOCUpkGlDoOWOgyAZy5wOV7hKdsjxTAO74Oxey2AvJY7eD7pxiRBxfaFiukLxLZ8nwQVHmnZa2mLaZuIdV3H4MGD8fbbbyM3NxfXXnstLr/8ctx6660+LfPhhx/i4Ycfxpo1a1BZWYnJkyejoKAAsbGxHT4vNxFbR0QA3QU010Ga6oCmek+BNtV9e1199bdFWl8NuJtOexwVHg3VOwMqMR0qoeVrGuc8JQpB4mqCHN0POVoCqTkCqT3s+Vp3FDD0Vsuq8GggKgGqVyzQKxaqVwwQEXPS5dgT38cA4dF+2eJlySbiTZs2ISMjA7m5uQCAhQsX4umnn25VsB0ts2rVKtxyyy2w2+1IT0/HBRdcgA8//BBXX321WZF7HO/fPmIAJ3/vuREQ/cT1cuKy0fqroQNiQE58hRje62AYnvvrbsDQIYbb+z0Ml+er7oboLk9p6s2Aq8lz2dXkuexu9pyE2d3kKdLm+tN+4E9jj4CKSoSK7g0taRAQnQgVlQAVlej93l8/+EQU+FRYBFTKECBlSKvrxTA8W75qDkNqj3i+1hwGGo97/nj/5iCM5np8uxWstfAb/giY/Ee7aQXrdDqRmZnpvZyVlQWn0+nzMk6ns1WZtnV/M7k+fBJSXfZtsQGtv//2Sh9uA6TVcqfe56TLp17Xk9jCoGzhQFgEcOKrCosAImOBsF7QwqOBiCiosCggIgqIiIYKj/IUZrjnMsJ6sTyJ6KwpTfOMycb0aXcZMQzP1rPGGqCxxvO1qRbSVNctW8RMHYM9+Y20vS3RHS3jy/2XLl2KpUuXei9XVVV1Ketpufr2B3rFtQRpY4HTr1NQHdyuWl+nlOe6Uy97v7Z13UlflQKU5vkHeMYmlNb6Ns124nsboGknvtq8tyvNBmh2z3U2u+d7mx1Ka/n+xO22cMAezmIkooCiNM27adgKphVsZmYmDhw44L3sdDqRkZHh8zJt3TZp0qTTnmfx4sVYvHix97LD4fBLfvu42X55HCIiCk2mHX0/fvx4lJaWegd/X3zxRcyePdvnZWbPno2XX34Zuq6jrKwMn376KS699FKz4hIREfmVaQVrs9nwwgsvYM6cOcjJyUFUVBTmzZuHzZs3Y9asWR0uAwCXXHIJJk2ahKFDh2Lq1Kn43e9+d8Y9iImIiHoKzuRERETURR11DidoJSIiMgELloiIyAQsWCIiIhOwYImIiEzAgiUiIjIBC5aIiMgELFgiIiITsGCJiIhMEHQTTcTFxZ0253FXVVVVITEx0S+PFey4rnzHdeU7rivfcV35zp/ryul04vjx423eFnQF60+cFcp3XFe+47ryHdeV77iufNdd64qbiImIiEzAgiUiIjIBC7YDJ59nljrGdeU7rivfcV35juvKd921rjgGS0REZAJ+giUiIjIBC5aIiMgEIVGwP/rRj5CRkQG73e69bvny5Rg9ejRGjRqFCRMmYO3atR0+RnV1NdLS0rBo0SLvdQcPHsSUKVMwZMgQTJ06FWVlZWa9hG5j1rqaN28ehg4ditGjR+Oaa65BdXW1Sa+g+5i1rlq88cYbUErh008/9Xf0bmfmunrkkUcwdOhQ5ObmYsGCBWbE71Zmrat9+/bhwgsvxNixYzFq1Ci89dZbJr2C7nM262rt2rWIjY3FmDFjMGbMGMyZM8d7m9/e2yUErFu3TioqKsRms3mv++yzz+To0aMiIrJjxw5JTk4WXdfbfYzvfe97ctNNN8nChQu9111//fXy3HPPiYjI0qVL5eabbzbpFXQfs9bVO++8473Pz372M7n77rtNegXdx6x1JSJy9OhROf/882XSpEmybt06c15ANzJrXS1fvlz+67/+S5qamkREpLy83KRX0H3MWlfz5s2TZ555RkREdu/eLX379jXpFXSfs1lXeXl5cvHFF7f5uP56bw+JT7AXXHABkpOTW1133nnnoXfv3gA8Bx03Njaitra2zfvn5eWhqakJF198sfc6EcG7776Lm2++GQAwf/58/Otf/zLpFXQfM9YVAFxxxRXQNM+P2/jx47F//34T0ncvs9YVAPzP//wPfv3rX6NXr17+D24Bs9bVH/7wB/z6179GeHg4ACAlJcWE9N3LrHWllPLOOHT8+HGkpqaakL57ne26aos/39tDomDPZMWKFcjNzUVcXNxptzU0NOBnP/sZnnjiiVbXHz16FNHR0d43wOjoaISHh+PYsWPdktkqXVlXJxMRPP/885g5c6aZMXuErq6rjz76CIZhtFm8waqr66qwsBDvvfceJk6ciPPPPx9r1qzpjriW6uq6+s1vfoPly5cjMzMTl156KZ599tnuiGupjtYVAHz55ZcYM2YMLrzwQnzwwQcA/Pvebj/zIsFty5YtuP/++/Hhhx+2efsDDzyA2267DUlJSafdppRqdVmC/Iins1lXLX7xi18gKiqqzTHHYNLVdVVfX4+f//zneO+997ojZo9wNj9Xbrcb1dXV+OKLL7B9+3Zcdtll2LNnD2JjY82ObYmzWVdPP/007rrrLixYsAD5+fm46qqrsG3bNsTExJgd2xJnWlfjxo3D/v37ERcXh61bt2LWrFn4/PPPER0d7b/39i5tWA5QJ2+nFxEpLCyUgQMHyoYNG9q9zwUXXCDZ2dmSnZ0tffr0kZiYGFmwYIEYhiHx8fHS0NAgIiJ1dXWSkJBgav7u5M911eKpp56SKVOmSH19vWm5reDPdbV9+3ZJSkry3hYRESEpKSny7rvvmv0yuoW/f66GDx8u27dv9y47YcIE+eqrr0zJ3t38va5iYmK8Y9UiIueee65s3LjRnPDdrCvr6lRXX321vPXWW359bw/Zgj148KDk5OTIhx9+6PP9X3rppVY7Ddxwww3y/PPPi4jIM888ExQ7ObXw97patmyZjB07Vqqrq/2asyfw97o62dSpU4NiJ6cW/l5Xv/zlL+WJJ54QEZEDBw5ISkqKVFVV+S2vlfy9rhwOh7zzzjsi4llX/fr1kyNHjvgvsIW6sq7KysrEMAzvfTIyMmTPnj0i4r/39pDYRHzbbbfh3//+N3RdR0ZGBq644goYhoFDhw7hnnvu8S731ltvoX///vjVr36FtLQ03H777R0+7qOPPoobbrgBv/3tb5GSkoK//vWvZr8U05m1rhYtWoSMjAxMnToVADBq1Ci88sorpr4Ws5m1roKRWevqnnvuwfz58/HSSy/Bbrfj2WefRUJCgsmvxlxmrau//OUv+O///m/cd999MAwDf/zjH9GnTx+zX46pzmZd/eMf/8Cf/vQnhIWFAQAee+wxDB48GID/3ts5VSIREZEJuBcxERGRCViwREREJmDBEhERmYAFS0REZAIWLBERkQlYsEQBZPz48WdcZuvWrT1iXuwHH3zQ6ghEluJhOkRBZtmyZfj000/x5z//uVP303UdNpvNbznsdjvcbrffHo8o0PATLFEAOfm8l3a7HQ8//LD3/J579uxBTU0NfvWrX+HNN9/EmDFj8Ic//AEA8Mc//hETJ07E6NGjsWjRIrhcLgBA//798dBDD2Hq1Kl48sknUVJSgssvvxyjRo3C6NGjsXr1agCec2decMEFOOecc3DJJZfg4MGDAIBbbrkFd9xxByZPnozBgwfjySefBADcfffd0HUdY8aMwYwZM7pzFRH1HF2a/4mILHHylHAA5K9//auIiDz++OOyaNEiETl9irzVq1fLjTfe6D0n5h133OE9L2h2drbcf//93mXPO+88eeWVV0RERNd1qaqqkqNHj8rkyZO901y+/vrrcu2114qIyPz582XKlCnS3Nws1dXVMmjQIO/cwKfOD0sUakJiqkSiYKSUwtVXXw0AmDhxovd0W6d69913sW7dOowbNw4A0NjYiOjoaO/tN954IwCgpqYGhYWFmDdvHgBA0zQkJCTgnXfewZ49e7zTXBqG0epsNddddx3CwsIQHx+P73znO/jkk08wcuRI/79gogDDgiUKUJqmeedRtdls7Y53igjuvvtu3HXXXW3efqbTlYkIpkyZgrfeesunXKee6osoVHEMlijIxMXFoaamxnv58ssvx0svvYSqqioAQHV1NYqLi0+7X2xsLIYOHYpXX30VgOeTanV1Nc4991x88cUX2LFjBwDPOVjz8/O993v99dfhcrlw7NgxvP3225gyZQoAICoqCvX19aa9TqKejgVLFGSmT5+O/fv3Y/z48Xj66acxY8YM3H777Zg6dSpGjRqF6dOnw+l0tnnf1157Da+99hpGjhyJcePGYcuWLejbty/++te/YtGiRRg9ejRGjx6NTz75xHuflh2fxo8fjx/84AfezcN33nknJk6ciJkzZ3bL6ybqaXiYDhF12S233IIZM2bgpptusjoKUY/DT7BEREQm4CdYIiIiE/ATLBERkQlYsERERCZgwRIREZmABUtERGQCFiwREZEJWLBEREQm+P/iczwf0XYNAgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "posterior_inter.plot(color='C1')\n", "decorate(xlabel='intercept',\n", " ylabel='PDF',\n", " title='Posterior marginal distribution of intercept')" ] }, { "cell_type": "code", "execution_count": 75, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:08.717982Z", "iopub.status.busy": "2021-04-16T19:40:08.717261Z", "iopub.status.idle": "2021-04-16T19:40:08.721465Z", "shell.execute_reply": "2021-04-16T19:40:08.720768Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "12.46 [12.4425 12.4775]\n" ] } ], "source": [ "summarize(posterior_inter)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior mean is about 12.5 mph, which is the world record marathon pace the model predicts for the midpoint of the date range, 1994.\n", "\n", "And here's the posterior distribution of `slope`." ] }, { "cell_type": "code", "execution_count": 76, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:08.774456Z", "iopub.status.busy": "2021-04-16T19:40:08.760561Z", "iopub.status.idle": "2021-04-16T19:40:08.957028Z", "shell.execute_reply": "2021-04-16T19:40:08.957858Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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X/z8NTU16OjoQEREBLy9vQEAra2t1vsvzna1xx42bBjc3Nx6fD+UlJTA3d0dwcHBV811qUu/t7ofz9bTglQqFVauXIkjR47g5MmTKCsrw7PPPntNz3Px5wzo+v7p/hnRarXYtGlTj5+h1tZWLF682KacZD8sWLouERERmDVrFh577DG0tLSgrKwMzz//PO69914AwGeffYaCggJYLBb4+vrC1dXVuuUWEhKC06dPWx8rNDQUt956Kx5++GHrX/bV1dU9DuC4mnvuuQevvvoq8vLy0NHRgaeeegoRERHWA2Kk0NjYCH9/f3h5eeHkyZN4/fXX+xw/ceJEBAQE4IUXXoDRaER2djb++c9/DtjzX2zx4sXYsGED9u/fj87OTjz33HPWg4AulZ+fj6+//hptbW1wc3ODt7d3j69lVVVVvw6u6vbmm28iPz8fbW1teOKJJzB9+nRoNBoEBwcjMjIS69atg8ViQVZWFv7zn/9YP27YsGFQKpU9vocuplQq8eMf/xhPPvkk6uvrUVdXhyeffBIZGRnX9EfWXXfdhR07duDTTz+F2WzG5s2bsWvXLtx99902ffz27duRm5sLk8kELy8veHh49NiL0W3+/PmoqanBa6+9BpPJhF27dmHjxo1YunSpdUxBQQFWr14Nk8mEzz//HNu3b8ddd90FAFixYgV+97vfIT8/H0DX98enn37a65Y5SYcFS9dt48aNaGtrw4gRIzBlyhTccsstePzxxwEARUVFmDt3Lnx8fKDX6zFp0iQ89NBDALqOCP3mm2/g7++PBQsWAOg6arV717Cvry+mTZuGgwcP2pxl6dKl+NnPfoYFCxYgNDQUR44cwZYtW674i8xe3nzzTbz00kvw9vbGgw8+eNVfuK6urvjkk0/w2WefISAgAI8//jjuueceuLu7D8jzX+zGG2/E73//e9x+++0ICwuDxWJBUlLSFcd2dnbit7/9LUJCQhAUFITt27dbF6S44YYbMHHiRERERMDf379fW+TLly/H4sWLERISgoqKCmzYsMF635o1a/DOO+/Az88Pb775Zo+5eXp64umnn8a8efPg7++PjRs3XvbYf/vb3xAVFQW9Xo/ExETodDr8+c9/tjnbxXQ6HTZv3oynn34aAQEBeO655/Dxxx9j5MiRNn382bNnsXjxYvj7+yM6Ohp+fn54+umnLxsXEBCAL774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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "posterior_slope.plot(color='C4')\n", "decorate(xlabel='Slope',\n", " ylabel='PDF',\n", " title='Posterior marginal distribution of slope')" ] }, { "cell_type": "code", "execution_count": 77, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:08.966418Z", "iopub.status.busy": "2021-04-16T19:40:08.965585Z", "iopub.status.idle": "2021-04-16T19:40:08.972250Z", "shell.execute_reply": "2021-04-16T19:40:08.972843Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.015 [0.01428 0.01668]\n" ] } ], "source": [ "summarize(posterior_slope)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior mean is about 0.015 mph per year, or 0.15 mph per decade.\n", "\n", "That's interesting, but it doesn't answer the question we're interested in: When will there be a two-hour marathon? To answer that, we have to make predictions." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prediction\n", "\n", "To generate predictions, I'll draw a sample from the posterior distribution of parameters, then use the regression equation to combine the parameters with the data.\n", "\n", "`Pmf` provides `choice`, which we can use to draw a random sample with replacement, using the posterior probabilities as weights." ] }, { "cell_type": "code", "execution_count": 78, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:08.976629Z", "iopub.status.busy": "2021-04-16T19:40:08.975627Z", "iopub.status.idle": "2021-04-16T19:40:08.979423Z", "shell.execute_reply": "2021-04-16T19:40:08.980266Z" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "np.random.seed(17)" ] }, { "cell_type": "code", "execution_count": 79, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:08.983792Z", "iopub.status.busy": "2021-04-16T19:40:08.983006Z", "iopub.status.idle": "2021-04-16T19:40:08.987959Z", "shell.execute_reply": "2021-04-16T19:40:08.988740Z" } }, "outputs": [], "source": [ "sample = posterior.choice(101)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is an array of tuples. Looping through the sample, we can use the regression equation to generate predictions for a range of `xs`." ] }, { "cell_type": "code", "execution_count": 80, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:08.995701Z", "iopub.status.busy": "2021-04-16T19:40:08.994987Z", "iopub.status.idle": "2021-04-16T19:40:09.151613Z", "shell.execute_reply": "2021-04-16T19:40:09.151148Z" } }, "outputs": [], "source": [ "xs = np.arange(-25, 50, 2)\n", "pred = np.empty((len(sample), len(xs)))\n", "\n", "for i, (slope, inter, sigma) in enumerate(sample):\n", " epsilon = norm(0, sigma).rvs(len(xs))\n", " pred[i] = inter + slope * xs + epsilon" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each prediction is an array with the same length as `xs`, which I store as a row in `pred`. So the result has one row for each sample and one column for each value of `x`.\n", "\n", "We can use `percentile` to compute the 5th, 50th, and 95th percentiles in each column." ] }, { "cell_type": "code", "execution_count": 81, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:09.158240Z", "iopub.status.busy": "2021-04-16T19:40:09.157499Z", "iopub.status.idle": "2021-04-16T19:40:09.161662Z", "shell.execute_reply": "2021-04-16T19:40:09.162303Z" } }, "outputs": [], "source": [ "low, median, high = np.percentile(pred, [5, 50, 95], axis=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To show the results, I'll plot the median of the predictions as a line and the 90% credible interval as a shaded area." ] }, { "cell_type": "code", "execution_count": 82, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:09.193803Z", "iopub.status.busy": "2021-04-16T19:40:09.193041Z", "iopub.status.idle": "2021-04-16T19:40:09.467845Z", "shell.execute_reply": "2021-04-16T19:40:09.468385Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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bfqsp/rTmX786U9/YuLEidjtdjZt2tTsfD3559KZvtx5552MHz+eyZMnc+utt1JTU9P0WV/ry7/+679SVFTE1KlTKS4uZteuXT3el870o9Gzzz6LzWZr9jPW03/v26QGkPfff1+dOXNGORyOpvceeugh9YMf/EAppVR1dbUqLCxUdXV1Lb7785//XH37299uOi4vL0+VlpYqXdfVnDlz1DvvvNM9nTino32588471aOPPqqUUmrfvn0qIyOjV/SlI/2wLEvl5uaqbdu2KaWUeumll9Q999zTK/qhlFKlpaXqk08+UUopFYlE1Pz589XLL7+s1q5dq+bNm6d0XVclJSUqLy+v6c/l61//uvr973+vlFJq5cqV6q677urx/nSmH59//rk6cOCAWrBggXr//febztXTfy6d6ctrr72mTNNUSin14x//WH3/+9/vs32pqalp+v7LL7+srrjiih7vS2f6oZRSlZWV6vLLL1ezZ89u+hnr6T+TSxlQI9ji4mKys7Obvbdr1y6uvfZaAFJTU5k4cSJvvvlmi++uWrWKO++8E4A333yTK6+8kiFDhuB0Orn77rt56aWX4t+B83S0LzabranaSF1dHUOGDAF6vi8d6UdFRQVKKaZOnQrA4sWLee6553pFPwCGDBnCjBkzAHC73RQVFXH8+HFeeukl7rnnHpxOJ7m5uRQXF7Nu3TqUUrz++uvcddddANx999288sorPd6fjvYDoKioiLFjx7Y4V0//uXSmL0uXLsVub/jVOGPGDI4fP95n+5KSktL0/fr6+qb/7ms/XwA//OEP+dnPfobX6+0V/WiPARWwrZk+fTrPPfcclmVx6tQpNm3axMmTJ5sd88knn6BpGsXFxUBDaayhQ4c2fT5s2DBKSkq6td2taasvv/jFL1i1ahVDhw7lmmuu4bHHHgN6Z18u1o/MzEzcbjcbNmwAGm4NhUIhqqqqel0/KisrWb16NYsWLbpo2yorK0lISGj6hZGQkIDb7aa2trbX9Kc9/WhLb+kHdLwvSikef/zxpn/s9dW+/O///b8ZOXIk//Iv/8Kjjz4K9J6+tLcfb731FpZlsXDhwmbf7y39uJgBH7A//vGPcTqdTJs2jeXLl7NgwYJmzwMB/vrXv3L77bdjs9ma3jv/v1UvWenUVl9++9vf8s///M+cPHmS9957jzvvvJNAIAD0vr601Y8XX3yRn//858yYMYMjR46QkZHR9Flv6UckEuGWW27hBz/4ARMnTgQu3rbz32/rs57oT0f60Zae7gd0ri//9m//ht/v57777mt6ry/25eGHH+bo0aM8+uij/OhHP2p6v6f70t5+hEIh/tf/+l/83//7f1s9T0/3oy3OSx/Sv/n9fn73u981vb7hhhsYP35802vDMHj22WfZuHFj03tDhw5lx44dTa9LSkpitsFAV7TVl//5n/+hsrISgEmTJpGdnc2ePXt6ZV/a6se0adN4++23gYZ//T7xxBMkJyf3mn6Ypsntt9/OjBkz+P73vw80/LycOHGiWdtmz57NoEGDCAQCaJqG1+slFAqh6zopKSk93p+O9KMtPd0P6FxffvOb37Bp0ybWrl3b9Au8r/al0fXXX8+yZcuoqKjo8b50pB+HDx/mxIkTzJw5E4AzZ85w66238v/+3//r8X5cUrc/9e0Fzp9QU1NTozRNU0o1TLiZNGlS0wQHpZRas2aNmjlzZrPv19TUqKFDh6rTp08rXdfV5Zdf3mMP1tvbl/z8fPXaa68ppZQ6ceKEysrKUhUVFb2mL+3tx5kzZ5RSSlmWpb773e+q//iP/2j6Tm/ox7e+9S31zW9+U1mW1fTeunXr1Pz585VhGOrUqVNq6NChTZM3vvGNb6jHH39cKaXUo48+2jTJqaf709F+NLpwklNP90OpjvflySefVFOnTm02Qaiv9mXv3r1Nx7333nsqJydHWZbV433p7M+XUs1/xnq6H5cyoAL2O9/5jsrNzVWAys3NVd/5znfUli1b1JgxY9SECRPUggUL1L59+5p95+tf/7p65JFHWpzrb3/7mxozZowaNWqU+vGPf9xdXWjS0b5s3rxZzZw5UxUVFanCwkL17LPP9oq+dLQfP/7xj9W4cePUmDFj1D/90z8pXdd7RT+UUmrTpk0KUIWFhWry5Mlq8uTJTT87Dz74oBo9erQaM2aMeu6555q+c+LECVVcXKzGjh2r5s2bp0pKSnq8P53pxxNPPKFyc3OV2+1WmZmZatKkST3ej872xel0qhEjRjQdf+edd/bZvlx33XUqPz9fTZ48Wc2bN09t2bKlx/vSmX6c78J/xPX03/u2SKlEIYQQIg4G/CQnIYQQIh4kYIUQQog4kIAVQggh4kACVgghhIgDCVghhBAiDiRgheinbDYbU6ZMobCwkIkTJ/KjH/2oWT3ai1m9enWzxftCiM6RgBWin3I4HGzfvp1du3axZcsWTp48yY033njJ70nAChEbsg5WiH7K6XRiGEbT69raWnJycti8eTNFRUXccsstHDt2DE3TuPrqq/n1r3/Nu+++y80330xSUhJpaWk8+uijTJ06le9///ts27aNcDjMsmXL+Md//Mce7JkQfcOAr0UsxECRkpLCmDFj2Lt3L0VFRfz+979n0KBBWJbFTTfdxNq1a1m8eDHXX389ixYt4o477gAaisVPnTqVxx57DE3TuPzyy7nqqqvIz8/v4R4J0btJwAoxwDQWr3/88cd57rnnME2TsrIyiouLWbx4cYvjX3/9dcLhcNMGDHV1dezfv18CVohLkIAVYoCoq6vj8OHD5Ofns3HjRl588UXee+89kpKS+OEPf4imaa1+TynFqlWrmDJlSvc2WIg+TiY5CTEA1NfXs3z5cubOnUthYSF1dXWkpqaSlJREZWUlL774YtOxycnJzWYbL1myhEceeQTTNAE4dOhQu2YjCzHQScAK0U+Zptm0TGfWrFnk5uby0ksvAXDttdeSmJhIQUEBd9xxBwsWLGj63u23386jjz7KzJkz2bx5MytWrCAxMZHJkyczadIk7rvvPiKRSE91S4g+Q2YRCyGEEHEgI1ghhBAiDiRghRBCiDiQgBVCCCHiQAJWCCGEiAMJWCGEECIOJGCFEEKIOJCAFUIIIeJAAlYIIYSIg/8PfiNexNTt9FIAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "times = pd.to_timedelta(xs*365.24, unit='days') + offset\n", "\n", "plt.fill_between(times, low, high, \n", " color='C2', alpha=0.1)\n", "plt.plot(times, median, color='C2')\n", "\n", "plot_speeds(data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The dashed line shows the two-hour marathon pace, which is 13.1 miles per hour.\n", "Visually we can estimate that the prediction line hits the target pace between 2030 and 2040.\n", "\n", "To make this more precise, we can use interpolation to see when the predictions cross the finish line. SciPy provides `interp1d`, which does linear interpolation by default." ] }, { "cell_type": "code", "execution_count": 83, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:09.477523Z", "iopub.status.busy": "2021-04-16T19:40:09.475247Z", "iopub.status.idle": "2021-04-16T19:40:09.489783Z", "shell.execute_reply": "2021-04-16T19:40:09.488592Z" } }, "outputs": [], "source": [ "from scipy.interpolate import interp1d\n", "\n", "future = np.array([interp1d(high, xs)(13.1),\n", " interp1d(median, xs)(13.1),\n", " interp1d(low, xs)(13.1)])" ] }, { "cell_type": "code", "execution_count": 84, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:09.501330Z", "iopub.status.busy": "2021-04-16T19:40:09.500502Z", "iopub.status.idle": "2021-04-16T19:40:09.504183Z", "shell.execute_reply": "2021-04-16T19:40:09.504946Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
datetime
early2030-06-21 12:40:01.592340389
median2036-09-20 09:03:28.522400448
late2042-08-13 11:20:06.313348412
\n", "
" ], "text/plain": [ " datetime\n", "early 2030-06-21 12:40:01.592340389\n", "median 2036-09-20 09:03:28.522400448\n", "late 2042-08-13 11:20:06.313348412" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dts = pd.to_timedelta(future*365.24, unit='day') + offset\n", "pd.DataFrame(dict(datetime=dts),\n", " index=['early', 'median', 'late'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The median prediction is 2036, with a 90% credible interval from 2032 to 2043. So there is about a 5% chance we'll see a two-hour marathon before 2032." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Summary\n", "\n", "This chapter introduces Bayesian regression, which is based on the same model as least squares regression; the difference is that it produces a posterior distribution for the parameters rather than point estimates.\n", "\n", "In the first example, we looked at changes in snowfall in Norfolk County, Massachusetts, and concluded that we get more snowfall now than when I was young, contrary to my expectation.\n", "\n", "In the second example, we looked at the progression of world record pace for the men's marathon, computed the joint posterior distribution of the regression parameters, and used it to generate predictions for the next 20 years.\n", "\n", "These examples have three parameters, so it takes a little longer to compute the likelihood of the data.\n", "With more than three parameters, it becomes impractical to use grid algorithms. \n", "\n", "In the next few chapters, we'll explore other algorithms that reduce the amount of computation we need to do a Bayesian update, which makes it possible to use models with more parameters.\n", "\n", "But first, you might want to work on these exercises." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercises\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** I am under the impression that it is warmer around here than it used to be. In this exercise, you can put my conjecture to the test.\n", "\n", "We'll use the same dataset we used to model snowfall; it also includes daily low and high temperatures in Norfolk County, Massachusetts during my lifetime." ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Here's the data." ] }, { "cell_type": "code", "execution_count": 85, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:09.508642Z", "iopub.status.busy": "2021-04-16T19:40:09.507790Z", "iopub.status.idle": "2021-04-16T19:40:09.598819Z", "shell.execute_reply": "2021-04-16T19:40:09.596426Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
STATIONNAMEDATEPRCPSNOWSNWDTMAXTMINTOBSWESDWT01WT03WT04WT05WT06WT08WT09WT11WT16WT18
0USC00190736BLUE HILL COOP, MA US1967-05-110.430.00.05736.0NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
1USC00190736BLUE HILL COOP, MA US1967-05-120.000.00.05839.0NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
2USC00190736BLUE HILL COOP, MA US1967-05-130.000.00.06438.0NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", "
" ], "text/plain": [ " STATION NAME DATE PRCP SNOW SNWD TMAX \\\n", "0 USC00190736 BLUE HILL COOP, MA US 1967-05-11 0.43 0.0 0.0 57 \n", "1 USC00190736 BLUE HILL COOP, MA US 1967-05-12 0.00 0.0 0.0 58 \n", "2 USC00190736 BLUE HILL COOP, MA US 1967-05-13 0.00 0.0 0.0 64 \n", "\n", " TMIN TOBS WESD WT01 WT03 WT04 WT05 WT06 WT08 WT09 WT11 WT16 \\\n", "0 36.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "1 39.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "2 38.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n", "\n", " WT18 \n", "0 NaN \n", "1 NaN \n", "2 NaN " ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv('2239075.csv', parse_dates=[2])\n", "df.head(3)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Again, I'll create a column that contains the year part of the dates." ] }, { "cell_type": "code", "execution_count": 86, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:09.605621Z", "iopub.status.busy": "2021-04-16T19:40:09.604420Z", "iopub.status.idle": "2021-04-16T19:40:09.610189Z", "shell.execute_reply": "2021-04-16T19:40:09.610858Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "df['YEAR'] = df['DATE'].dt.year" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "This dataset includes `TMIN` and `TMAX`, which are the daily low and high temperatures in degrees F.\n", "I'll create a new column with the daily midpoint of the low and high temperatures." ] }, { "cell_type": "code", "execution_count": 87, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:09.620934Z", "iopub.status.busy": "2021-04-16T19:40:09.620132Z", "iopub.status.idle": "2021-04-16T19:40:09.624087Z", "shell.execute_reply": "2021-04-16T19:40:09.625038Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "df['TMID'] = (df['TMIN'] + df['TMAX']) / 2" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Now we can group by year and compute the mean of these daily temperatures." ] }, { "cell_type": "code", "execution_count": 88, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:09.634750Z", "iopub.status.busy": "2021-04-16T19:40:09.632057Z", "iopub.status.idle": "2021-04-16T19:40:09.638953Z", "shell.execute_reply": "2021-04-16T19:40:09.639856Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "54" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tmid = df.groupby('YEAR')['TMID'].mean()\n", "len(tmid)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Again, I'll drop the first and last years, which are incomplete." ] }, { "cell_type": "code", "execution_count": 89, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:09.646871Z", "iopub.status.busy": "2021-04-16T19:40:09.642980Z", "iopub.status.idle": "2021-04-16T19:40:09.653320Z", "shell.execute_reply": "2021-04-16T19:40:09.654470Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "52" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "complete = tmid.iloc[1:-1]\n", "len(complete)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Here's what the time series looks like." ] }, { "cell_type": "code", "execution_count": 90, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:09.672386Z", "iopub.status.busy": "2021-04-16T19:40:09.671591Z", "iopub.status.idle": "2021-04-16T19:40:09.886776Z", "shell.execute_reply": "2021-04-16T19:40:09.887123Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "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t92GvLw8VFZW4tZbb8VLL70kR2xEREQOSSUIgmDvICwRHx+PkpISe4dBREQuzpJ81KF5rkRERCSNyZWIiMjKmFyJiIisjMmVzNLpDaiq1UKnN9g7FCIihyK5cD+5Hm5nRkTUNay50jVatjPz8/FERO8g+Pl4Iq+gGAUHuUMSEZElmFzJhNR2ZmwiJiKSxuRKJridGRFR1zG5kgluZ0ZE1HVMrmSC25kREXUdRwvTNbidGRFR1zC50jW4nRkRUdcwuZJZzduZMakSEXUU+1yJiIisjMmViIjIyphciYiIrIzJVSZcBJ+IyHVwQJONcRF8IiLXw5qrjXERfCIi18PkakNcBJ+IyDUxudoQF8EnInJNTK42xEXwiYhcE5OrDXERfCIi1yRLcl20aBE8PJoHJr/00ksYMmSI+J+npyfef/99OcKwi6zUKGRnJaC+QYezF39FfYOOi+ATETk5m0/FKSwsRH19vfj43nvvxb333gsAKC8vR1JSEm655RZbh2E3XASfiMj12LTm2tjYiJycHKxevbrN57dt24bJkyfD29vblmEoQvMi+N5MrERELsCmNdfly5dj7ty5CAkJafP5rVu34oUXXmjzudzcXOTm5oqPq6qqbBIjERGRtakEQRBsceEjR47goYceQn5+PlQqFTw8PKDX68XnDx06hNtvvx1nz56FSiW9UlF8fDxKSkpsESoREZHFLMlHNmsW3rdvH0pKShAVFYXIyEgYDAZERkaKNdCtW7di2rRpFiVWIiIiR2Kzmusfta65GgwGhIeHo6CgAPHx8Radz5orEREpgV1rru359NNP0bt3b4sTKxERkSORLbm27m8dN24cvv/+e7l+NRERkay4QhMREZGVMbkSERFZmWwDmroqMDAQYWFh9g4DVVVV6N69u73DcAgsK8uxrCzHsrIcy8oyHS2niooK1NTUtPsah0muSsFRy5ZjWVmOZWU5lpXlWFaWsUU5sVmYiIjIyphciYiIrIzJtYMWL15s7xAcBsvKciwry7GsLMeysowtyol9rkRERFbGmisREZGVMbkSERFZmcsn1//3//4fwsLC4OHx+9a2NTU1uPPOOzF48GAMHjwYO3fuFJ8bP348hgwZgiFDhiAmJsZkbtSbb76J2NhY9O/fH48++qicb0MWHS2r06dPY8yYMUhJSUFSUpLJcywr07IqLCxEWloa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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "complete.plot(ls='', marker='o', alpha=0.5)\n", "\n", "decorate(xlabel='Year',\n", " ylabel='Annual average of daily temperature (deg F)')" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "As we did with the snow data, I'll convert the `Series` to a `DataFrame` to prepare it for regression." ] }, { "cell_type": "code", "execution_count": 91, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:09.899059Z", "iopub.status.busy": "2021-04-16T19:40:09.898484Z", "iopub.status.idle": "2021-04-16T19:40:09.901665Z", "shell.execute_reply": "2021-04-16T19:40:09.902018Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
YEARTMID
0196848.071038
1196948.687671
2197048.258904
3197148.804110
4197247.112022
\n", "
" ], "text/plain": [ " YEAR TMID\n", "0 1968 48.071038\n", "1 1969 48.687671\n", "2 1970 48.258904\n", "3 1971 48.804110\n", "4 1972 47.112022" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = complete.reset_index()\n", "data.head()" ] }, { "cell_type": "code", "execution_count": 92, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:09.907118Z", "iopub.status.busy": "2021-04-16T19:40:09.906333Z", "iopub.status.idle": "2021-04-16T19:40:09.910678Z", "shell.execute_reply": "2021-04-16T19:40:09.910015Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "1994" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "offset = round(data['YEAR'].mean())\n", "offset" ] }, { "cell_type": "code", "execution_count": 93, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:09.918655Z", "iopub.status.busy": "2021-04-16T19:40:09.917835Z", "iopub.status.idle": "2021-04-16T19:40:09.922722Z", "shell.execute_reply": "2021-04-16T19:40:09.921649Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "-0.5" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['x'] = data['YEAR'] - offset\n", "data['x'].mean()" ] }, { "cell_type": "code", "execution_count": 94, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:09.929320Z", "iopub.status.busy": "2021-04-16T19:40:09.928415Z", "iopub.status.idle": "2021-04-16T19:40:09.935474Z", "shell.execute_reply": "2021-04-16T19:40:09.936590Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "1.2389114009625752" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['y'] = data['TMID']\n", "data['y'].std()" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Now we can use StatsModels to estimate the parameters." ] }, { "cell_type": "code", "execution_count": 95, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:09.950115Z", "iopub.status.busy": "2021-04-16T19:40:09.948247Z", "iopub.status.idle": "2021-04-16T19:40:09.955668Z", "shell.execute_reply": "2021-04-16T19:40:09.954729Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "Intercept 49.430172\n", "x 0.044252\n", "dtype: float64" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import statsmodels.formula.api as smf\n", "\n", "formula = 'y ~ x'\n", "results = smf.ols(formula, data=data).fit()\n", "results.params" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "And compute the standard deviation of the parameters." ] }, { "cell_type": "code", "execution_count": 96, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:09.961504Z", "iopub.status.busy": "2021-04-16T19:40:09.960803Z", "iopub.status.idle": "2021-04-16T19:40:09.965281Z", "shell.execute_reply": "2021-04-16T19:40:09.964756Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "1.041705765390206" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results.resid.std()" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "According to the least squares regression model, annual average temperature is increasing by about 0.044 degrees F per year.\n", "\n", "To quantify the uncertainty of these parameters and generate predictions for the future, we can use Bayesian regression." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. Use StatsModels to generate point estimates for the regression parameters.\n", "\n", "2. Choose priors for `slope`, `intercept`, and `sigma` based on these estimates, and use `make_joint3` to make a joint prior distribution.\n", "\n", "3. Compute the likelihood of the data and compute the posterior distribution of the parameters.\n", "\n", "4. Extract the posterior distribution of `slope`. How confident are we that temperature is increasing?\n", "\n", "5. Draw a sample of parameters from the posterior distribution and use it to generate predictions up to 2067.\n", "\n", "6. Plot the median of the predictions and a 90% credible interval along with the observed data. \n", "\n", "Does the model fit the data well? How much do we expect annual average temperatures to increase over my (expected) lifetime?" ] }, { "cell_type": "code", "execution_count": 97, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:09.973077Z", "iopub.status.busy": "2021-04-16T19:40:09.972198Z", "iopub.status.idle": "2021-04-16T19:40:09.976051Z", "shell.execute_reply": "2021-04-16T19:40:09.976805Z" } }, "outputs": [], "source": [ "# Solution\n", "\n", "qs = np.linspace(0, 0.1, num=51)\n", "prior_slope = make_uniform(qs, 'Slope')" ] }, { "cell_type": "code", "execution_count": 98, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:09.983354Z", "iopub.status.busy": "2021-04-16T19:40:09.982599Z", "iopub.status.idle": "2021-04-16T19:40:09.987585Z", "shell.execute_reply": "2021-04-16T19:40:09.986707Z" } }, "outputs": [], "source": [ "# Solution\n", "\n", "qs = np.linspace(48, 52, num=41)\n", "prior_inter = make_uniform(qs, 'Intercept')" ] }, { "cell_type": "code", "execution_count": 99, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:09.994924Z", "iopub.status.busy": "2021-04-16T19:40:09.993916Z", "iopub.status.idle": "2021-04-16T19:40:09.997161Z", "shell.execute_reply": "2021-04-16T19:40:09.996368Z" } }, "outputs": [], "source": [ "# Solution\n", "\n", "qs = np.linspace(0.5, 2, num=31)\n", "prior_sigma = make_uniform(qs, 'Sigma')" ] }, { "cell_type": "code", "execution_count": 100, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:10.005414Z", "iopub.status.busy": "2021-04-16T19:40:10.003358Z", "iopub.status.idle": "2021-04-16T19:40:10.031755Z", "shell.execute_reply": "2021-04-16T19:40:10.030704Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
probs
SlopeInterceptSigma
0.048.00.500.000015
0.550.000015
0.600.000015
\n", "
" ], "text/plain": [ "Slope Intercept Sigma\n", "0.0 48.0 0.50 0.000015\n", " 0.55 0.000015\n", " 0.60 0.000015\n", "dtype: float64" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "prior = make_joint3(prior_slope, prior_inter, prior_sigma)\n", "prior.head()" ] }, { "cell_type": "code", "execution_count": 101, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:10.145345Z", "iopub.status.busy": "2021-04-16T19:40:10.038506Z", "iopub.status.idle": "2021-04-16T19:40:51.077178Z", "shell.execute_reply": "2021-04-16T19:40:51.076708Z" } }, "outputs": [], "source": [ "# Solution\n", "\n", "xs = data['x']\n", "ys = data['y']\n", "likelihood = prior.copy()\n", "\n", "for slope, inter, sigma in prior.index:\n", " expected = slope * xs + inter\n", " resid = ys - expected\n", " densities = norm.pdf(resid, 0, sigma)\n", " likelihood[slope, inter, sigma] = densities.prod()" ] }, { "cell_type": "code", "execution_count": 102, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:51.080748Z", "iopub.status.busy": "2021-04-16T19:40:51.080082Z", "iopub.status.idle": "2021-04-16T19:40:51.088787Z", "shell.execute_reply": "2021-04-16T19:40:51.088316Z" } }, "outputs": [ { "data": { "text/plain": [ "6.471589606597477e-36" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "posterior = prior * likelihood\n", "posterior.normalize()" ] }, { "cell_type": "code", "execution_count": 103, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:51.092397Z", "iopub.status.busy": "2021-04-16T19:40:51.091793Z", "iopub.status.idle": "2021-04-16T19:40:51.100270Z", "shell.execute_reply": "2021-04-16T19:40:51.099775Z" } }, "outputs": [], "source": [ "# Solution\n", "\n", "posterior_slope = posterior.marginal(0)\n", "posterior_inter = posterior.marginal(1)\n", "posterior_sigma = posterior.marginal(2)" ] }, { "cell_type": "code", "execution_count": 104, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:51.135977Z", "iopub.status.busy": "2021-04-16T19:40:51.118308Z", "iopub.status.idle": "2021-04-16T19:40:51.267312Z", "shell.execute_reply": "2021-04-16T19:40:51.267692Z" } }, "outputs": [ { "data": { "image/png": "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XLiAuro6JCQkwGg0AgBqamrU15vXdqVt9+nTByEhIS2+H06fPo3Q0FDExcVdsa7LXf69pWxPq8uCeuLnIzk5GSdOnGhz+4mJifjxj3/cYltVVVX45JNP1GWa/9sAjd+nynv19M9RoOPepFYSEhIwefJk/OIXv0B1dTUKCgrw4osv4oEHHgAAfPzxxzh+/DjcbjdMJhOCg4PVkVt8fDxOnjypbqtv376488478eijj6ojjPPnz+P999/vdD33338/Xn/9deTn56Ourg7Lli1DQkICbrjhhh781C1VVlYiOjoakZGROHr0KN54440Olx87diwsFgt+//vfo6GhAfv378e7777ba+/f3H333Yf169dj3759qK+vx3PPPYfq6uo2lz127Bj+9a9/oba2FiEhITAajS3+Lc+dO4fa2tou1//mm2/i2LFjqK2txS9/+UtMnDgRVqsVcXFxSEpKwpo1a+B2u5Gbm9vil3+fPn0QFBTU4nuouaCgIPzkJz/Bb37zG1y6dAmlpaX4zW9+g3nz5l1VOMyZMwfbt2/Hf//3f8PlcmHz5s3YuXMn7r333i5vqzN64udj7ty5+PLLL/GXv/wFdXV1qKmpwc6dOwEA8+bNw+eff4733nsPDQ0NaGhoQF5eXovL744fP45Vq1bB6XTif/7nf/D5559jzpw5an2nTp3S4qMHJAYstemdd95BbW0tkpOTcdNNN+GOO+7A0qVLAQAnTpzA9OnTERUVhbS0NNx444145JFHAABPPPEEPvvsM0RHR2PmzJkAGq+njI6OxvXXXw+TyYQJEybg4MGDna7lpz/9KR577DHMnDkTffv2xVdffYWPPvqoxeHYnvbmm2/iD3/4A4xGI372s59d8RducHAwPvjgA3z88cewWCxYunQp7r//foSGhvbK+zc3depUPP/887jrrrvQr18/uN1uDB8+vM1l6+vr8cwzzyA+Ph6xsbH4/PPP1YYUU6ZMwdixY5GQkIDo6OgujcgXLFiA++67D/Hx8SgqKsL69evV11avXo233noLZrMZb775ZovPFh4ejuXLl+P2229HdHQ03nnnnVbb/tOf/oSUlBSkpaUhPT0dqampeOWVVzpdW3OpqanYvHkzli9fDovFgueeew7vv/9+q0O2PaUnfj6sVis+++wzvPPOO4iPj0dKSgo2bdoEoPGP4y1btuDNN99E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ZswYDB06FJMmTcLLL798xRnERERE3kKzy3Q8hZfpEBFRb+koczjzhIiISAMMWCIiIg0wYImIiDTAgCUiItIAA5aIiEgDDFgiIiINMGCJiIg0wIAlIiLSgN81mjCZTK16Hl+tsrIyWCyWHtlWb2PtnsHaPcNXa/fVugHWrrDZbKisrGzzNb8L2J7ky12hWLtnsHbP8NXafbVugLV3Bg8RExERaYABS0REpAEGbAea32fW17B2z2DtnuGrtftq3QBr7wyegyUiItIAR7BEREQaYMASERFpIKAD9uc//zkMBgMAQETwxBNPID09HWlpaXjkkUfgcrnaXG/p0qVITU3FkCFDsGnTpt4sWXU1tW/fvh1RUVHIzMxEZmYmZs+e3dtlA2hZe2VlJe69916MGDECI0aMwAcffNDuet623ztbu6f3e0pKCtLT09X3Vy5P6Oz+9OR+707t3rjfz5w5g4kTJyIyMhILFy7scH1v2++drd2T+72tutevX4+MjAyMHDkS119/PbZv397u+j2+zyVA7dixQ37605+KXq8XEZFt27bJuHHjxOl0itPplPHjx8vHH3/car0tW7bIhAkTpKGhQWw2m1itVqmsrPSJ2nNzc+WWW27p1Vovd3ntS5culSeffFJERMrKymT48OFt7k9v3O+drd3T+z05OVkKCwtbPNfZ/enp/d6d2r1xv5eWlsru3bvljTfekOzs7HbX9cb93tnaPbnf26p79+7dUlpaKiIiX3/9tcTHx4vL5Wq1rhb7PCBHsHV1dfjVr36FP/zhD+pzOp0ODocD9fX1qK+vR11dHeLj41utu3nzZsyfPx8GgwEJCQkYP348tm7d6hO1e1pbtX/99deYPn06ACA6OhrDhg3Dp59+2mpdb9zvna3dG3V2f3p6v7fFG2vqrJiYGIwbNw5hYWEdLueNn7GztXubcePGISYmBkBjgwmHwwG73d5qOS32eUAG7HPPPYfs7Gz06dNHfW7y5MmYPHky+vXrh379+mHChAnIyspqta7NZkNiYqL6OCkpCTabrVfqBrpXOwAcPHgQmZmZmDhxIrZs2dJbZQNou/brrrsO7777LtxuN4qKirBr1y4UFha2Wtcb93tnawc8u98B4Ec/+hEyMjKwbNkyOJ3OTu9PT+934OprB7xvv3eWN+73rvDkfu+o7nfeeQfp6ekwmUyt1tNinwdc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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "posterior_inter.plot()\n", "decorate(xlabel='intercept (inches)',\n", " ylabel='PDF',\n", " title='Posterior marginal distribution of intercept')" ] }, { "cell_type": "code", "execution_count": 105, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:51.272380Z", "iopub.status.busy": "2021-04-16T19:40:51.271814Z", "iopub.status.idle": "2021-04-16T19:40:51.274600Z", "shell.execute_reply": "2021-04-16T19:40:51.274242Z" } }, "outputs": [ { "data": { "text/plain": [ "(49.430172755332116, array([49.2, 49.7]))" ] }, "execution_count": 105, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "posterior_inter.mean(), posterior_inter.credible_interval(0.9)" ] }, { "cell_type": "code", "execution_count": 106, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:51.306721Z", "iopub.status.busy": "2021-04-16T19:40:51.295008Z", "iopub.status.idle": "2021-04-16T19:40:51.412801Z", "shell.execute_reply": "2021-04-16T19:40:51.413372Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "posterior_slope.plot()\n", "decorate(xlabel='Slope (inches per year)',\n", " ylabel='PDF',\n", " title='Posterior marginal distribution of slope')" ] }, { "cell_type": "code", "execution_count": 107, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:51.417909Z", "iopub.status.busy": "2021-04-16T19:40:51.417437Z", "iopub.status.idle": "2021-04-16T19:40:51.422135Z", "shell.execute_reply": "2021-04-16T19:40:51.421776Z" } }, "outputs": [ { "data": { "text/plain": [ "(0.04425308067803314, array([0.028, 0.06 ]))" ] }, "execution_count": 107, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "posterior_slope.mean(), posterior_slope.credible_interval(0.9)" ] }, { "cell_type": "code", "execution_count": 108, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:51.428829Z", "iopub.status.busy": "2021-04-16T19:40:51.426223Z", "iopub.status.idle": "2021-04-16T19:40:51.498420Z", "shell.execute_reply": "2021-04-16T19:40:51.498841Z" } }, "outputs": [ { "data": { "text/plain": [ "(101, 50)" ] }, "execution_count": 108, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "sample = posterior.choice(101)\n", "\n", "years = np.arange(1967, 2067, 2)\n", "xs = years - offset\n", "\n", "pred = np.empty((len(sample), len(xs)))\n", "for i, (slope, inter, sigma) in enumerate(sample):\n", " pred[i] = inter + slope * xs + norm(0, sigma).rvs(len(xs))\n", " \n", "pred.shape" ] }, { "cell_type": "code", "execution_count": 109, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:51.502786Z", "iopub.status.busy": "2021-04-16T19:40:51.502071Z", "iopub.status.idle": "2021-04-16T19:40:51.505269Z", "shell.execute_reply": "2021-04-16T19:40:51.505614Z" } }, "outputs": [ { "data": { "text/plain": [ "(50,)" ] }, "execution_count": 109, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "low, median, high = np.percentile(pred, [5, 50, 95], axis=0)\n", "median.shape" ] }, { "cell_type": "code", "execution_count": 110, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:51.522757Z", "iopub.status.busy": "2021-04-16T19:40:51.520923Z", "iopub.status.idle": "2021-04-16T19:40:51.650753Z", "shell.execute_reply": "2021-04-16T19:40:51.651267Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "plt.fill_between(years, low, high, alpha=0.1)\n", "plt.plot(years, median, color='C0')\n", "\n", "complete.plot(ls='', marker='o', alpha=0.5)\n", "\n", "decorate(xlabel='Year',\n", " ylabel='Annual average of daily temperature (deg F)')" ] }, { "cell_type": "code", "execution_count": 111, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:40:51.654627Z", "iopub.status.busy": "2021-04-16T19:40:51.654214Z", "iopub.status.idle": "2021-04-16T19:40:51.658356Z", "shell.execute_reply": "2021-04-16T19:40:51.658836Z" } }, "outputs": [ { "data": { "text/plain": [ "4.264154393858554" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "# median increase over my lifetime in degrees F\n", "\n", "median[-1] - median[0]" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-print" ] }, "source": [ "*Think Bayes*, Second Edition\n", "\n", "Copyright 2020 Allen B. Downey\n", "\n", "License: [Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)](https://creativecommons.org/licenses/by-nc-sa/4.0/)" ] } ], "metadata": { "celltoolbar": "Tags", "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11.11" } }, "nbformat": 4, "nbformat_minor": 1 }