{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Think Bayes\n", "\n", "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/)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# If we're running on Colab, install empiricaldist\n", "# https://pypi.org/project/empiricaldist/\n", "\n", "import sys\n", "IN_COLAB = 'google.colab' in sys.modules\n", "\n", "if IN_COLAB:\n", " !pip install empiricaldist" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Get utils.py and create directories\n", "\n", "import os\n", "\n", "if not os.path.exists('utils.py'):\n", " !wget https://github.com/AllenDowney/ThinkBayes2/raw/master/soln/utils.py\n", " \n", "if not os.path.exists('figs'):\n", " !mkdir figs" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "\n", "from empiricaldist import Pmf, Cdf\n", "from utils import decorate, savefig" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Univariate normal\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Generate data" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 9.19413254, 7.93174418, 9.26052972, 11.09719199, 8.40716297,\n", " 10.28738107, 9.40427944, 7.29124596, 9.94310494, 10.34056147,\n", " 8.25335541, 9.52849993, 8.49452561, 11.50807398, 9.39053403,\n", " 8.14435859, 15.22433046, 6.37571855, 13.72639858, 9.00185182])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from scipy.stats import norm\n", "\n", "data = norm(10, 2).rvs(20)\n", "data" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(20, 9.640249062837732, 4.073028457273443)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n = len(data)\n", "xbar = np.mean(data)\n", "s2 = np.var(data)\n", "\n", "n, xbar, s2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Grid algorithm" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "mus = np.linspace(8, 12, 101)\n", "prior_mu = Pmf(1, mus)\n", "prior_mu.index.name = 'mu'" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "sigmas = np.linspace(0.01, 5, 100)\n", "ps = sigmas**-2\n", "prior_sigma = Pmf(ps, sigmas)\n", "prior_sigma.index.name = 'sigma'" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "from utils import make_joint\n", "\n", "prior = make_joint(prior_mu, prior_sigma)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "from utils import normalize\n", "\n", "def update_norm(prior, data):\n", " \"\"\"Update the prior based on data.\n", " \n", " prior: joint distribution of mu and sigma\n", " data: sequence of observations\n", " \"\"\"\n", " X, Y, Z = np.meshgrid(prior.columns, prior.index, data)\n", " likelihood = norm(X, Y).pdf(Z).prod(axis=2)\n", "\n", " posterior = prior * likelihood\n", " normalize(posterior)\n", "\n", " return posterior" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "posterior = update_norm(prior, data)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "from utils import marginal\n", "\n", "posterior_mu_grid = marginal(posterior, 0)\n", "posterior_sigma_grid = marginal(posterior, 1)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior_mu_grid.plot()\n", "decorate(title='Posterior distribution of mu')" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior_sigma_grid.plot(color='C1')\n", "decorate(title='Posterior distribution of sigma')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Update\n", "\n", "Mostly following notation in Murphy, [Conjugate Bayesian analysis of the Gaussian distribution](https://www.cs.ubc.ca/~murphyk/Papers/bayesGauss.pdf)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "m0 = 0\n", "kappa0 = 0\n", "alpha0 = 0\n", "beta0 = 0" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "9.640249062837732" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m_n = (kappa0 * m0 + n * xbar) / (kappa0 + n)\n", "m_n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "20" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "kappa_n = kappa0 + n\n", "kappa_n" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10.0" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "alpha_n = alpha0 + n/2\n", "alpha_n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "40.73028457273443" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "beta_n = beta0 + n*s2/2 + n * kappa0 * (xbar-m0)**2 / (kappa0 + n) / 2\n", "beta_n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "def update_normal(prior, summary):\n", " m0, kappa0, alpha0, beta0 = prior\n", " n, xbar, s2 = summary\n", "\n", " m_n = (kappa0 * m0 + n * xbar) / (kappa0 + n)\n", " kappa_n = kappa0 + n\n", " alpha_n = alpha0 + n/2\n", " beta_n = (beta0 + n*s2/2 + \n", " n * kappa0 * (xbar-m0)**2 / (kappa0 + n) / 2)\n", "\n", " return m_n, kappa_n, alpha_n, beta_n" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(9.640249062837732, 20, 10.0, 40.73028457273443)" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prior = 0, 0, 0, 0\n", "summary = n, xbar, s2\n", "update_normal(prior, summary)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Posterior distribution of sigma" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "from scipy.stats import invgamma\n", "\n", "dist_sigma2 = invgamma(alpha_n, scale=beta_n)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4.52558717474827" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dist_sigma2.mean()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.6000366900576855" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dist_sigma2.std()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5.002242322922353" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sigma2s = np.linspace(0.01, 20, 101)\n", "ps = dist_sigma2.pdf(sigma2s)\n", "posterior_sigma2_invgammas = Pmf(ps, sigma2s)\n", "posterior_sigma2_invgammas.normalize()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3de3xddZnv8c+zc22aNGmT9J42vVIKtNiGgggMh4ICItURBEZHODIyHsUZh+OM6JlBZEbPwXHkeAZGRWHG2wiIw1iwDqJVFOTSFlqgtEB6o2makjS35t4kz/ljr102m51bm33N9/167VfW5bfWevbaO+vZ67d+67fM3REREUk3oVQHICIiEo8SlIiIpCUlKBERSUtKUCIikpaUoEREJC0pQYmISFpSgpKMZGYdZrYwQes+38zqosa3m9n547TuD5vZL6PG3cwWj8e6g/UlbL8Ms81JZvawmbWZ2U+SsL1x+zwkveWmOgBJb2a2F5gBDACdwAbg0+7ecZzrqwb2AHnu3n+8cbl78fEuexzbOmWkMqN9X+7+I+BH4xGXmf0W+KG7fzdq/UnbL1GuIPwdKT+Rz3S0RvN5SHbQGZSMxvuCA98q4Azgb1MViJmd0I+qE10+U7edYPOBVxOdnLJ4/8kQlKBk1Nz9APAL4FQAM5ttZuvNrNnMas3s45GyZrbGzDabWbuZHTKzrwezfhf8bQ2qo94ZlP+Yme0wsxYze9TM5kety83sU2b2GvBa1LTFwXCpmX3fzBrNbJ+Z/a2ZhYJ515nZk2Z2h5k1A7fGvq+giurfgm2/TDgJR8/fa2YXjvV9xdt2MO2JmBAuNbPdZtZkZv8YFfutZvbDqDiqg/eda2ZfBs4F7gy2d+dx7JcnzOxrwfveY2aXDPXZm9nJZvZbM2sNqtguD6Z/CbgFuCqI4/qY5WabWbeZTYua9o7gveaZ2SIz22hmh4NpPzKzsph9/zkzewHoDN577OfxVBDXQTO708zyo5Z3M/uEmb0WvM+7zMyi5n88+N4dMbOXzWxVVNw/DfbdHjP7i6H2jSSQu+ul15AvYC9wYTBcBWwH/j4Yfxz4F6AQOB1oBNYG854C/jQYLgbOCoarAQdyo7bxfqAWOJlwtfPfAn+Imu/AY8A0YFLUtMXB8PeBnwElwfpfBa4P5l0H9AOfDtY9Kc57/D/A74P1VwEvAXVD7IOxvK+3bTuY9kTMe/tNsO15Qex/Fsy7lXAVHvG2Afw2UjZmfaPdL0eBjwM5wP8A6gGLs3/ygs/nC0A+cAFwBDgpXpxxlt8IfDxq/B+BbwXDi4GLgAKgknCi/78x+35r8LlMipoW+TxWA2cF+7ca2AF8JmZ/PAKUBfu3Ebg4mHclcIDwDxILYplP+If7FsKJNx9YCOwG3pPq/8eJ9kp5AHql9ys4GHQArcA+wglpUnDAGABKosr+b+DfguHfAV8CKmLW95aDbDDtF5EDZzAeArqA+cG4AxfErMeDA0oO0Assj5r358Bvg+HrgNdHeI+7IwetYPwGhk5QY3lfb9s28RNU9LY/Cfw6GL6V40xQo9wvtVHzioJlZ8bZP+cCDUAoatqPgVvjxRln+T8DNgbDBuwHzhui7PuB52P2/cfifCcvHGL5zwAPxeyPc6LGHwBuDoYfBf4yzjrOjPO5fR7411T/P060l6r4ZDTe7+5l7j7f3T/p7t3AbKDZ3Y9EldsHzAmGrweWAjvNbJOZXTbM+ucD3wiqaVqBZsIHsjlRZfYPsWwF4V+5+4aIY7hlI2bHlNk3VEHG9r5Gs+3YMvuCeE7UaPZLQ2TA3buCwXiNLGYD+919cJh1DedB4J1mNhs4j3DS+D2AmU03s/vM7ICZtQM/DGKPNuQ+NLOlZvaImTUEy38lzvINUcNdvPkeq4BdcVY7H5gd+T4G38kvEG4IIkmkBCXHqx6YZmYlUdPmEa4ywd1fc/drgOnA7cCDZjaZ8MEp1n7gz4MkGHlNcvc/RJUZqtv9JsJVVfOjph2LY4RlIw4SPlhFLx/XGN/XaLZNnG3XB8OdhM9sImaOYd2j2S+jVQ9URa5fjXVd7t4K/BL4EPAnwI89OC0hfNbtwAp3nwJ8hPCPk7esYpjVfxPYCSwJlv9CnOWHsh9YNMT0PTHfxxJ3v3SU65VxogQlx8Xd9wN/AP63mRWa2QrCZxc/AjCzj5hZZfCruzVYbIDwNYBBwvX6Ed8CPm9mpwTLlprZlaOMY4Bwtc2XzazEwo0rbiL8S3y0Hgi2P9XM5hK+ZhTXGN/XaP11sO0q4C+B+4PpW4HzzGyemZUSrmaKdmio7Y3Tfol4hnCy/JugYcP5wPuA+8awjn8HPgp8MBiOKCGoQjazOcBfjzG2EqAd6DCzZYSvpY3Wd4HPmtlqC1sc7KdngfagccYkM8sxs1PN7IwR1ifjTAlKTsQ1hK+L1AMPAV9098eCeRcD282sA/gGcLW79wRVSV8GngyqT85y94cIn43cF1TTvAQM2aIsjk8TPoDuBp4gfAC8dwzLf4lwldUewr/0fzBM2VG/rzFs/2eEL8pvBX4O3AMQ7Mv7gReC+Y/ELPcN4Iqgddr/i7PeE90vBHH0AZcT/kyaCF+H/Ki77xzDatYDS4BD7r4tavqXCN++0Eb4vf/HGMP7LOGzsiPAd3gzuY/I3X9C+DP792D5/wSmBcn9fYQb/uwh/J6/C5SOMTY5QfbmmbaIiEj60BmUiIikJSUoERFJS0pQIiKSlpSgREQkLWVN54sVFRVeXV2d6jBERGSMtmzZ0uTulbHTsyZBVVdXs3nz5lSHISIiY2RmcXtvURWfiIikJSUoERFJS0pQIiKSlpSgREQkLSlBiYhIWlKCEhGRtKQEJSIiaSlr7oOSsXnu9RYefamBgtwQBXk5zJxSyLrTZ5Obo98sIpIelKAmoP6BQW66fyuvN3cxGPW0ldbuo1x/zoLUBSYiEkUJagJav62evYe7+Pafrubdy2fQNzDIDd/fwv997FUuXzmbypKCVIcoIqJrUBPNwKBz58Zals0s4aKTZ2BmFOTm8MX3Laenf4Cv/tdYHpIqIpI4SlATzCMv1LO7qZO/XLuEUMiOTV9YWczHzlnAT7bU8fzrLSmMUEQkTAlqAhkcdP55Yy1LZxTznlNmvm3+py9YwvSSAm5dv53B6ItTIiIpoAQ1gWx46SC1b3Tw6QveevYUUVyQyxcuPZltdW389Lm6FEQoIvImJagJ5M6NtSyeXsylp80assy602dz0owS7tu0P4mRiYi8nRLUBFHf2s3OhiP8yZp55MQ5e4owMy4/fTZb9rVwoLU7iRGKiLyVEtQEsXlfuOHDmgXTRix72YrwGdbPX6hPaEwiIsNRgpogtuxtpig/h2UzS0YsO798MivnlvLwtoNJiExEJL6EJigzu9jMXjGzWjO7Oc78AjO7P5j/jJlVR81bYWZPmdl2M3vRzAoTGWu227yvhdOrykbdldFlK2bz4oE29jZ1JjgyEZH4EpagzCwHuAu4BFgOXGNmy2OKXQ+0uPti4A7g9mDZXOCHwCfc/RTgfOBoomLNdh29/ew42E7N/KmjXua9QTXfI6rmE5EUSeQZ1Bqg1t13u3sfcB+wLqbMOuB7wfCDwFozM+DdwAvuvg3A3Q+7+0ACY81qW19vZdBhdfXI158iZpdNomb+VB55QdV8IpIaiUxQc4Dotsp1wbS4Zdy9H2gDyoGlgJvZo2b2nJn9TbwNmNkNZrbZzDY3NjaO+xvIFpv3NWMG75hXNqbl3rdyNjsbjvDaoSMJikxEZGiJTFDx2jLHdk8wVJlc4Bzgw8HfD5jZ2rcVdL/b3WvcvaaysvJE481aW/a1cNKMEqYU5o1puUtOm0nI4GGdRYlICiQyQdUBVVHjc4HYCxrHygTXnUqB5mD64+7e5O5dwAZgVQJjzVoDg87zr7dSUz36608R00sKOWthuZqbi0hKJDJBbQKWmNkCM8sHrgbWx5RZD1wbDF8BbHR3Bx4FVphZUZC4/gh4OYGxZq2dDe109PZTM3/015+irT15BrsaO3XTrogkXcISVHBN6UbCyWYH8IC7bzez28zs8qDYPUC5mdUCNwE3B8u2AF8nnOS2As+5+88TFWs22xLcoLt6DC34op27pAKAJ17TNT4RSa6EPrDQ3TcQrp6LnnZL1HAPcOUQy/6QcFNzOQGb97YwY0oBc6dOOq7ll0wvZnpJAU/UHuaqM+aNc3QiIkNTTxJZbsu+FmrmTyPcen/szIxzFlfwZG2THsEhIkmlBJXFDrZ1c6C1+7ir9yLOWVJBc2cfLx9sH6fIRERGpgSVxba+3grAqhNMUO9aHL4O9WRt0wnHJCIyWkpQWWx30I/ekunFJ7SeGVMKWTqjmCeUoEQkiZSgstjuxk5mTClgcsGJt4V51+IKnt3TTM9R9TglIsmhBJXFdjd1sLDixM6eIs5dUkFv/+CxZusiIommBJXF9jR1sqBy8risa82CcnJDxu9fUzWfiCSHElSWau7so7XrKAsrxidBFRfksmreVJ6o1Q27IpIcSlBZak9TBwALx+kMCsLXobbXt9Pc2Tdu6xQRGYoSVJba1RhuwTde16AAzllSjjs8u+fwuK1TRGQoSlBZak9TJ3k5dtxdHMVz2pwyCnJDPLtHDSVEJPGUoLLU7sYO5k0rIjdn/D7i/NwQp1eVsWlv87itU0RkKEpQWWpPUycLxrF6L2LNgmlsr2+jo7d/3NctIhJNCSoLDQw6ew93sWgcG0hEnFE9jUGH53Q/lIgkmBJUFqpv7aavf5AF49TEPNqq+VMJGarmE5GEU4LKQrsaI03Mx7+Kr7ggl1Nml/LsHiUoEUksJagstCfoJDYRZ1AQrubbur+V3n71yyciiaMElYV2N3ZSUphLRXF+Qta/ZsFUevsHeelAW0LWLyICSlBZaU9TJwsrJh/3U3RHckb1NADdDyUiCaUElYV2N3Yk5PpTRHlxAYsqJ6uhhIgklBJUlunuG6C+rSdh158i1iyYxqa9zQwMekK3IyITV0ITlJldbGavmFmtmd0cZ36Bmd0fzH/GzKqD6dVm1m1mW4PXtxIZZzaJNJAYz05i4zmjehpHevp5peFIQrcjIhNXwhKUmeUAdwGXAMuBa8xseUyx64EWd18M3AHcHjVvl7ufHrw+kag4s02iW/BFRK5DqZpPRBIlkWdQa4Bad9/t7n3AfcC6mDLrgO8Fww8Cay1RV/YniN3BPVCJTlBzp05iVmmhEpSIJEwiE9QcYH/UeF0wLW4Zd+8H2oDyYN4CM3vezB43s3MTGGdW2dPUycwphRTl5yZ0O2bGqvlT1eWRiCRMIhNUvDOh2CvqQ5U5CMxz93cANwH/bmZT3rYBsxvMbLOZbW5s1JNeAepau5k3rSgp26qZP5X6th7qW7uTsj0RmVgSmaDqgKqo8blA/VBlzCwXKAWa3b3X3Q8DuPsWYBewNHYD7n63u9e4e01lZWUC3kLmqW/tZnZZYVK2tXr+VAC26CxKRBIgkQlqE7DEzBaYWT5wNbA+psx64Npg+Apgo7u7mVUGjSwws4XAEmB3AmPNCgODzqH2HmaXjd9DCodz8qwpTMrLUYISkYRI2IUKd+83sxuBR4Ec4F53325mtwGb3X09cA/wAzOrBZoJJzGA84DbzKwfGAA+4e66Gj+Cpo5ejg44s5KUoPJyQqysKlWCEpGESOiVdHffAGyImXZL1HAPcGWc5X4K/DSRsWWjA8G1oDlJquIDqJk/jW8+vouuvv6EN8wQkYlFPUlkkUhjhWRV8QGsrp7KwKCzdX9r0rYpIhODElQWSUWCWlUVbiih5uYiMt6UoLJIfWsPJQW5TCnMS9o2S4vyWDqjmM1KUCIyzpSgssiB1u6knj1FrA5u2B1Ux7EiMo6UoLJIMu+BirZ6/jTae/qpDbpZEhEZD0pQWaQ+hWdQAJv3qppPRMaPElSW6Orrp6XraEoSVHV5EeWT83U/lIiMKyWoLFHf2gPAnBQkqEjHsVv26V5qERk/SlBZIhVNzKPVzJ/K3sNdNB7pTcn2RST7KEFliYNtkQSV/EYSADXV6jhWRMaXElSWONDaQ8hgxpTUJKhT55SSnxtSNZ+IjBslqCxR39rNjCmF5OWk5iMtyM1hxZxS3bArIuNGCSpLpKqJebTV1VN56UAbPUcHUhqHiGQHJagskQ4Jqmb+NI4OOC8eaEtpHCKSHZSgssDgoFPf1pOyBhIRq+aVAbphV0TGhxJUFjjc2Udf/2BK7oGKVl5cwMKKyWooISLjQgkqCxy7B6o0tQkKwt0ebdnXgrs6jhWRE6MElQVSfZNutJrqqbR0HWVXY2eqQxGRDKcElQXefNR76hPU6vnTAFTNJyInTAkqC9S39jA5P4cpk3JTHQqLKicztShPDSVE5IQpQWWBSBNzM0t1KJjZsetQIiInQgkqC9S3pf4eqGir509jd1MnhzvUcayIHL+EJigzu9jMXjGzWjO7Oc78AjO7P5j/jJlVx8yfZ2YdZvbZRMaZ6epbU38PVLRIx7Hq9khETkTCEpSZ5QB3AZcAy4FrzGx5TLHrgRZ3XwzcAdweM/8O4BeJijEb9PYP0NTRy6w0aGIesWJuuOPYTXvUUEJEjl8iz6DWALXuvtvd+4D7gHUxZdYB3wuGHwTWWnAhxczeD+wGticwxoz3Rnu4Gm1minoxj6cgN4fT55axaa8SlIgcv0QmqDnA/qjxumBa3DLu3g+0AeVmNhn4HPCl4TZgZjeY2WYz29zY2DhugWeSQ+3hJ+nOKE2fBAWwZsE0Xqpvp7O3P9WhiEiGSmSCitekLLZ7gaHKfAm4w907htuAu9/t7jXuXlNZWXmcYWa2hkiCmlKQ4kje6owF0xgYdJ57XdehROT4JPLGmTqgKmp8LlA/RJk6M8sFSoFm4EzgCjP7KlAGDJpZj7vfmcB4M9KhNKzig3DHsSGDTXuaOXfJxPzxICInJpEJahOwxMwWAAeAq4E/iSmzHrgWeAq4Atjo4U7czo0UMLNbgQ4lp/gOtfdQkBuidFJeqkN5i5LCPE6ZXcqzug4lIscpYVV8wTWlG4FHgR3AA+6+3cxuM7PLg2L3EL7mVAvcBLytKboMr6GthxlTCtPiJt1YZ1RP4/nXW+nt1wMMRWTsEto3jrtvADbETLslargHuHKEddyakOCyxKH2nrSr3otYs2Aq9z65h5cOtB3ro09EZLTUk0SGO9Tek3Yt+CJqqsNJ6dk9aighImOnBJXB3J2G9h5mlKRXC76IiuICFlVO5tk9h1MdiohkICWoDNbe00/P0UFmpukZFITvh9q8r4WBQT3AUETGRgkqgx27STdNr0FBuKHEkZ5+Xmk4kupQRCTDKEFlsIa29E9QaxZErkOpmk9ExkYJKoNFzqDStRUfwNypRcwpm8Qz6jhWRMZICSqDRRLU9DTr5ijWWQvLeXr3YQZ1HUpExkAJKoM1tPdQVpRHYV5OqkMZ1jsXldPSdZSdug4lImOgBJXBDrX3pnX1XsQ7F5UD8NRuXYcSkdFTgspgh9p70rqBRMScsknMLy/iqV1KUCIyekpQGSzcD196X3+KOHtROc/sOaz7oURk1JSgMlT/wCBNHZlRxQfhhhJHevrZXt+W6lBEJEMMm6DM7JdRw59PfDgyWk0dfQw6TM+QBBW5DvUHVfOJyCiNdAYV/aS5YXsdl+RqyIB7oKJNLylk8fRiXYcSkVEbKUHpgkGaOnaTbhr3wxfr7EXlbNrbzNGBwVSHIiIZYKQEtdDM1pvZw1HDx17JCFDiy5SbdKO9c2E5XX0DvFDXmupQRCQDjPTAwnVRw19LZCAyNg1tPeSGjIrJmZOgzloYXIeqPawHGIrIiIZNUO7+eGTYzCqDaY2JDkpGdqi9l+klBYRC6feo96FMnZzPybOm8NTuw3x67ZJUhyMiaW6kVnxmZl80syZgJ/CqmTWa2S3DLSeJd6i9J2Na8EV716JyNu9robtvINWhiEiaG+ka1GeAc4Az3L3c3acCZwLvMrO/Snh0MqSG9p6MacEX7dyllfT1D/KMHr8hIiMYKUF9FLjG3fdEJrj7buAjwTxJkUPtPRnVgi/izAXTKMgN8btXm1IdioikuZESVJ67v+1IElyHyhtp5WZ2sZm9Yma1ZnZznPkFZnZ/MP8ZM6sOpq8xs63Ba5uZfWB0b2di6Orr50hPf0a14IsozMthzYJpPP7qG6kORUTS3EgJqu8452FmOcBdwCXAcuAaM1seU+x6oMXdFwN3ALcH018Catz9dOBi4NtmNlKLwwkj8iTdTKziA/ijpZXsauzkQGt3qkMRkTQ2UoJaaWbtZnYkeLVHxoHTRlh2DVDr7rvdvQ+4j7c2WycY/14w/CCw1szM3bvcvT+YXohuGH6LQ+29QGYnKIDfvaoGoSIytGETlLvnuPsUdy8JXlOixkeq4psD7I8arwumxS0TJKQ2oBzAzM40s+3Ai8AnohLWhPfmTbqZmaAWTy9mVmmhEpSIDGukZuaFZvYZM7vTzG4YYzVbvBt0Ys+Ehizj7s+4+ynAGcDnzextR+Mgps1mtrmxceIc7BoysJujaGbGeUsqeaK2iX51eyQiQxipiu97QA3hs5hLgX8aw7rrgKqo8blA/VBlguRXCjRHF3D3HUAncGrsBtz9bnevcfeaysrK2NlZq6Gth5KCXIoLMvey3HlLKznS0882dXskIkMYKUEtd/ePuPu3gSuAc8ew7k3AEjNbYGb5wNVAbP9964Frg+ErgI3u7sEyuQBmNh84Cdg7hm1ntYa2HmZk6NlTxDmLKwgZPP7KxDnzFZGxGSlBHY0MjPUaUFD+RuBRYAfwgLtvN7PbzOzyoNg9QLmZ1QI3AZGm6OcA28xsK/AQ8Ml4zd0nqky9STdaaVEep1eV8fhr+lhFJL6R6ohWmll7MGzApGDcAHf3KcMt7O4bgA0x026JGu4hznOm3P0HwA9GDn9iOtTew6JFFakO44Sdt7SSb/z6NVo6+5g6OT/V4YhImhltK75Iy73cqOFhk5MkxsCg88aRXmaWZt5NurH+aGkl7vC711TNJyJvN1IVn6SZpo5eBgY946v4AFbOLaOiuIBfvnwo1aGISBpSgsowx3qRKJ2U4khOXChkXHjydB5/pZG+fjU3F5G3UoLKMMfugcqCMyiAi5bPoKO3n6d3q3dzEXkrJagME+lFYkYWXIMCeNfiCibl5fCYqvlEJIYSVIbJxEe9D6cwL4dzl1Twqx2HcFeXiyLyJiWoDNPQ1pNxj3ofyUXLZ3CwrYft9e0jFxaRCUMJKsM0ZOiDCodzwbLphAy15hORt1CCyjDZmKDKiwtYPX8qv1KCEpEoSlAZ5lBbDzOypAVftIuWz+Dlg+3UtXSlOhQRSRNKUBnkSM9ROvsGsqaJebQLT54BoLMoETlGCSqDvHmTbvYlqIWVxSyZXswvXmpIdSgikiaUoDJI5CbdbKziA7hsxWye3dt8LBGLyMSmBJVBIgfuWVl4BgVw2cpZuMPPXzyY6lBEJA0oQWWQQ1l+BrWosphTZk/h4W2xD14WkYlICSqDNLT3UFaUR2FeTqpDSZjLVsxm6/5W9jerNZ/IRKcElUEa2jL/SbojuWzFLAAefkFnUSITnRJUBmloz857oKJVTSviHfPKeGSbrkOJTHRKUBmkoa0368+gAN63YjYvH2yn9o2OVIciIimkBJUhjg4McrizNyvvgYr13hWzMINHVM0nMqEpQWWIN4704p6dN+nGmjGlkDMXTGP9tno9gkNkAlOCyhANbd1A9jxJdyTvP30Ouxs7ee711lSHIiIpktAEZWYXm9krZlZrZjfHmV9gZvcH858xs+pg+kVmtsXMXgz+XpDIODNBQ1svkL33QMW6bOVsivJzeGDT/lSHIiIpkrAEZWY5wF3AJcBy4BozWx5T7Hqgxd0XA3cAtwfTm4D3uftpwLXADxIVZ6aIdHM0Ear4AIoLcnnvabN45IV6Onv7Ux2OiKRAIs+g1gC17r7b3fuA+4B1MWXWAd8Lhh8E1pqZufvz7h65Qr4dKDSz7HjG+XE61N5Dfm6IqUV5qQ4laa46o4rOvgF+/oKanItMRIlMUHOA6PqZumBa3DLu3g+0AeUxZT4IPO/uvbEbMLMbzGyzmW1ubGwct8DTUeQmXbPsedT7SFbPn8qiysncv1nVfCITUSITVLwjaWyTrGHLmNkphKv9/jzeBtz9bnevcfeaysrK4w40E9S1dDGnbFKqw0gqM+OqM6rYsq+F2jeOpDocEUmyRCaoOqAqanwuEHtjy7EyZpYLlALNwfhc4CHgo+6+K4FxZoS6lm7mTp1YCQrgj1fNJTdkPLC5LtWhiEiSJTJBbQKWmNkCM8sHrgbWx5RZT7gRBMAVwEZ3dzMrA34OfN7dn0xgjBmh5+gAbxzpZe7UolSHknQVxQWsPXk6//FcHX39g6kOR0SSKGEJKrimdCPwKLADeMDdt5vZbWZ2eVDsHqDczGqBm4BIU/QbgcXA35nZ1uA1PVGxprv61vA9UBPxDArg6jPm0dTRxy9f1tN2RSaS3ESu3N03ABtipt0SNdwDXBlnuX8A/iGRsWWSupZwgqqaNvHOoADOW1rJ/PIi/vXJvVy2YnaqwxGRJFFPEhlgf0v42UgT9QwqJ2Rcd3Y1W/a1sHW/epYQmSiUoDJAXUs3uSGbML1IxHNlTRUlBbnc+8SeVIciIkmiBJUB6lq6mV02iZzQxLkHKlZxQS5XnVHFhhcPcjDol1BEspsSVAaoa+miatrErN6Ldu3Z1Qy68/2n9qU6FBFJAiWoDLC/uZu5ZROzgUS0qmlFvOeUmfz7M6/T1af++USynRJUmus5OkBTR++EbSAR62PnLKCt+yg/fe5AqkMRkQRTgkpzkSbmc1XFB0DN/KmsrCrj24/v0o27IllOCSrN1QVNzKsmYC8S8ZgZn1m7hLqWbn76nLo/EslmSlBpbn/kDEoJ6pjzT6pkZVUZd26s1VmUSBZTgkpzdS1d5OUY00sm9OOw3sLM+MyFSzjQ2s2DW3QWJZKtlKDSXF1LN3PKJhGawPdAxXP+0kpOryrjrt/oLEokWylBpbm6lu4J2wffcMyMv7poKQdau/nJFj3QUCQbKb5b8WAAABLWSURBVEGluQMtXWpiPoTzllTwjnll3LWxlp6jA6kOR0TGmRJUGuvq66epo08NJIZgZnzu4mXUt/Xwnd/tTnU4IjLOlKDS2IGWif0cqNE4a2E5l5w6k3/57S4a2npSHY6IjCMlqDRWpwQ1Kl+49GQG3Ln9v3amOhQRGUdKUGlMN+mOTtW0Ij5+7gIeev4AW/a1pDocERknSlBpbH9LN/m5ISqKdQ/USD55/mKmlxRw28PbGRz0VIcjIuNACSqN1bV0MVf3QI3K5IJcPnfxMrbVtXHfJjU7F8kGSlBprK6lmzm6/jRqH3jHHN65sJyvbNjBgVY91FAk0ylBpTHdpDs2oZDx1StWMOjOzT99AXdV9YlksoQmKDO72MxeMbNaM7s5zvwCM7s/mP+MmVUH08vN7Ddm1mFmdyYyxnTV1nWU5s4+5ilBjUnVtCJuvmQZv3+tiQc2q6pPJJMlLEGZWQ5wF3AJsBy4xsyWxxS7Hmhx98XAHcDtwfQe4O+AzyYqvnS3s6EdgGUzS1IcSeb5yJnzOWvhNP7hkR0cbFNVn0imSuQZ1Bqg1t13u3sfcB+wLqbMOuB7wfCDwFozM3fvdPcnCCeqCWlnwxEATp41JcWRZJ5QyPjqB1fSP+jcdP82BtSqTyQjJTJBzQGi61jqgmlxy7h7P9AGlCcwpoyxs6GdqUV5eszGcZpXXsRt607hqd2HueOxV1Mdjogch0QmqHhto2N/yo6mzNAbMLvBzDab2ebGxsYxBZfudhw8wrKZUzBTE/PjdWVNFVfVVHHnb2rZuPNQqsMRkTFKZIKqA6qixucC9UOVMbNcoBRoHu0G3P1ud69x95rKysoTDDd9DAw6rzQcYdksXX86UV9adwrLZ03hr+7fxv7mrlSHIyJjkMgEtQlYYmYLzCwfuBpYH1NmPXBtMHwFsNHVNpjXm7voPjrAyTN1/elEFebl8M2PrGLQnU/+6Dm6+vpTHZKIjFLCElRwTelG4FFgB/CAu283s9vM7PKg2D1AuZnVAjcBx5qim9le4OvAdWZWF6cFYNbaeTBowaczqHExv3wyd3zodLbXt/EXP36e/gE9gVckE+QmcuXuvgHYEDPtlqjhHuDKIZatTmRs6WxHwxFCBktnKEGNlwuXz+BL607l7/7zJf7uZ9v5ygdO1fU9kTSX0AQlx2fnwXYWVEymMC8n1aFklT89az4HW7v5l9/uYnZpIZ9euyTVIYnIMJSg0tDOhiOcNrc01WFkpb9+z0k0tPfwT4+9ypRJeVx7dnWqQxKRIShBpZmO3n5eb+7iQzVzUx1KVjIzbv/gCjp6+vni+u309Q/y8fMWpjosEYlDncWmmVeCHiSWqQVfwuTlhLjrw6t474pZfHnDDu7c+FqqQxKROHQGlWaO9cGnFnwJlZcT4htXnU5BToiv/fJVjvT287n3LNOzt0TSiBJUmtl58AglBbnMKdNzoBItNyfEP165kkn5OXz78d3saezkjqtOZ3KB/i1E0oGq+NLMzoZ2ls0qURPoJMkJGf/w/lO55bLl/GrHIa741lN62KFImlCCSiPuzs6gDz5JHjPjY+cs4N7rzqCuuYt1dz7Bb195I9VhiUx4SlBp5EBrN0d6+3X9KUXOP2k6D33qbMonF3Ddv27itodfprd/INVhiUxYSlBpZHu9HlKYaounl/CzG9/FdWdXc++Te3j/XX9ge31bqsMSmZCUoNLIxh1vUFyQyymzdZNuKhXm5XDr5adwz7U1NB7p4X3//AR//8jLdPSqo1mRZFKCShP9A4P88uUG1p48XV0cpYm1J8/g1zedzzVr5nHvk3u46OuP8/C2egb1hF6RpFCCShPP7Gmmpesol5w6K9WhSJTSojy+/IHT+On/OJuyonw+/ePnufyuJ/jdq43oyTAiiaUElSY2vHiQovwczj8pex68mE1WzZvKI58+h69/aCWtXUf56L3Pcs13nua3r7yhRCWSILojMQ0MDDqPbm/gvy1T9V46ywkZf7xqLu9dMYsfP/M633x8F9f96yaWzSzh4+cu5LKVsyjI1ecnMl50BpUGNu1tpqmjj0tVvZcRCnJzuO5dC/j931zA165ciTv8z59s48yv/JrbHn6ZVw8dSXWIIllBZ1Bp4L9eaqAgN6TqvQyTnxviitVz+eCqOTxR28R9z+7nB0/v5d4n97BibimXrZjFpafNYu7UolSHKpKRlKBSbHDQ+cVLBzn/pEr1AZehzIxzl1Ry7pJKDnf08tDzB1i/rZ6vbNjJVzbsZGVVGWuXTeeCZdNZPmuKOqQVGSUdEVPs+f0tHGrv5dLTVL2XDcqLC/izcxfyZ+cuZN/hTn7+4kEe3X6IO371Kl9/7FUqSwo4e1E5Zy0Mv6rLi9TvosgQlKBS7KHnD5CfE+KCZdNTHYqMs/nlk/nk+Yv55PmLaero5fFXGvntq438Yddhfra1HoCK4nxOryrjHfOmsnJuGSfPKqG8uCDFkYukByWoFPqvlxr44dOvc82aKkoK81IdjiRQRXEBH1w9lw+unou7s7upk6d3H2bLvha27m/lVzve7Jx2xpQCTp41haUzSlhcWcyi6cUsqpxMWVF+Ct+BSPIpQaXIy/Xt/NX9Wzm9qowvvu+UVIcjSWRmLKosZlFlMR8+cz4AbV1HefFAGzsOtrPjYDsvH2znD7sO09c/eGy5KYW5zC+fzLzyIuaWTWLO1EnMLp3EzNJCZkwppHxyvq5vSVZJaIIys4uBbwA5wHfd/f/EzC8Avg+sBg4DV7n73mDe54HrgQHgL9z90UTGmkxNHb18/PubKZ2Ux91/ulr3PgmlRXmcs6SCc5ZUHJs2MOjsb+6i9o0O9h7uZN/hLvYe7mT7gTYe236IvoHBt6wjN2RUFBdQUZIf/ltcwLTJ+Uwtymfa5DxKJ+VTOimP0kl5TJmUS0lhHsUFueQoqUmaSliCMrMc4C7gIqAO2GRm69395ahi1wMt7r7YzK4GbgeuMrPlwNXAKcBs4FdmttTdM/rZBy2dffzmlTe454k9HO7s5Sd/fjbTpxSmOixJUzkho7piMtUVk982b3DQaers5UBLN4faeznU3kNDew+NR3pp6gi/Xmk4QnNnH739g3HW/qbiglwmF+QwuSCX4oJcivJzmJyfy6T8HIryc5iUl0Nhfg6FuTkU5uVQkBs69jc/N3Tsb35uiPyc8N+8nBB5OUZeTojcnBB5ISM3J0RujpEXCpETMvJyTA1EZFiJPINaA9S6+24AM7sPWAdEJ6h1wK3B8IPAnRb+xq4D7nP3XmCPmdUG63sqUcH+6Jl97GnsPKF1xHZ40z8wSFffAN1HBzjY1sPzr7cw6FBZUsA3rn4Hp81Vr+VyfEIhY3pJIdNLhv+B4+50Hx2gubOPtu6jtHUfpb37KO3d/bT3HKW9p58jPUfp6h2go6+fzt5+unoHOHSkh67e8He3++gAPUcH6Dk6fKI7rvdhkBsKEQoFfy2cmHNCIXJCkGNGKGThaWZYMD9k4eQWMggFZY4NW7ga1SAo9+bfyPRj04JhCOYH4xYZD4Y5Ni+cUN8s9+Y6IzMiY5HcG52C35xmxObmt46/uY7YFD5UTreYktHlhvsZcKI/Ek6dU8oVq+ee0DqGksgENQfYHzVeB5w5VBl37zezNqA8mP50zLJzYjdgZjcANwDMmzfvhIL9zc43eGrX4RNaRxDTseGckB37BVpalMen/ttiLjx5BqfNKdW1AkkKM6MoP5ei/FzmTj2xdQ0OOn0Dg8eSVV//IH0DwfBAMB68+gcH6RtwjgbDRwec/oFB+gc9/BoITxv08PhAzKt/0BkcdAb8zb8Dg+Hy7jDozqCHYzo2HDVvYNBxOLbMoIfH3cNJOzIcWSY8Hv6JGR5/63SHY79Ao6dFyh5bLuZXanQ/jX5s2pvLEDUtXrnYn71DdfsYOzneduMuN9T6xtC/ZGdvf0YmqHhH4Nh3PVSZ0SyLu98N3A1QU1NzQj12fvfaM05kcZGsFwoZhaEcXTOVpElkX3x1QFXU+FygfqgyZpYLlALNo1xWRESyWCIT1CZgiZktMLN8wo0e1seUWQ9cGwxfAWz08LnleuBqMyswswXAEuDZBMYqIiJpJmFVfME1pRuBRwk3M7/X3beb2W3AZndfD9wD/CBoBNFMOIkRlHuAcIOKfuBTmd6CT0RExsay5WFrNTU1vnnz5lSHISIiY2RmW9y9Jna6ngclIiJpSQlKRETSkhKUiIikJSUoERFJS1nTSMLMGoF9J7iaCqBpHMJJtEyIMxNiBMU53jIhzkyIESZWnPPdvTJ2YtYkqPFgZpvjtSRJN5kQZybECIpzvGVCnJkQIyhOUBWfiIikKSUoERFJS0pQb3V3qgMYpUyIMxNiBMU53jIhzkyIERSnrkGJiEh60hmUiIikJSUoERFJSxMyQZnZxWb2ipnVmtnNceYXmNn9wfxnzKw6yfFVmdlvzGyHmW03s7+MU+Z8M2szs63B65ZkxhgVx14zezGI4W299VrY/wv25QtmtioFMZ4UtZ+2mlm7mX0mpkxK9qeZ3Wtmb5jZS1HTppnZY2b2WvA37rNwzezaoMxrZnZtvDIJjvMfzWxn8Lk+ZGZlQyw77HckwTHeamYHoj7XS4dYdthjQhLivD8qxr1mtnWIZZOyL4NtxT0OJfX76e4T6kX40R+7gIVAPrANWB5T5pPAt4Lhq4H7kxzjLGBVMFwCvBonxvOBR9Jgf+4FKoaZfynwC8JPST4LeCYNPv8GwjcGpnx/AucBq4CXoqZ9Fbg5GL4ZuD3OctOA3cHfqcHw1CTH+W4gNxi+PV6co/mOJDjGW4HPjuI7MewxIdFxxsz/J+CWVO7LYFtxj0PJ/H5OxDOoNUCtu+929z7gPmBdTJl1wPeC4QeBtWYW7zH0CeHuB939uWD4CLADmJOs7Y+zdcD3PexpoMzMZqUwnrXALnc/0V5HxoW7/47ws9CiRX//vge8P86i7wEec/dmd28BHgMuTmac7v5Ld+8PRp8m/OTrlBliX47GaI4J42a4OIPjzIeAHydq+6M1zHEoad/PiZig5gD7o8brePvB/1iZ4B+wDShPSnQxgurFdwDPxJn9TjPbZma/MLNTkhrYmxz4pZltMbMb4swfzf5OpqsZ+p8/HfYnwAx3PwjhgwQwPU6ZdNuvHyN8phzPSN+RRLsxqIa8d4jqqHTal+cCh9z9tSHmp2RfxhyHkvb9nIgJKt6ZUGxb+9GUSTgzKwZ+CnzG3dtjZj9HuJpqJfDPwH8mO77Au9x9FXAJ8CkzOy9mflrsSwAzywcuB34SZ3a67M/RSqf9+r8IP/n6R0MUGek7kkjfBBYBpwMHCVefxUqbfQlcw/BnT0nflyMch4ZcLM60Me/TiZig6oCqqPG5QP1QZcwsFyjl+KoOjpuZ5RH+UvzI3f8jdr67t7t7RzC8Acgzs4pkxhhsuz74+wbwEOHqkmij2d/JcgnwnLsfip2RLvszcChSDRr8fSNOmbTYr8HF78uAD3tw8SHWKL4jCePuh9x9wN0Hge8Mse102Ze5wB8D9w9VJtn7cojjUNK+nxMxQW0ClpjZguAX9dXA+pgy64FIq5MrgI1D/fMlQlAPfQ+ww92/PkSZmZHrYma2hvBneThZMQbbnWxmJZFhwhfNX4opth74qIWdBbRFqgdSYMhfp+mwP6NEf/+uBX4Wp8yjwLvNbGpQbfXuYFrSmNnFwOeAy929a4gyo/mOJDLG6OudHxhi26M5JiTDhcBOd6+LNzPZ+3KY41Dyvp/JaA2Sbi/CLcteJdxy538F024j/I8GUEi4GqgWeBZYmOT4ziF8OvwCsDV4XQp8AvhEUOZGYDvhFkdPA2enYD8uDLa/LYglsi+j4zTgrmBfvwjUpOgzLyKccEqjpqV8fxJOmAeBo4R/dV5P+Hrnr4HXgr/TgrI1wHejlv1Y8B2tBf57CuKsJXydIfIdjbR8nQ1sGO47ksQYfxB8714gfGCdFRtjMP62Y0Iy4wym/1vk+xhVNiX7MtjeUMehpH0/1dWRiIikpYlYxSciIhlACUpERNKSEpSIiKQlJSgREUlLSlAiIpKWlKBERCQtKUGJiEhaUoISyRBm9n4z+46Z/czM3p3qeEQSTTfqimSYoOuYr7n79amORSSRdAYlknn+lnD3USJZLTfVAYjI25lZ5LEfFcAywn0a3ka4n8hfePAgOZFspgQlkmbMrJDwIxc+6u7PmtnfE05MzcBHgVIzW+zu30plnCKJpgQlkn4uJPzcqmeD8ReAi939r4FvpC4skeTSNSiR9HMq4UdERKwi/MRfkQlFZ1Ai6ecwcAGAmS0l/JTVs1MakUgKqJm5SJoxs2LCD7VbADQBN6lRhExESlAiIpKWdA1KRETSkhKUiIikJSUoERFJS0pQIiKSlpSgREQkLSlBiYhIWlKCEhGRtKQEJSIiaen/A+M59Rea1JJqAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior_sigma2_invgammas.plot()\n", "decorate(xlabel='$\\sigma^2$',\n", " ylabel='PDF',\n", " title='Posterior distribution of variance')" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5.002242322922353" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sigmas = np.sqrt(sigma2s)\n", "posterior_sigma_invgammas = Pmf(ps, sigmas)\n", "posterior_sigma_invgammas.normalize()" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "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HXfnjem/oPyD28nOzibr2r+SqeIkaSD1tqBm3Qxr3+/aZR48Es760V5PvnDhQhYvXswhhxzCySefzNy5cznjjDO49tpr2bZtGwUFBTz++ONcfPHFrF69mrvuuot33nmHoqIiTj/9dI455hggen2/t956CzPjt7/9LXfffTc/+clPAPj000959dVXWbJkCSeeeCIzZszg7rvv5rzzzuO5557j3HPPBWDgwIG8+eabfOc73+HKK69k7ty51NXVceSRR3LdddeRm5vLn//8Z3r06EFVVRUnnHACkydP1oVsE4S7M/eJeylf+u+05PYm99oXMF2iSNKEtqDiYMyYMQwYMIBIJMKxxx7LihUryMzMZNKkSTzzzDO7LiY7ZcoU5s2bx2mnnUbv3r3Jysriwgsv3LWcyspKJk6cyMiRI7nnnntYvHjxrnFnnXUWWVlZjBw5kubm5l1XcR85ciQrVqzYNd3kyZN3DR87dixFRUWUlpaSm5tLdXU17s6tt97K0UcfzYQJE1i1atWuLTUJl7sz58n/ZdTiu/CcYvKue0nFSdJK6m1B7cOWTrzk5Pz91m0ZGRk0NTUB0ftC3XvvvfTu3ZvRo0dTVFTU4W06brjhBm688UYmT57M7Nmzd7vZ4c51RCIRsrKydm3xRCKRXetrPV1srp3TTZs2jQ0bNrBgwQKysrIoKyujrq7uwBtBDljFX2dw3Ps/IJKVR861L2E9B4UdSaRbaQuqG40fP5533nmH//3f/911E8MxY8bw2muvsXnzZpqampgxY8au6Wtqaujfvz8Av//97+OSqaamhr59+5KVlcWrr77K559/Hpf1yL756L35DJ77PbIzjJypL2C9h4QdSaTbqUB1o4yMDM455xxmzZrFOeecA0D//v259dZbGTt2LBMmTGDEiBG7btNxxx13cOGFF3LKKadQUlISl0yXXXYZFRUVlJeXM23aNI444oi4rEf23ppVK8l66tuUsJnIJX/ESoeFHUkkFLrdRgLYeZuOpqYmzjvvPK666irOO++8sGPtJtnbOFnU1tbyyS/P47iGedSdeQ+5J00NO5JI3LV3uw1tQSWAO+64g2OPPZajjjqKIUOG7DoDT9JLS0sLFb//Psc1zGPb0VeqOEnaS72TJJLQj3/847AjSAJY8NITnLDhEbb1GkHBFL0mRFJmCyrZdlUmE7Vt/K364jP6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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior_sigma_grid.make_cdf().plot(color='gray', label='grid')\n", "posterior_sigma_invgammas.make_cdf().plot(color='C1', label='invgamma')\n", "\n", "decorate(xlabel='$\\sigma$',\n", " ylabel='PDF',\n", " title='Posterior distribution of standard deviation')" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.0978773059173537, 2.0974647660359413)" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior_sigma_invgammas.mean(), posterior_sigma_grid.mean()" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.3514983795094244, 0.35127637938193573)" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior_sigma_invgammas.std(), posterior_sigma_grid.std()" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.3244428422615251" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2 / np.sqrt(2 * (n-1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Posterior distribution of mu" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "from scipy.stats import t as student_t\n", "\n", "def make_student_t(df, loc, scale):\n", " return student_t(df, loc=loc, scale=scale)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "df = 2 * alpha_n\n", "precision = alpha_n * kappa_n / beta_n\n", "dist_mu = make_student_t(df, m_n, 1/np.sqrt(precision))" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "9.640249062837732" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dist_mu.mean()" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.47568829997952805" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dist_mu.std()" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.4472135954999579" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.sqrt(4/n)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "24.980970615100787" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mus = np.linspace(8, 12, 101)\n", "ps = dist_mu.pdf(mus)\n", "posterior_mu_student = Pmf(ps, mus)\n", "posterior_mu_student.normalize()" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior_mu_student.plot()\n", "decorate(xlabel='$\\mu$',\n", " ylabel='PDF',\n", " title='Posterior distribution of mu')" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior_mu_grid.make_cdf().plot(color='gray', label='grid')\n", "posterior_mu_student.make_cdf().plot(label='invgamma')\n", "decorate(xlabel='$\\mu$',\n", " ylabel='CDF',\n", " title='Posterior distribution of mu')" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "def make_posterior_mu(m_n, kappa_n, alpha_n, beta_n):\n", " df = 2 * alpha_n\n", " loc = m_n\n", " precision = alpha_n * kappa_n / beta_n\n", " dist_mu = make_student_t(df, loc, 1/np.sqrt(precision))\n", " return dist_mu" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Posterior joint distribution" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [], "source": [ "mu_mesh, sigma2_mesh = np.meshgrid(mus, sigma2s)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "joint = (dist_sigma2.pdf(sigma2_mesh) * \n", " norm(m_n, sigma2_mesh/kappa_n).pdf(mu_mesh))\n", "joint_df = pd.DataFrame(joint, columns=mus, index=sigma2s)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from utils import plot_contour\n", "\n", "plot_contour(joint_df)\n", "decorate(xlabel='$\\mu$',\n", " ylabel='$\\sigma^2$',\n", " title='Posterior joint distribution')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Sampling from posterior predictive" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "sample_sigma2 = dist_sigma2.rvs(1000)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "sample_mu = norm(m_n, sample_sigma2 / kappa_n).rvs()" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "sample_pred = norm(sample_mu, np.sqrt(sample_sigma2)).rvs()" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "cdf_pred = Cdf.from_seq(sample_pred)\n", "cdf_pred.plot()" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(9.516734504437707, 4.577270204875544)" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_pred.mean(), sample_pred.var()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Analytic posterior predictive" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "df = 2 * alpha_n\n", "precision = alpha_n * kappa_n / beta_n / (kappa_n+1)\n", "dist_pred = make_student_t(df, m_n, 1/np.sqrt(precision))" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "xs = np.linspace(2, 16, 101)\n", "ys = dist_pred.cdf(xs)\n", "\n", "plt.plot(xs, ys, color='gray', label='student t')\n", "cdf_pred.plot(label='sample')\n", "\n", "decorate(title='Predictive distribution')" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [], "source": [ "def make_posterior_pred(m_n, kappa_n, alpha_n, beta_n):\n", " df = 2 * alpha_n\n", " loc = m_n\n", " precision = alpha_n * kappa_n / beta_n / (kappa_n+1)\n", " dist_pred = make_student_t(df, loc, 1/np.sqrt(precision))\n", " return dist_pred" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Multivariate normal" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Generate data" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[[4, 1.7999999999999998], [1.7999999999999998, 9]]" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean = [10, 20]\n", "\n", "sigma_x = 2\n", "sigma_y = 3\n", "rho = 0.3\n", "cov = rho * sigma_x * sigma_y \n", "\n", "Sigma = [[sigma_x**2, cov], [cov, sigma_y**2]]\n", "Sigma" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 9.09443543, 17.71994515],\n", " [16.44233547, 23.6472648 ],\n", " [12.01135574, 24.03660932],\n", " [ 9.0748985 , 21.66032914],\n", " [13.11185908, 18.83369963],\n", " [13.63682486, 21.49850919],\n", " [ 8.24152444, 22.92781604],\n", " [13.56010439, 29.07263218],\n", " [11.65768605, 20.22149536],\n", " [ 9.63956732, 16.85039916],\n", " [ 9.31995128, 15.62154768],\n", " [ 7.95094601, 14.22500863],\n", " [ 8.72949594, 20.7225257 ],\n", " [10.01041019, 21.53598675],\n", " [10.2989316 , 16.31756551],\n", " [ 7.95686713, 18.08908348],\n", " [ 6.84997664, 16.56372388],\n", " [ 8.88606479, 18.42782995],\n", " [10.0890154 , 21.17141536],\n", " [11.62347859, 17.63973527]])" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from scipy.stats import multivariate_normal\n", "\n", "n = 20\n", "data = multivariate_normal(mean, Sigma).rvs(n)\n", "data" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "20" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n = len(data)\n", "n" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([10.40928644, 19.83915611])" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xbar = np.mean(data, axis=0)\n", "xbar" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 5.77766323, 4.71029497],\n", " [ 4.71029497, 12.38587614]])" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "S = np.cov(data.transpose())\n", "S" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1. , 0.55681205],\n", " [0.55681205, 1. ]])" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.corrcoef(data.transpose())" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([2.40367702, 3.51935735])" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stds = np.sqrt(np.diag(S))\n", "stds" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1. , 0.55681205],\n", " [0.55681205, 1. ]])" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corrcoef = S / np.outer(stds, stds)\n", "corrcoef" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [], "source": [ "def unpack_cov(S):\n", " stds = np.sqrt(np.diag(S))\n", " corrcoef = S / np.outer(stds, stds)\n", " return stds[0], stds[1], corrcoef[0][1]" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.4036770231837497, 3.519357348098385, 0.5568120515289984)" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sigma_x, sigma_y, rho = unpack_cov(S)\n", "sigma_x, sigma_y, rho" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [], "source": [ "def pack_cov(sigma_x, sigma_y, rho):\n", " cov = sigma_x * sigma_y * rho\n", " return np.array([[sigma_x**2, cov], [cov, sigma_y**2]])" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 5.77766323, 4.71029497],\n", " [ 4.71029497, 12.38587614]])" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pack_cov(sigma_x, sigma_y, rho)" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 5.77766323, 4.71029497],\n", " [ 4.71029497, 12.38587614]])" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "S" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Update\n", "\n" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [], "source": [ "m_0 = 0\n", "Lambda_0 = 0\n", "nu_0 = 0\n", "kappa_0 = 0" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([10.40928644, 19.83915611])" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m_n = (kappa_0 * m_0 + n * xbar) / (kappa_0 + n)\n", "m_n" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([10.40928644, 19.83915611])" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xbar" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[108.35324426, 206.51145873],\n", " [206.51145873, 393.59211512]])" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "diff = (xbar - m_0)\n", "D = np.outer(diff, diff)\n", "D" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 5.77766323, 4.71029497],\n", " [ 4.71029497, 12.38587614]])" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Lambda_n = Lambda_0 + S + n * kappa_0 * D / (kappa_0 + n)\n", "Lambda_n" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 5.77766323, 4.71029497],\n", " [ 4.71029497, 12.38587614]])" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "S" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "20" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nu_n = nu_0 + n\n", "nu_n" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "20" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "kappa_n = kappa_0 + n\n", "kappa_n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Posterior distribution of covariance" ] }, { "cell_type": "code", "execution_count": 171, "metadata": {}, "outputs": [], "source": [ "from scipy.stats import invwishart\n", "\n", "def make_invwishart(nu, Lambda):\n", " d, _ = Lambda.shape\n", " return invwishart(nu, scale=Lambda * (nu - d - 1))" ] }, { "cell_type": "code", "execution_count": 172, "metadata": {}, "outputs": [], "source": [ "d, _ = Lambda_n.shape\n", "dist_cov = make_invwishart(nu_n, Lambda_n)" ] }, { "cell_type": "code", "execution_count": 173, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 5.77766323, 4.71029497],\n", " [ 4.71029497, 12.38587614]])" ] }, "execution_count": 173, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dist_cov.mean()" ] }, { "cell_type": "code", "execution_count": 174, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 5.77766323, 4.71029497],\n", " [ 4.71029497, 12.38587614]])" ] }, "execution_count": 174, "metadata": {}, "output_type": "execute_result" } ], "source": [ "S" ] }, { "cell_type": "code", "execution_count": 143, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 5.81000089, 4.7394038 ],\n", " [ 4.7394038 , 12.300728 ]])" ] }, "execution_count": 143, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_Sigma = dist_cov.rvs(1000)\n", "np.mean(sample_Sigma, axis=0)" ] }, { "cell_type": "code", "execution_count": 144, "metadata": {}, "outputs": [], "source": [ "res = [unpack_cov(Sigma) for Sigma in sample_Sigma]" ] }, { "cell_type": "code", "execution_count": 145, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.372638486161004, 3.4544464468669758, 0.5493478198611451)" ] }, "execution_count": 145, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_sigma_x, sample_sigma_y, sample_rho = np.transpose(res)\n", "sample_sigma_x.mean(), sample_sigma_y.mean(), sample_rho.mean()" ] }, { "cell_type": "code", "execution_count": 146, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.4036770231837497, 3.519357348098385, 0.5568120515289984)" ] }, "execution_count": 146, "metadata": {}, "output_type": "execute_result" } ], "source": [ "unpack_cov(S)" ] }, { "cell_type": "code", "execution_count": 149, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "Cdf.from_seq(sample_sigma_x).plot(label=r'$\\sigma_x$')\n", "Cdf.from_seq(sample_sigma_y).plot(label=r'$\\sigma_y$')\n", "\n", "decorate(xlabel='Standard deviation',\n", " ylabel='CDF',\n", " title='Posterior distribution of standard deviation')" ] }, { "cell_type": "code", "execution_count": 150, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "Cdf.from_seq(sample_rho).plot()\n", "\n", "decorate(xlabel='Coefficient of correlation',\n", " ylabel='CDF',\n", " title='Posterior distribution of correlation')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Evaluate the Inverse Wishart PDF" ] }, { "cell_type": "code", "execution_count": 186, "metadata": {}, "outputs": [], "source": [ "num = 41\n", "sigma_xs = np.linspace(1, 5, num)" ] }, { "cell_type": "code", "execution_count": 187, "metadata": {}, "outputs": [], "source": [ "sigma_ys = np.linspace(2, 6, num)" ] }, { "cell_type": "code", "execution_count": 188, "metadata": {}, "outputs": [], "source": [ "rhos = np.linspace(-0.3, 0.9, num)" ] }, { "cell_type": "code", "execution_count": 189, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "sigma_x sigma_y rho \n", "1.0 2.0 -0.30 0\n", " -0.27 0\n", " -0.24 0\n", " -0.21 0\n", " -0.18 0\n", "dtype: int64" ] }, "execution_count": 189, "metadata": {}, "output_type": "execute_result" } ], "source": [ "index = pd.MultiIndex.from_product([sigma_xs, sigma_ys, rhos],\n", " names=['sigma_x', 'sigma_y', 'rho'])\n", "joint = Pmf(0, index)\n", "joint.head()" ] }, { "cell_type": "code", "execution_count": 190, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.006027909520828536" ] }, "execution_count": 190, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dist_cov.pdf(S)" ] }, { "cell_type": "code", "execution_count": 191, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15.007672345948537" ] }, "execution_count": 191, "metadata": {}, "output_type": "execute_result" } ], "source": [ "for sigma_x, sigma_y, rho in joint.index:\n", " Sigma = pack_cov(sigma_x, sigma_y, rho)\n", " joint.loc[sigma_x, sigma_y, rho] = dist_cov.pdf(Sigma)\n", " \n", "joint.normalize()" ] }, { "cell_type": "code", "execution_count": 192, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.2100255750200133, 3.235397388678487, 0.5137761411604952)" ] }, "execution_count": 192, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from utils import pmf_marginal\n", "\n", "posterior_sigma_x = pmf_marginal(joint, 0)\n", "posterior_sigma_y = pmf_marginal(joint, 1)\n", "marginal_rho = pmf_marginal(joint, 2)\n", "\n", "posterior_sigma_x.mean(), posterior_sigma_y.mean(), marginal_rho.mean()" ] }, { "cell_type": "code", "execution_count": 193, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.4036770231837497, 3.519357348098385, 0.5568120515289984)" ] }, "execution_count": 193, "metadata": {}, "output_type": "execute_result" } ], "source": [ "unpack_cov(S)" ] }, { "cell_type": "code", "execution_count": 194, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior_sigma_x.plot(label='$\\sigma_x$')\n", "posterior_sigma_y.plot(label='$\\sigma_y$')\n", "\n", "decorate(xlabel='Standard deviation',\n", " ylabel='PDF',\n", " title='Posterior distribution of standard deviation')" ] }, { "cell_type": "code", "execution_count": 195, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior_sigma_x.make_cdf().plot(color='gray')\n", "posterior_sigma_y.make_cdf().plot(color='gray')\n", "\n", "Cdf.from_seq(sample_sigma_x).plot(label=r'$\\sigma_x$')\n", "Cdf.from_seq(sample_sigma_y).plot(label=r'$\\sigma_y$')\n", "\n", "decorate(xlabel='Standard deviation',\n", " ylabel='CDF',\n", " title='Posterior distribution of standard deviation')" ] }, { "cell_type": "code", "execution_count": 196, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "marginal_rho.make_cdf().plot(color='gray')\n", "\n", "Cdf.from_seq(sample_rho).plot()\n", "\n", "decorate(xlabel='Coefficient of correlation',\n", " ylabel='CDF',\n", " title='Posterior distribution of correlation')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Posterior distribution of mu" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([10.40928644, 19.83915611])" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m_n" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [], "source": [ "sample_mu = [multivariate_normal(m_n, Sigma/kappa_n).rvs()\n", " for Sigma in sample_Sigma]" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(10.417787293315167, 19.808873575990383)" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_mu0, sample_mu1 = np.transpose(sample_mu)\n", "\n", "sample_mu0.mean(), sample_mu1.mean()" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([10.40928644, 19.83915611])" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xbar" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.5383503263225001, 0.7858092840001913)" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_mu0.std(), sample_mu1.std()" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.4472135954999579, 0.6708203932499369)" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2 / np.sqrt(n), 3 / np.sqrt(n)" ] }, { "cell_type": "code", "execution_count": 99, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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zRGmjx7oO4pI37buCTiwBSZ87KinVZyip7ufrQpULysorQJQF0ciPh2pgedvgrQMOOtbvtNIB6J6iE+OtaW0GoBTVKBE/NmdDw018Nk/qPfyENMeVC97f+dBMtJTGTYgxXcUkb5r51tgCTDubN9J5DhUoHpRY3MLy7bs51O5o3xHEenbCl6A8edCf/WFeaLS06N/3ZgKVC96aUMpjc2ORdNG+I4i0ndVFELZ5o+alkt46RxUL1pWsJ/UpAQ1MRfxKe+PwXTSBced7Wf/vZFNe6p6dNUzsgbx00tndjrfokWL+P3vf8+0adMoLy9n4cKkvh8AAA9QSURBVMKFbNiw4bjvqa2t5XOf+xwlJSU0Nzfz4x//mKuuuopPf/rTFBcXU19fz4033sh1111HYWEhS5YsYcGCBSxfvpw5c+bwla98hZ/+9Kfs37+fRx55hPnz538035lnnsnq1auZOnUqDz74IGlpaUet++GHH+auu+6ioaGBM888k3vuuYfExMST+qxAe1C9prnF8dbWMj42NZOEBDVjFfGicje8/18w49OQOc13mg5t27aNKVOmALBu3Tpyc3M7fc9LL71EVlYWa9euZcOGDSxZsgSAP/7xj+Tn55OXl8ddd91FeXn5R+u48cYbWbduHQUFBfz5z3/m7bff5t///d/5xS9+8dFyt2zZwnXXXce6desYNGgQ99xzz1Hr3bx5M48//jjvvPMOa9asITExkUceeaRHPgftQfWSv67ezYGaBj4993gduotIVK1/AhoPw3nf73TWruzpRENRURFjxowhISHYf1i3bh2zZ8+mtraW66+/npSUFBYtWsQXv/jFo96Xm5vLzTffzC233MIll1zCeeedB8Bdd93FM888A0BxcTFbt25l1KhRTJgw4aPCN3PmTBYvXoyZkZubS2Fh4UfLzc7O5txzzwXgmmuu4a677uLmm2/+6PXXXnuN/Px8zjjjDADq6uoYMaJnTmOoQPWCpuYW7nyxgFPHDeHiWWogIeJFcyO8fy+MnhvqkXPXrFnD7Nl/z5efn89VV13F008/zZVXXsmll17KVVdddUyBmjp1Kvn5+SxdupTbbruNiy66iI997GO8+uqrvPfee6SlpbFo0aKP+hlMTU396L0JCQkfPU5ISKCpqemj19peXNv2sXOOa6+9ljvvvLNnPoBWdIivF7z5QRkHao7w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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "Cdf.from_seq(sample_mu0).plot(label=r'$\\mu_0$ sample')\n", "Cdf.from_seq(sample_mu1).plot(label=r'$\\mu_1$ sample')\n", "\n", "decorate(xlabel=r'$\\mu$',\n", " ylabel='CDF',\n", " title=r'Posterior distribution of $\\mu$')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Multivariate student t\n", "\n", "Let's use [this implementation](http://gregorygundersen.com/blog/2020/01/20/multivariate-t/)" ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [], "source": [ "from scipy.special import gammaln\n", "\n", "def multistudent_pdf(x, mean, shape, df):\n", " return np.exp(logpdf(x, mean, shape, df))\n", "\n", "def logpdf(x, mean, shape, df):\n", " p = len(mean)\n", " vals, vecs = np.linalg.eigh(shape)\n", " logdet = np.log(vals).sum()\n", " valsinv = np.array([1.0/v for v in vals])\n", " U = vecs * np.sqrt(valsinv)\n", " dev = x - mean\n", " maha = np.square(dev @ U).sum(axis=-1)\n", "\n", " t = 0.5 * (df + p)\n", " A = gammaln(t)\n", " B = gammaln(0.5 * df)\n", " C = p/2. * np.log(df * np.pi)\n", " D = 0.5 * logdet\n", " E = -t * np.log(1 + (1./df) * maha)\n", "\n", " return A - B - C - D + E\n" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.4530003997972322" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d = len(m_n)\n", "x = m_n\n", "mean = m_n\n", "df = nu_n - d + 1\n", "shape = Lambda_n / kappa_n\n", "multistudent_pdf(x, mean, shape, df)" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [], "source": [ "mu0s = np.linspace(8, 12, 91)\n", "mu1s = np.linspace(18, 22, 101)" ] }, { "cell_type": "code", "execution_count": 103, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(101, 91, 2)" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mu_mesh = np.dstack(np.meshgrid(mu0s, mu1s))\n", "mu_mesh.shape" ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [], "source": [ "ps = multistudent_pdf(mu_mesh, mean, shape, df)" ] }, { "cell_type": "code", "execution_count": 105, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "549.2874162564223" ] }, "execution_count": 105, "metadata": {}, "output_type": "execute_result" } ], "source": [ "joint = pd.DataFrame(ps, columns=mu0s, index=mu1s)\n", "normalize(joint)" ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 106, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdd3iUxdrA4d+k9x5CSKcTOoQO0jtIEcSOWLAesZdjPRYUu6hHxV5QRHqTHiB0EiAQEhIgpPfey+7O9wfhHD4PyLslJMDc18VFstmZnYSwzzvzzjyPkFKiKIqiKM2NVVMPQFEURVEuRgUoRVEUpVlSAUpRFEVpllSAUhRFUZolFaAURVGUZkkFKEVRFKVZumyAEkIECSEihRAJQogTQoh5DY+/J4Q4KYQ4JoRYKYTwuET7cUKIRCHEaSHE85b+BhRFUZRrk7jcOSghhD/gL6U8LIRwBWKAqUAgsF1KqRNCLACQUj73l7bWQBIwGsgADgG3SinjLf6dKIqiKNeUy86gpJTZUsrDDR+XAwlAgJRys5RS1/C0/ZwLWH/VFzgtpUyWUtYBS4Aplhm6oiiKci2zMebJQohQoCdw4C9fugf4/SJNAoD0Cz7PAPpdou+5wFwAZ2fn3h07djRmaIqiKEozERMTUyCl9DW3H80BSgjhAiwHHpdSll3w+IuADlh8sWYXeeyia4pSykXAIoCIiAgZHR2tdWiKoihKMyKESLVEP5oClBDClnPBabGUcsUFj88GJgEj5cVvZmUAQRd8HghkmT5cRVEU5XqhZRefAL4FEqSUH17w+DjgOeBGKWXVJZofAtoJIcKEEHbALcAa84etKIqiXOu0nIMaBNwJjBBCHG34MwH4DHAFtjQ89iWAEKKVEGIDQMMmikeBTZzbXLFUSnmiMb4RRVEU5dpy2SU+KeVuLn4vacMlnp8FTLjg8w2Xeq6iKIqiXIrKJKEoiqI0SypAKYqiKM2SClCKoihKs6QClKIoitIsqQClKIqiNEsqQCmKoijNkgpQiqIoSrOkApSiKIrSLKkApSiKojRLKkApiqIozZIKUIqiKEqzpAKUoiiK0iypAKUoiqI0SypAKYqiKM2SClCKoihKs6QClKIoitIsqQClKIqiNEsqQCmKoijNkgpQiqIoSrOkApSiKIrSLKkApSiKojRLKkApiqIozdJlA5QQIkgIESmESBBCnBBCzGt4fGbD5wYhRMTftE8RQhwXQhwVQkRbcvCKoijKtctGw3N0wFNSysNCCFcgRgixBYgDpgNfaehjuJSywIxxKoqiKNeZywYoKWU2kN3wcbkQIgEIkFJuARBCNO4IFUVRlOuSUfeghBChQE/ggBHNJLBZCBEjhJj7N33PFUJECyGi8/PzjRmWoiiKcg3SHKCEEC7AcuBxKWWZEa8xSErZCxgPPCKEuOFiT5JSLpJSRkgpI3x9fY3oXlEURbkWaQpQQghbzgWnxVLKFca8gJQyq+HvPGAl0NfYQSqKoijXHy27+ATwLZAgpfzQmM6FEM4NGysQQjgDYzi3uUJRFEVR/paWGdQg4E5gRMNW8aNCiAlCiGlCiAxgALBeCLEJQAjRSgixoaGtH7BbCBELHATWSyk3NsL3oSiKolxjtOzi2w1caqveyos8PwuY0PBxMtDdnAEqiqIo1yeVSUJRFEVpllSAUhRFUZolFaAURVGUZkkFKEVRFKVZUgFKURRFaZZUgFIURVGaJS3ZzBVFUZo1nU5PZUUtOp0eKf/7uJ29Dc7O9lhbq2vxq5EKUIqiNGvV1XWkpRSQllJAXk4p+Xll5OWWkZ9XRllZNVUVtdTU1P9tH07O9ri6OuDp7UJAgCetAj1pFehFcKgPbdr6YW2jAlhzpAKUoijNRmVFDSfjs0g4kUlifBYpZ/PJzS75f7MiD09nfP3cCAj0opO7I84uDji72OPsbI+tnTUAAoFEUlerp6K8moqKWirKqyksqCDuWDrbt8T9p08HR1s6hgfQuVsg3XqG0K1HMDY21k3w3St/JeSF//LNREREhIyOVsV3FeVaV1JcSeyRVGJjUjl2NJW0lAKkBCEgONSHsDYtCAnzPfcn1IeW/h7Y2Zt/XV1XpyMnq4Tk07mcOJZB3LF0kk/nYjBIXN0cGXRDe4aP7kz3XqFqedAEQogYKeUlK61r7kcFKEVRrhS93kBCXAb7dp/i4L7TpCSfq/3m6GRHl+5BdO4SSKcuAXTo1ApnF4crOraqylqOxqSwKzKBfVFJVFXV4eXtwpQZEdw4PQIX1ys7nquZClCKolwV6up0xBxMJmrHSQ7sOUVZaTU2NlZ07RFMz4gwuvcKoX1H/2a1rFZbW8/BvafZsOYI0QeScXKyY+LUXkyf1Q8fX9emHl6zpwKUoijNVn29nsOHzrJzezx7dyVSWVGLq6sDfQe2ZcCQ9kT0a4Ozs31TD1OT00k5LF28j53b4rGxseaOe4Yw87b+zSqgNjcqQCmK0uykns3nz7VH2brxOKUlVTi72DPohg4MHRlOrz5hV/WbenZmMV9/vo2oHScJbe3LE89PJLxLYFMPq1lSAUpRlGahurqOyM1xbFwXS8KJTGxsrBgwuD1jJnand9/W2NpevUHpYvZGJfHZB39SkF/OtJv7cu9DI7CzUxuiL2SpAKV+qoqimCQjvYi1K6LZtD6WyopaQsJ8mPvoKEaN64qnl3NTD6/RDBzSnh69Qvj2y0hW/H6QxIQsXnt7Jh6e1+733FTUDEpRFM2klByNSeGPX/dzaP8ZrK2tGDK8I1NuiqBztyCEuFRt02vTzm3xvPvGGry8nXnjvVsIbe3b1ENqFtQSn6IoV4xOp2fntniW/XaA00k5eHo5M3l6byZO6YWXt0tTD69JJcZn8cpzS6mv1/PuJ7fTtkPLph5Sk1MBSlGURldXp2PTuliW/LyHvNwygkK8mXFrf0aN7WqRA7PXiuzMYp5+9Geqqup4d+HttOvg39RDalIqQCmK0mjqanVsWHuEpb/sJT+vnPAugdw6exB9B7TFyur6WsbTKie7hKce/om6Oj2ff3sPLVq6N/WQmowKUIqiWJxOp+fPtUf55fsoigoq6NwtkDvmDKF339bX3f0lU6SlFPCP+78nIMiLj764C3t726YeUpNQAUpRFIsxGCQ7t8Xzw9c7yMoopnO3QO6+fxjde4WowGSk/XtO8fIzvzN6fFeeeenG6/LnZ6kAddksiEKIICFEpBAiQQhxQggxr+HxmQ2fG4QQlxyIEGKcECJRCHFaCPG8uQNWFMWyDkef5eE53zD/1ZXY29vy5nuz+OiL2fToHXpdvrmaq/+gdtx5zxC2/HmcXZEJTT2cq5qWu5w64Ckp5WEhhCsQI4TYAsQB04GvLtVQCGENfA6MBjKAQ0KINVLKePOHriiKOTLSCln02Tb27U6ipb87z786hWGjOqvs3RZw+91D2L/3NJ99sIkevUJx93Bq6iFdlS77myilzJZSHm74uBxIAAKklAlSysTLNO8LnJZSJksp64AlwBRzB60oiukqymv44pPN3Hf7V8QeTuHeB4fz7a8PMXJsVxWcLMTaxopnXpxMRXk1X3++ramHc9Uyap+oECIU6Akc0NgkAEi/4PMMoN8l+p4LzAUIDg42ZliKomggpWTLn8f4+vPtlJVWMXZid+Y8MAxPr+v7HFNjCWvTgmk392XZb/uZPqsvrdv6NfWQrjqaL5eEEC7AcuBxKWWZ1mYXeeyiuzKklIuklBFSyghfX3UaW1EsKfl0Lk8+/BPvvbkW/1YefP7tvTz5wiQVnBrZLXcNwtnFgW++2N7UQ7kqaZpBCSFsORecFkspVxjRfwYQdMHngUCWEe0VRTFDdXUdP32zixVLD+Di4sBT/5zEmAnd1VmmK8TNzZFZdwzk2y+2czoxR2WZMNJlA5Q4t43nWyBBSvmhkf0fAtoJIcKATOAW4DajR6koitGiD5zhk/f+JCerhAk39uTeh0fg5ubY1MP6H9V19aTlFpOeX0JReTXF5VUUV1RTVlmD/vwxmIY68O5ODni6OuLt5oy3qxMhfp6EtvTCphnfO5s0tReLf4hi+e8HeO4VdQveGFpmUIOAO4HjQoijDY/9E7AHPgV8gfVCiKNSyrFCiFbAN1LKCVJKnRDiUWATYA18J6U8YflvQ1GU88pKq/hy4Ra2/HmcoGBvPvj8Trr1DGnqYSGlJKuwjLiUHE6k5JCYkU9aXjG5xRX/81xXR3vcXRywsbKC81vdpaSksobSymouPL5pb2tNuwBfwkP86NsxmIHhoTg0o/IXLq4OjJvUg7UrYpj76KhrOtO7pamDuopyDdkblcTHC9ZTVlrNrDsGcPvdQ5o0Z15WYRn7E1LZF5/C4VOZFFdUA/8NKqF+ngT7eRLSwpPgFh54uTnh4eKIrfWla0jp9AZKKqopKKvkTFYhJ9PzSEjLJTE9n8qaOpzsbRnStTWjerZjUJewZhGszp7JY+6di3jkybFMndGnqYfT6FQmCUVR/qOivIbPP9rE1o3Had3Oj2denEzb9lf+fofBIDl2NovtR04TdfwsqXnFAPh5utC3QzBdw1rSObQlbQN8/jYImUKnNxCTlM6Ww6fYfvQ0JRXVeLg4csfIXtw6vCeOTZx26IG7FmFnb8unX89p0nFcCSpAKYoCnMsE8f6baygsrODWuwZx+91DrmgVWyklh09nsjk6icjY0xSUVmJrY01E+0AGhocyIDyEsJZeVzQrhU5vIDopncXbDrPnRArebk7cP6E/0wZ1wbaJys7/9tMevvsykiVr5uHt49okY7hSVEVdRbnO1dXp+O7LSJYvOUBQiDcLv5pDh/BWV+z1c4vLWbc/gdX74sjIL8XB1oZBXUIZ0aMdQ7qG4eJof8XG8lc21lb07xRC/04hHD2Tyaer9vDOku0s2XGUN2aPpXPolZ9d9unfhu++jCTmYDJjJnS/4q9/NVIzKEW5CqWmFDD/1ZUkn8rlxpsiuP+RkTg4NP4SlsEg2RufwpLIo+xLSEFKiGgfxJSBnRnRo22TL6NdipSSqLizvP3bNgrLqnjhlhFMG9z1io9h1uSP6RkRyguvTbuir32lqRmUolyHpJT8ufYo//5oEw6Odrz53iz6DWrX6K9bUV3L2n3xLNlxlPT8EnzcnblvfD8m9Q8nyNej0V/fXEIIbujamh6tW/HCdxt4Y/FWTmUW8OSMoVdsi7oQgi7dgzlxLOOKvN61QAUoRblKVFfV8fG769m++QQ9I0J57pUpjX4vo6isisXbD/PHzlgqauro1tqfhycPZETPtk12L8ccbs4OfPLwVBaujOKXbYdJyS3mo4duxN72yrwVdukWSFRkAgX5Zfj4ul2R17yaqQClKFeB1JQCXv/nMjLSCrn7/qHcctegRk3sml1Uxs9bYli55zh1Oj2jerbjrtERTXLvxtJsrK14csZQwlp68cbirbz202bemjP+imTXaN/p3D3CM0m5KkBpoAKUojRz2zfH8dGC9Tg42PHOx7fRMyKs0V6roLSSrzccYOWe4yBhYv9OzB4dQWhLr0Z7zaYybXBXSitrWLhqNy29XJk3bUijv2Zo2Lk8o2eT86/I0uzVTgUoRWmmdDo9iz7bxsqlB+nSPYgXX5+Oj2/jLOmVVdbw45Zoftt+BJ3ewJRBnblnXF/8va7tq/zZYyLILirjx83RdAlpychejRs0XFwd8PZxJS21oFFf51qhApSiNENFhRW8+dJyjsemM31WX+5/ZCQ2jXDPp16n5/cdR/l6wwEqamoZF9GRByYNILhF89/4YAlCCJ6+eRgnUnN569etdGvjj69742Z49/N3Jz+ntFFf41qhApSiNDMn4zN57fllVJRX88JrUxkxpovFX+P8tuuPlu0iNa+YgeGhPDZtMO0Dr79SN7bW1rxx9zhum/8Lby3exscPN25C1xZ+biSdzG7U17hWqAClKM3I1o3H+fCddXj7uLLw6zmNUuQuJaeI9/7Ywb74VEL9PFn4yFQGd2m8+1pXg7CWXjw4aSCfrIwiOimdiPZBl29kIk8vF0qKqxqt/2uJClCK0gzo9Qa++zKSpYv30b1XCC+/eRPuHk4WfY3aeh3fbzrE95sOYW9rw1MzhnLzsO4Wz4mnhZSSWr0Oa2GFjZXVFU2DdCm3DO/Bb5FH+Hz1Hr57elajjcnV1YGqylr0ekOj7sS8FqgApShNrLq6jgX/Ws2eXYlMntabh58YY/H7TYcS05n/6zZS84oZF9GBJ2cMxce9ccs+lNXWcqqogMSCAhILC0grLaGwqorC6ioKq6qpM+j/81wrIXC0sSHQzZ1QD09CPDxo7eHJoOAQAlyvzEYNe1sb7hvfl/m/befw6Ux6twtslNdxdjmXAqqqshbXZlifqzlRAUpRmlBRYQWvPLuUpJNZPPz4GKbd3Nei/ZdX1/LRsl2s2htHoI87n/9jOgPCG6c2VGFVFQcy09mbkc7+jDSSi4v/8zUXWztCPT3xdXaho68v3o5OuNnbY5CSer0BvTRQWV9PWkkJp4sK2X72DPUGAwCdfVswMqwNo1q3obNvi0adbU3sH87CVXtYEXW80QLU+YsPnU5/mWcqKkApShNJTSngxSd/o7SkitfeuZmBQ9pbtP/9Cam8/vMW8koqmD0mgrkT++NoZ9lcecnFRfx5OolNp08Rl58HgLOtLX0CApnWsTMdvX3o4ONDgKubUYFFbzCQXFxMZEoyW5JP8+nBfSw8uI/e/q14YfBQevk3TlJcRztbJvfvxLKo4zxTMQwPF8vPcGxszi3r6XQGi/d9rVEBSlGaQNyxdF555ndsbK354N930b6jv8X6rqqp45OVUfyx6xihLb34/plZdA2zXP9Z5WUsTzjB+qREkooKAejV0p+nBwxmYFAwXVr4nauEawZrKyvaeXvTztubub37UFhVxfpTifw7+gAz/viNCW3b8+ygIQS7W347/MR+nfgt8ii7484yqX+4xfs/n5+7Odx3a+5UgFKUK2zPzkTmv7oSXz833v7oVvxbeVqs7/jUHF749k8yCkq4Y2QvHr5xkEUqyuoMBnakJLMk7jg7Us9ikJK+rQJ5dehwxrZpR0uXxs0J6O3kxF3de3JTp858cySaRTGH2JJ8mif6D+KB3n0s+mbfMcgPX3dndsSeaZQAVd+wtHd+JqVcmgpQinIFbVhzhE/e3UD7Tq14871ZFtupZzBIftkWw2er9uDj7syix2fSu73591DKamv5LS6WH44eIbeyghbOzjwU0Zebw7sS5O5ugZEbx9nOjnn9BnJL5268sSuSd/dGkV1RzqtDR2BloSBlZSUY3DWMLdFJGAzS4jn66ut0ANg2g1L0zZ36CSnKFSCl5Ncf9/DDoh1E9GvNK2/NwNHJziJ9F5VV8fKPG9kXn8qIHm155Y7RuDk7mNVndnk5P8Qe5rfjx6ior2NgUDCvDxvJ8LDWZi/fWYKfiwufjp9EwJ5dfH04mvLaWhaMGmuxLfPdW7di5e44UnKLaO3vbZE+z6usqEUIcHS0zL//tUwFKEVpZFJKvlq4leW/H2Dk2C48/eJki20jP3I6k+e+WU95VQ3/vHUENw3pZtZyV35lJf+OPsBvx4+hkwYmtGvP3F596NLC8geGzSWE4PlBN+Bm78AH+3ajl5KPx06wyHLf+Xt2x85mN0qAcnK2vyLZ0692lw1QQogg4CegJWAAFkkpPxFCeAG/A6FACnCzlLL4Iu31wPGGT9OklDdaZuiK0vwZDJLPPtjI2pUxTJ3Rh4ceH2ORNyYpJYu3H+GTFbsI8HHns0enmZWmqKSmmkUx0fwYe5g6vZ4Z4V14OKJfkyzjGUMIwSN9+iGA9/ftpqOPDw9F9DO73+AWHtjaWJOSU2T+IP+iuLgST6/GPYN2rdAyg9IBT0kpDwshXIEYIcQW4G5gm5TyHSHE88DzwHMXaV8tpexhsRErylVCrzPwwdtr2fLncWbdMZB7Hxpukav7ypo6/vXzZrYePsXwHm157a4xuDram9RXvV7PT8eOsvDAPirqapncoSPz+g0kzMNyGzeuhIci+hKfn8dH+/cyNCSMcN8WZvVnbWVFgI876fmWT+paWFCOl3fjJqS9Vlw2QEkps4Hsho/LhRAJQAAwBRjW8LQfgR1cPEApynVHrzPwzuur2LE1nrvuu4E75gyxSHBKzy/hiS9Wk5JTzLxpQ7hrdG+T+41KTeH1XZGcKS5iaEgozw26gY4+V2eyWCEEbwwfxYHMdN6K2sEv02aa/fMO8HYju7DMQiP8r4K8MsK7Ns4h4GuNUXc7hRChQE/gAODXELzOB7FLXbI4CCGihRD7hRBT/6bvuQ3Pi87PzzdmWIrSrOh0et56dSU7tsZz38MjuPOeGywSnA6cTOPOd36lsKyKzx+bzuwxESb1m1lWxgPrVjF79XJ0BgPfTJ7G91NuumqD03mejo480qc/+zLS2Z2Wan5/Lo6UVtZYYGT/VV+vJy+3DP+Aq2uG2lQ0b5IQQrgAy4HHpZRlRvzHCJZSZgkhWgPbhRDHpZRn/vokKeUiYBFARESE1Nq5ojQnep2B+a+uIioygQcfG81Nt5h/PwRg2a5YFvweSaifFx89dCOBvsYfUDVIyS/HjvLu3igAnh04hDk9emFvc+3slbq1Sze+PRLDJwf2MiQk1Ky+3F0cKamstszAGuTmlGIwSFqpAKWJpt9MIYQt54LTYinlioaHc4UQ/lLKbCGEP5B3sbZSyqyGv5OFEDs4NwP7nwClKFe788t6lgxOeoOBj1dEsXjbYQZ3CePteyfg7GD89uTk4iKe27qJmOwsbggO5a0Rowlwu/aq5drb2DC7e0/m797JqcJC2nmbvgPPzsaa+nrL5stLTT63OhQSenXPVq8ULbv4BPAtkCCl/PCCL60BZgPvNPy9+iJtPYEqKWWtEMIHGAS8a4mBK0pzotcbWPDG6v8s61kiONXU6Xjx+z+JPHqaW4f34MkZQ7E28gySQUq+OxLD+/t242hjy/ujxzGtY7jF0+wU11WQWllATnXJuT81JVTqarG1ssZWWGNrZYOHnROd3YMIdw/E3c6ypUQuNLVjOO/ujeKP+OP8c8gwk/uxsbZCZzAgpbTYzysl+dx1fHCYj0X6u9ZpmUENAu4EjgshjjY89k/OBaalQoh7gTRgJoAQIgJ4UEp5H9AJ+EoIYeDc/a53pJTxFv4eFKVJSSn55N0NRG45wb0PjWDWHQPN7rOssobHv1hNbHIWT88cym0jehndR25FBc9s2cju9FRGt27Dm8NH4+tsme3NWVXFxBQlc7Q4hdjiVNKqCv7f191tnXC1daDeoG/4o6NCV4vk3Op9sJMPvbzCmBUygDauLS0ypvN8nJwYHBzC1rPJZgWoxnD6VC6tAjzVIV2NtOzi2w1c6vJh5EWeHw3c1/DxXqCrOQNUlOZMSsnXn2/jz7VHuW32IG650/zglFdSwSMLV5CWX8Lb905gTO8ORvexNfk0z23dRLVOx1sjRnNL565mzwIyq4rYmnOcbTlxnCzLBMDN1pHuHiFMDuxNe1d/Wjp60NLBA0eb/30DrtTVklCaQVxJOnGl6WzKjmVVxiGG+Hbk7jbD6OoRbNb4LjQoKIQdKWfJKi+jlYn1pGrrddjbWlt0tnnqZDadOgdYrL9r3bVzd1RRmsDvP+/lj1/3c+NNEdw9d5jZ/aXmFvPQwuWUV9Xy6SNT6dvRuDftOr2et3fv5MfYI3T2bcHHYyfQxsv0+zA1+nq2ZB9jefoB4kszAOjsHshjHcYzwKc9YS6+WAlty47ONvZEeLchwrsNACV1VSxN3cvStH3cu/9Lxvn34PnOU3CyMe1M14UGBJ4r2X4wM5OpHU0LUDV1OhwsWJ6krKya3JxSJk01fjZ8vVIBSlFMtGZ5NN9+GcmIMZ155ImxZl9pJ6bn8cinK5FSsuiJGXQKNi69UE5FOY9uWMvhnGzm9OjFswOHmLxDL7e6hGVpB1iVcYjS+ipau7TgsQ7jGeHXhVZOltmB5mHnxNx2o7gjbAg/n93FD8k7yagq5KPes82+R9XWyxtrITjdUA7EFCUV1bibmdPwQonxWQB0VDMozVSAUhQTbN8cx6cfbGTA4PY889KNZqcvOpaczaOfrcTFwY5/Pzad0JZeRrU/kJHOo3+uo0ZXz2fjJzGhnfHLgnAuMH13JpI1mTFIKRnSohM3hwwgwqt1o9UvcrKx54F2o+ngFsCLR3/jwYNfs6jfXFxtTS8WaGdtTYiHB2eKTU9VVFxRjZer5TZzJMRlIAQWrf11rVMBSlGMFHsklffeXEP3XiG89MZ0sxO/xp7J4tHPVuLl6sSXj9+Ev5f2JSkpJT8dO8Kbu3YQ6uHJFxNvpq0JS3oFteX8mLyDFWkHkcD0oL7cHjrEYrMlLYb5hfNR79nMi/mBN+KWs6DH7WYFRX8XV/IqK0xun1dcQbtAy+22izuWTlhbP5yczV/CvF6oAKUoRkhLKeC15/+gVaAXr86fgZ29ef+FjpzO5B+frcTX3YWvnphBCw/tOdp0BgP/2rmdxcdjGRXWhg/GjMfV3rg3vzqDjl/ORvH9mR3opJ5JAb24p81w/B2b5iBpX5+2PNp+HJ8kbmBJ6l5uDR1kcl/u9g5kV5Sb1NZgkGQVlTG0e2uTX/9C9fV64o9nMGGKuv9kDBWgFEWjosIKXnzqN2xsrHnrg1twdTN9CQr+O3Py8zgXnHzdtQeniro6/vHnWnampjC3dx+eHTjE6IJ9+/KTeD9hLelVhYzw68wj7ccR5GzZ0hKmuC10EEeKz/JZ4kaG+3WmpaNpZd1d7e2pqKszqW1eSQX1Oj0B3pbJ5n7yRCa1tTq69bTcTsXrQdNXHlOUq0BVZS0vPrWEkpIq3nx/Fi39TXvTPO9ESk7DzMnZ6OCUU1HOrGVL2J2WytsjRvP8oBuMCk4FNWU8f+RX5sX8AMDCiDm80/P2ZhGc4Fzi16c7TcaAZFnaftP7MWMMZ7LPba5o3coyP5ND+89gZS3o2TvUIv1dL9QMSlEuQ68z8ObLK0g+k8sb786iQ6dWZvWXlJHPwwtX4OHiyFePGxeckouLuHPlMspqa/hm8jSGhoYZ9dpbso+xIH41tfp6Hmw3molYRewAACAASURBVDvChmBn1fzeBlo6ejCkRUdWZ0TzQLtR2JowRoOUCBPD1JmscweP21ioWOGh/Wfo3CUQZxfL7Qq8HqgZlKJcxrdfbufQ/jM89tR4+g5oa1ZfaXklPPLpCpwcbPny8Zvw83TV3DYuL5dZy5ZQp9ez5KZZRgWn8vpqXoldyouxSwhy8uaXQY9xT5vhzTI4nTe+VU9K66uIK0k3qX1lfR1OtqadY0pIy8PP0wUPF/OWcQHycko5nZRD34HtzO7retN8fzsVpRnYtuk4f/y6n8nTezPRzAOWucXlPPTJcvQGyVePT6eVEfc3DmZmcN/albjZ2/PztJlGFRQ8UnSWl48tpbC2nAfajmJ266HYWFmm5HxjivBqjRWCQ4Vn6Oll3EwRoLimBk8H02YsJ1Jy6BJqmRRMe6OSABg81LSt/9czFaAU5RISTmTywdvr6NojmIcfH2NWX+VVNTz66UrKqmr46vEZtDZi6WhPeir3r11FK1dXfpo6Q3PqHiklS1L3sjDxT1o5evJt/wcJd796CuW52jrSzs2f4ybOoAqqqgh2M36TQ0FpJRkFpdw0pJtJr/tXuyITCAnzITC4edzju5qoJT5FuYi83FJee/4PvH1ceXX+DLPOOtXV63jyy7Wk5hXzwQOTCQ/RniEiKi2F+9asIsTdgyU33aI5OFXr6ng59nc+Ormewb4d+XHgI1dVcDovyMmbrGrjD9tKKckoKyXI3fgAFZN0LqVTRHvzf155uaUcP5rG8FGdze7reqRmUIryF3W1Ol57/g9qqutY8MntuHuYnk3AYJC89tNmYk5lMP+e8Ubl1tubnsbctasJ8/Tkl2kz8HLUNo7MqiKeOfwLZypyebjdGO5qfYPmfHnNTStHT3bkxmOQBqO+h4KqKqrq6wk2IUAdTErDxcGODkGXKhKuXeSWEwAMG60ClClUgFKUv/hi4WZOJebwrwU3E9ravMJyX6zdy8boRB6bOphxfTpqbheTncncdasI8fAwKjjFl2bwZMyP6KSBj3vPZoBve1OH3iy42jqik3rqDHocrLUHqJMF5woDtvMyLhOElJK9J1Lo0yEIGyNe71J9bd5wjPAugQQEGpe6SjlHBShFucD2zXGsW3mYm28fwMAh5r25r9obx7cbDzJ1YBdmj4nQ3C4uL5c5q1fQwtmFn6dqD067807yz9jf8LRz4avedxPiYpmqrXpZT2bVMYrr0imrz6W8Ppfy+jxsrZzwsAvAyy4YP8cOtHBoh7WwXPZvAJuGWZNeGoxqF19wrjBguK9xP4NTmQXkFlfwwMQBRrW7mDNJuaSlFDDv2fFm93W9UgFKURqkJOfz0YL1dOkexJwHhpnV15HTmcxfvI3+nYJ54bYRmnPKnS0pZs7q5Q279WZoLjC4LvMwb8WtoJ1rSz7sPRsfe+3b1y9GL+tJq4zhVNkukiv2Ums4l9POWtjiauuHq00L6gxVJJVF/udrHrYBjA94iRYOlttObWgocGjsaabYnBwC3dzwcDBum/iO2DMIAYO6hBr5iv9r66bj2NhYccPwTmb3db1SAUpRgMrKWv71zz9wdLTjxdfNSwCbU1TOM4vW0crHjXfunYittba+8isruXvVcqSEn6bOIEDjhojFZ6P4JPFP+nq3ZUHP23E2o55Srb6CI8UrOFq0klpDOXZWzrRxGUhbt6H4OXTAydrj/wVbKSWVukIyq4+zO+8rlqY+xiDf++jhOd0i2c9L66qwFdY4WmuvQCul5FBWJjeEhBr9elsPJ9GzbYBRh6cvRqfTs21THP0Ht8fNvfHK21/rVIBSrntSSj58ex1ZmcW8t/AOfHxNn33U1ut46qs11NXr+OjJmbhprCdUWVfHPWtWUFBVya/Tb6a1p7Z7Fj8l7+KzpI2MbNmFf3W72eSDtzX6Mo4UreBo8QrqDFW0dhlAF4+JBDn1wsbq0sFBCIGLrQ8dbIcT7NyLrdnvsyvvC0rrshjW8h8mjeVCxXWVuNs5GRXskouLKKyuok8r4+ounckq4HRWIc/OGm7sMP/HgT2nKSmuZMwEy2xVv16pAKVc9zatj2XX9gTufWgE3XqGmNyPlJJ3lmwnIS2Pjx68kTCNNZ30BgOPb1pPQkE+X0+eSveW2uoFLT67m8+SNjLGvxuvdZ1p0uFbKQ0cK1nL3vxvqTNU0dZ1CH29b8fXwfiMGY7W7kwKeJ1deV9wtHgFgc49aOs6xOh+LpRRVUiAo3EbDHakpgAwONi4f8v1BxKwthKM6WX+xpK1K2Pw8XWlb3/zMo9c71SAUq5rGWmFfP7hJnr0DuXm2827Mb486hir957g3nF9Gdq9jeZ27+zZxbazybw2dATDQ7WVd/g9ZS+fJG5gZMsuJgen4roMtmZ/QFb1cYKdejOkxQP4OJhXXkIIweAW95NVHceO3M8IcxmAtTD9bSa1Mp/BLYy7hxOZkkw7L28CjTikazBINkYnMiA8FC8385bkMtKLiDmYzF333YC1zdW5vb+5UD895bql0+lZ8PpqbG2tee4V86riJqTl8t4fOxkYHsqDk7UHumXxcXx7JIbZ3XtyV/eemtqsyYjmg5PrGOYXzhvdZhkdnAxSz+GiZSw+O5fC2rOMavk0U4PeMTs4nWctbInwmkWlrpC8miST+8mrKaWorpK2LtoPNhdXV3MwM4PhYcZ9L9FJ6eQUlTOuj/npiFb9cRAbGysm3Kjt31O5NDWDUq5bP32zi5PxWbz0xnR8fLVXsf2riupanvtmPV6ujrwxZxzWVtqu+47mZPPS9q0MDArmxSHDNLWJyjvJ/LiV9PNux5vdbzE6ONXqK9iYNZ+UyoOEuQxghN88XGwtVzX2vJaO4QDk1STh3/CxsWKLUwHo5ql9qW7zmVPoDAYmGlnyftWeOFwd7RnRw7wdiGVl1WxaF8uIMV3w9jFvJ6WiYQYlhAgSQkQKIRKEECeEEPMaHvcSQmwRQpxq+Pui2SuFELMbnnNKCDHb0t+Aopgi9kgqS37ew/jJPRg60rQ30PPm/7qN7MIy3r53Ap4as18XVFXx0Po1+Lm48Om4SdhoCGonSzN5MfY32ru1YkHP24zeEFFSl8nvqY+RVhnDML9/MDng9UYJTgAuNj44WruTX3PG5D6OFqfgYG1Le1dt9+QA1iQlEuLuQRdf7Vkgiiuq2X70NOP7dsTBzrxr9jXLo6mpqWfGrf3N6kc5R8ulng54SkrZCegPPCKECAeeB7ZJKdsB2xo+/3+EEF7Aq0A/oC/w6qUCmaJcKVWVtbz/5hr8Azx5yMwksBsOJrAxOpEHJg6gRxttu8b0BgNPbFpPSU0NX068EU/Hywe1vJpSnjr8Mx62znzU+y6cjNxKnlF5lN9THqVaV8y0oAV095xikW3glyKEwM7KCb2sN6m9lJI9+YlEeLXRPEtMLy1lX0Ya0zqGG/W9rdpznDqdnpk3mLfjrrq6jhW/H6T/4HaEtTE/TZKiIUBJKbOllIcbPi4HEoAAYArwY8PTfgSmXqT5WGCLlLJISlkMbAHGWWLgimKqrz7dSl5uGc++fCOOjtrP1/xVen4Jb/+2nR5tWnH32D6a2312aD970tN4bdgIOmm40q/R1/H04Z+p1NXwYe+78DbyEG5i2XZWpj+Hk40ns0I/J9C5h1Htm0JyRR5Z1cUM9tW+VLcsIQ4B3BSuPe+dTm9g6c5Y+nYIok0r82aTmzcco7ysmlvuHGhWP8p/GbVJQggRCvQEDgB+UspsOBfEgIv9TwsALsyVn9Hw2MX6niuEiBZCROfn5xszLEXR7GhMChvWHGHGrf3p3DXI5H70BgOv/LARIQRvzhmvOW/bwcwMPj24n2kdw7k5vMtlny+l5K24lSSWZfNm91to62pcjaLT5bvZlPUOrZy6cHPIQjzszKsGrJWUkhp9ObZWphX825JzDCsEQzTu4KvT61kSd5wbQsI0H3AG2BSdSG5xBbeOMG9Dg15nYNmv++jUOcCs3yvl/9McoIQQLsBy4HEpZZnWZhd5TF7siVLKRVLKCCllhK+R+bMURYva2no+eW8D/q08uPPeG8zq66ct0cQmZ/P8LcNp5a3tDbG0poYnNm0gyM2dfw0bqWkZalnafjZlx/JAu1EMbqE92SxAamU0G7Pews+hA5MD38Te2rzsCMao1pdSa6jA0874N2uDNLAh8wj9fNrh66DtZ7vpzCnyqyqZrXEnJJzbWv7DpkO0beXNkC7m7WCM3HqCnOxSbp09yKx+lP9PU4ASQthyLjgtllKuaHg4Vwjh3/B1fyDvIk0zgAt/QwOBLNOHqyim+/HrnWSkFfH4cxNwcDA9qWlydiFfrN3HqF7tGG9EhvKXI7eSX1XJx+Mm4mJ3+aXFxLIsPjq5gUG+Hbi79VCjxphdHc+6jNfwsgtmStB87EycyZiqsDYFAE8742sqHSw8Q05NCRMDtAUbKSXfHzlMiLuHUemNdh47w5nsQu4e28esIwZ6vYFff9xNaGtf+qmy7halZRefAL4FEqSUH17wpTXA+V15s4HVF2m+CRgjhPBs2BwxpuExRbmiEuOzWL7kABOn9KRXH9Ovlg0GyRu/bMHFwY4XbtGeBHbDqUTWnUpkXr8BdPe7/DJdta6Ol2KX4GnnzKtdZxpVC6moNpU16S/ibOPNlKB3cLC+8tud06piEFjh72h8HaSlqfvwsnNhmJ+2tgczMziam829PXtjpfHfQ0rJ1xsOENzCgzG9zTv7tH1zHOmphdx17w1mBTrlf2n5rR8E3AmMEEIcbfgzAXgHGC2EOAWMbvgcIUSEEOIbACllEfAGcKjhz+sNjynKFaPT6Xl//lq8vF24/5GRZvW1LOoYscnZPDljKJ6u2jIOFFRV8XLkVrr5teSB3n01tfn45HrSKgt5rdtMPOy0Zzao1VeyJuMVhLBmWtDbONtc+U2zUkrOVuynlWMX7K21ZWM/L72ykD35iUwP6qt5G/2XMQfxdnRihhGbI/aeSOFkeh5zxvY1q+5Tfb2en77dRdv2LRk01LglWOXyLvsbIKXczaWz3f/P/3YpZTRw3wWffwd8Z+oAFcVcK5ceJCU5n38tuBlnF23JWy8mt7icT1ftpl/HYCb2055+582oSCrr6nlv1DhN55325SexMuMQd4QOoY+39pRJADtyP6WsPpubgj/A/QptiPirnJoECmvPMszP+GSxP5/dha2VNdODtAXyI9lZ7ExN4ZmBg3Gw0bZsK6Xki3X78PdyY0Jf84LK2hXR5GSVMP/DW9XsqRGoVEfKNa0gv5yfv4ui38C2ZhUglFKy4PdI9HoDL96mbYMDwK7UFNYknuTBiL608/a+7PMrdDW8dWIlYc6+PNBulFFjTCzbzsmyrfT1uYMAp65GtbWkI0XLsbdyoZO7cWfMcqtLWJd5mBsDe+OjcXPER/v34u3oyF3dtG+OiIw9Q3xqLg9M6o+tGWVVysuq+eW7KCL6taZPf+MuJBRtVIBSrmnffrEdXb2eh808kLvrWDI7Ys/wwKQBBPp6aGpTo6vn5cittPH04qEIbTOCL5O2UFBTxstdZ2BvrX0jR0V9AZE5C/F3DKev9+2a21lacV0Gp8uj6Owx3uiNGd8n70AiuTNM2w7Lvelp7E5P5YHefXHWsOkEoF6v57PVewj182RCX/MKCf7+yz4qKmrMXjZWLk0FKOWadTI+k60bjzN9Vj9aBRpXsuFCtfU6Pli2k9b+Xtw2UvuV+lcxh0gvK+X1YSOxt7n8/ZSksmyWpe1nenBfunho354tpWR77ifoZT1j/J/DSpg+KzDX/oIfsRZ29PK62ah2aZUFrM6IZnpQX/wdL3/fzCAl86N2EODqxp3dtB88Xh51nJScIuZNG2LWvae83FJWLj3IiDFdaN1WezJbxTgqQCnXJL3ewML3N+Ll42L22ZRfth4mo6CUZ2YO01wdN6OslC+jDzGpXQcGBAVf9vlSSt5PWIubrSMPtjNutpdUvoOzFfsY4DsHDzvjivRZUn7NGZLKdtDDc6rRmzM+TdyInZUNc9poKxa46mQ88QX5PD1wsKbgD1BaWcOidfuIaB/EDd3MO/f049c7kVJy99xhZvWj/D0VoJRr0uYNsZw6mc0Dj47C2dn0EujF5VX8sPkQQ7u1pl8n7Vm139u7GyHghcHazi/tyIvnaHEKD7Ufg5ut9qUxvdSxN/9bfO3b0sNzmuZ2lialZGfu5zhYu9Lb27jZ0778JHbmxTO79VB8NKRxKq+tZcGeKLr7tWRye+2bHP69Zi9lVbU8PXOoWXkIT8ZnsnnDMabO7ENLf23LvYppVIBSrjmVlbV89+UOwrsGMny08edwLvT1hgNU19bzj6mDNbc5lpvD2qST3NuzN/6ul3/D1Rn0fJ64iTBnXyYH9DZqfIll2ymrz6G/z+wmXdo7Vb6DzOpjDPS5Bwdr7amGavX1vJ+wlmAnH+4I01Z997ND+8mvquS1oSM0n3s6lVnA8qhjzBzanfaBpmeqMRgkn3+4CS9vF26fY161YOXyVIBSrjl/LN5HSXElD88bY9aVclpeCct2HWPqoC609r/8Drzz3tsbhbejI3N7aUsguz7rCGlVBTzSYZxR9Z2klBwuWoqPfRvCXJquvEN5fT47cj+jhX07OnuMN6rtd2ciSa8q5JnwyZrOPSUU5PP90cPMDO9C95baynCc24G5HVcnex6cZF7V5PWrD3MyPov7Hh5h1sxc0UYFKOWaUlxUyfLfDzB0ZDgdws07B/TvNXuwsbEy6k3tYGYGe9LTeKB3X1ztL/8GpjPo+f5MJJ3cAhjia9yZnOzqeAprU+jueWOjls74O3pZz4bM19HJOsa2esGoWVxSWRY/nd3FhFY96edz+RRBeoOBf27bjLu9Pc8P0p5Lcd3+eA6fyuSxqYNxdzb9HFxhQTnf/Hs7PXqHMmpc023jv56oAKVcU5b8vIe6Oh13329c7rq/SkjLZXNMEneO6o2Pu/ZsCB/v34uvkzO3d+2u6fmbs4+RVV3MfW21p006L650A3ZWTrR3G2FUO0valfslOTUJjG75NF72l98Mcl69Qcfrx5fjbuvEEx0namrzY+wRYnNzeOmG4ZpqaMG5e4gfrYiiW2t/pgy8fPb4v/P159uor9Mx79kJTXZBcL1RAUq5ZhQVVrBu5WFGje1KYLD2JbmLWbR+P25O9tw5Svs9oeisTPZnpvNA7z442l7+DJOUkiWpewlz9mWwkbMng9STXL6XNi6Drngi2PPiSjZwrGQ1vbxm0s7NuAuCL09tJak8m+c7T8VdQyqn5OIi3tu7mxGhrbnRiI0RC36PpKK6lhdvG2VWpoejMSls2xTHzNv6Exhk+pEFxTgqQCnXjF9/3I1Or+fW2do3NFxMYnoeO48lc/vIXrg4ar/P8EX0QTwdHLili7bKrHGl6Zwsy2RmyACjr8izq09QaygnzMW8eyqmyqw6TmTOQkKcIxjke9/lG1xgf8Epfj67i2mBfRjmF37Z5+sNBp7dshEHGxvmjxyt+We17fApNsckMXdCf9oFmF6MsK5Ox8L3/8S/lQe33W3e75ZiHBWglGtCbnYJ61cdZvykHmZf4f6wORoXBztuGab9AOjpokIiU5KZ3b0XThpmTwCr0g/hZG3HhFbGF8vLqIoFBMHOxu36s4Sc6pOszXgFN1s/xrV60aj7Trk1pbwS+zthLi14opO2pb0vog9yOCeb14aNoIWztppWxeVVzP9tGx2DWjB7bITm8V3M4u+jSE8t5NGnxmFvb3qZFsV4KkAp14TfftqDEMLsK9yswlK2Hk5i+pCuuDppv6H+U+wR7KysuU3jvacafR3bco4zsmVXnGyM3w1WUJuMu20ro7OFmyurKo6V6c9ib+3MtKAFRpXyqDfoeOHIr9QZdCzocRsO1pdPT3QkO4tPDuxlcvuORi3tvfN7JOXVtbw+e6zmw9UXkxifxZJf9jJmQjf6Dmhrcj+KaVSAUq56eTmlbFwXy7jJPWjh525WX79FHkUguHW49llNRV0dK07GM7lDR3yctJXG2JWXQJW+zqTZE5yr+eRjH2pSW1OlVR5mVfrzOFl7MiP4I9zsjCs//0HCOuJK03m5602EurS47PNLa2p4fNMG/F1deWP4KM1Le5uiE9kSk8Tcif1pa8bSXm1tPe++uQYvLxcemmdeLkfFNCpAKVe95b8fAOCWOwaa1U9lTR2r955gZK92+HlqnxmsP5VIVX09t2q89wSwIzceLzsXenqFmjBSqDfUYHcFS7ifKd/DmowXcbNryYyQD3G1Ne6w67K0/axIP8idYTcwsuXlt2hLKXl260ayK8r5eOxE3DRs2YdzM+C3ft1G1zB/Zo8xb2nvh0U7SUsp4Kl/TsLF1fTt6YrptCWxUpRmqqysmg1rjjB8dGdatDRv9rRm7wkqqmu5fWQvo9oti4+jracXPTUeHK036NiXn8Qo/65GVcq9kEReskibJUlp4FDhEvYX/EALh/ZMDZpvVKYIgN15J3k/fi2DfTvycHttM5GvD0ezJfkMLw0ZRi9/befZdHoDL32/ESklb80ZZ9bSXnxcBit+P8DEqb2I6KdKaTQVFaCUq9rGtUepqa5n5m3mZVKQUrJ0ZyzdWvvTJVT70lVaaQkx2Vk8O3CI5iWouJJ0KvW1DDJya/mF7KycqNIVm9xei2p9KZuzFpBSeZD2rsMY6f+U0Vvaj5ek8c/Y32jn5s+b3WdhrSEgR6Wl8O7eKMa3bc+cHtovFv69Zg9Hz2Tx1pzxmkuiXEx1VR0LXl+Nt6+rKqXRxFSAUq5aer2BtSui6dYz2OySB9FJGaTmFfP6hLFGtdtwKgmASe07aG5zpDgFgB6eoUa91oVaOnYiuXwPUhoQJs7C/k5O9Uk2ZL5Opa6IYX7/oJuH8dkqzlbk8UTMj/jYu/Jx79maNoOklZYwb+N62np58+6osZpfc8+JFH7YHM30wV0Zb2aV3K8+3UJ2ZjHvfXqHSmfUxNQ9KOWqdXDfaXKyS5lyk7acd39n5e7juDnZM6qncVV3N5xKpLtfSwLdtC8vxhan0tqlBR4aDqheSivHztQYysmujje5j4up1VeyK/dL/kidhxBWzAz5mO6eU0w4p1XMY9HfYyOsWRgxB2+NWcrnrluNQUq+mjhFcxHCnKJyXv5hI20DfHh65jCjxvlXUTtOsn71EWbeNoDuvULN6ksxnwpQylVr1R+H8PZxZeANppdyB6ioriUy9jRjIzriYKd9USGnopy4/DzGtrl8HrkLnS7PoYObeXWb2rkOxcnak935XyOlNKsvOHevKb5kEz8l382R4uWEu4/l1tAvaOlo/Gwkp7qEhw9+S5WuloURdxPodPmsHjqDgcc2ruNMUSGfjp9EiIe2Jbq6eh3Pfr2Oep2eBfdNNOrf76+yMop4/621dAxvpeo8NRNqiU+5KqUk53P40FnueXA4NjbmlZnYfvQ0tfV6JvYzrgR4ZMpZAEaEaS9+V15fTX5tGa01bLP+O3bWTgz0vYetOR+QULaFcHfTtkEbpJ6zFfuJLvyNnJqT+DuGc6PfW/g5mBb0s6qKeejQN5TXV/NpxBzau11+g4OUkn/t3M7O1BTmjxjNkOBQza/3/h87iUvJ4b25kwhrafoBbZ1Oz9v/Wo2VleClN6Zja9t0pUuU/1IBSrkqrV0Zg62dNROnmHaO6EKbo5MI8Haja5hx53r2pKXi7+JKOy/tef+yq89tbAjSMKu4nE7uY4gv3cS27A8QCDq6jdR8P6pKV0xcyQaOl6yjQpePi40vY/yfpaPbKJPvaaVW5PNI9HdU62r5rM89hLsHamr37+gDLD4ey9zefTSniQJYujOWZVHHuHtMBCN7GjeL/avvv9rByROZvPTmdPxUEcJm47IBSgjxHTAJyJNSdml4rDvwJeACpAC3SynLLtI2BSgH9IBOSmnewQRFAWpq6tm68Tg3DOuEm7vp93EAyqtqOJiYxq3Dexp1n0VKycGsDAYHhRjVrriuEgBPO/MzQFgJa24MfJPVGf9kc/YCDhT8RFePyXRyH43TX0qu6wx1ZFfHk1EVS2ZVLNnV8RjQEeTUi2F+jxLm0t+sgoeny3N49NC3SOCLvvfT3k3blvulJ47zwb49TO3QiWcHai8AGJ2UzntLIxnSNYxHpgwycdTnHNp/hqWL9zFxai+Gjrh8bkDlytEyg/oB+Az46YLHvgGellLuFELcAzwDvHyJ9sOllAVmjVJRLhAVmUBVZS3jLTB72h2Xgk5vYERP49LYpJaWUFBVRZ8AbbOE88rqqwE0ZfDWwt7ahZuCP+RM+W6OFa9hd/4iducvwkY44GjthgE9BqmnVl+BAR0CK3wd2tLT6yY6u4/D0z7I7DEcLDjN80d/xcnajs/73EuIi7ZDvBtPn+LF7VsYEhzCO6PGaq6Om5ZXwrOL1hHcwpO35ozH2sr0W+k52SW8869VhLVpwUPzRpvcj9I4LhugpJS7hBChf3m4A7Cr4eMtwCYuHaAUxaK2bjyOfysPuvXQXn/oUnafOIuniyNdQ7Vd8Z8Xl5cLQLcWxm1vl5zb0CAseMzWWtjQ3m0Y7d2GUVB7luTyvVTrS6k1VGKFFVbCBjsrJ1o5diHAqSv2FsxAsSr9EAviVxPm3IIPet+Jv6Pn5RsBu1JTmLdxHd38WvLvCTdip/FQbVllDfM+X4UEPnpoilHZ5v+qurqOV5//A4NB8sr8GSoRbDNk6j2oOOBGYDUwE7jUZZgENgshJPCVlHLRpToUQswF5gIEB5v/xqNcmwryyzkSfZbb52g/GHspBoNkX3wqA8NDjK4VdCI/D1srK9p5G5fr7XzmCIM0GNVOKx/7MHzswxql7wvppYHPEzfxS0oUA3za81aPW3Cx0ZYOaG96Gg+sW01bL2++u3G65u3kdfU6nl60jszCUr6cdxPBLUy/VySl5OMF6zl7Ope3PrhV1XhqpkydG98DPCKEtgkIcAAAIABJREFUiAFcgbpLPG+QlLIXML7h+Zes0yylXCSljJBSRvj6GpfnS7l+REUmICWMGG1edVSAxIw8SiqqGRAeanTbM0VFhHl4ar7yP+/8m/j5pb6rUWldFU8f/plfUqKYGdyfD3rdqTk47U5L5d41Kwnx8OCnqTNwd9DWzmCQvPrTZqKT0nnlztH0amfc0upfrfrjENs3n2D2/cPo01+lMmquTJpBSSlPAmMAhBDtgYsWdpFSZjX8nSeEWAn05b9Lg4pitKjIBMLatCAoxPxdcAdOpgHQt6Px92HSykoJdjf+Cv78Elh2dQnm30G78uJK/q+9+w6L6sweOP596UiRjiIigojYRSyxG40aW9RETe9ms8kmm+xuEk3vm541iSluYromsbeo0VhjYsMG2AUFAalKU9rM+/tjxvxYghGYgRn0fJ6Hh5nhlsN9hjnce8973jSe3DuP3LIiHu84nhvCat9iakvqCe5bvpRwHx++mTgZ/1p2fgeYuXgLa3Yd5uEJAxjbx7JChsR9qXzy/jquGtCem263rMBCNKx6nUEppYLM3x2ApzFV9FVfxkMp5XXhMaaEllj/UMWV7kx+CYn70xgwuPZthf7MrsOnaNvCj8Dmdb8nk15YQGjzujenbenug6NyILk4q87r2pJRG/k2ZQvTtn+CUor/9rmvTsnp5+TjTFu+hLa+vnw7qW7J6YufdvL1unimDulucYfyzIwzvDBjAS1CfHji2fEWTQMvGl5tysznAUOAAKXUKeA5wFMp9aB5kUXA5+ZlQ4BPtdajgWBgsfk+gRMwV2u92uq/gbhi7PjtGFpDv4GWJyijUZN4IrNe42fKKispqajA373ulXguDk508QljR97xOq9rK7mlhbyStJitOYcZEtyRpztfj7dz7ZvGLjl0gMfWrqZjYBBfTrgeH7far7volwTeW/wLI+Oi+dfkwRbddywqPM9T//wOg8HIS29MxcNTptCwd7Wp4rvpIj+aWcOyGcBo8+NkoHbTiwpRC1s3HSYwyIvI9pY1hgVIzT5D4bkyukTUrXoP4Eyp6f6Rby3vn1TXJ6Ads4/+TG5ZEQG16FFnK1prVqbv5t1DKyk3VvJYzDhuCOtbpyQxZ088L2/ZyFWhYXwy9jo8a1kQAfBT/GFenfsz/TuF8+IdIy0qJ6+sNPDyM4vITD/DazNvscolYtHwpBefaBJKSyuI35FMv0HRFlfvARxOywGgY1jdk11pZSUAzZzrV5Y8LLgzGs3itB31Wr8xmJq9fsGLiQuJ9GrBt/0fZnKbq2p97I1a88qWjby8ZSOjIqOYM35inZLThr3HeGrOKrpFhvDGfWNxtqCdldaaWe+uYffOFB55YgzderSp97ZE45JWR6JJ2Bd/gvLySvr2t6ylzQVHM3JxcnAgPLh243aqMpqbs9Y3UYZ7BjEgsAPzT/7GbW0H4uZY+w/uhlZqqGDuiV/4MnkTCni843gmte5dp4kVSysreGztalYePcLtXbvzzKChdTr72ZqYwhOfrqRjmxa89+AE3F0sG5+0ZP5OVizezdRb+zFyjFzUaUokQYkmYce247i5O9PVSv/9pmTm0TrIBxfnuv8JXEhMlnQRvz1iEPdtn82c4xt4oH3d5qBqCFprfsrcz6wjazhdepYhwR15tMOYWg+8vSCruJj7ViwhMTuL6f0HMS02rk6JfHNCMo/NXkG7kAA++NsEPNwsS96b1x/ko5k/0X9QNHffP9SibYnGJwlKNAl7dqbQpXsYLhZMp1DVqdwCWtdz1lUvF1P3gsKysnrvv7tvOOND4/gqeTMDAjvQ1dc2l5201mzPO8bso+tILEgj2juE57rcQE//2ndov2Bf1mnuX7GUovIyPh5zHddE1q191Pq9x5j+6UqiWgXw4cPX49XMsiKGPbtSeO2FJcR0DmX68xOkYq8JkgQl7F5uThFpqXlcO956I4cy8gqJa1+/wZ7erqYEVVBWalEMj3QYzc684zy7/wc+7fMXAty8LdpeXRi1kU1ZB/g8eROHCtMJcvXmmc7XM7pVj1pNy17dkkMHmPHzWgI9mrFg8k10CKjbYPuf4g/z1JxVxIQFM+uhiRYnp+NHs3h+xgJahfrx8ptTcXOTNkZNkSQoYfeS9qcB0LWHdVpgnS+roKS0nCCf+lXQuTg6EtjMg7TCAovi8HRy4+VuU3lw52fc9tssXul2I7F+DdumqKjiPGsy9zE/dRspxdmENvPjyU4TGd2qBy4Odf84KKus5MXNG5iXuJ/eIaHMGj2uTmOcAJb+msRL36ylW2QIMx+wrL8emMY6PfmPeXh4uPDKOzfi5V37snZhXyRBCbuXuD8NNzdnIqMsLy8HyC86B4CfV/0/uCJ8fUk5c8biWLr4hPF537/yxJ65PLjzM+6PuoZbwgfg5GC9CfOM2sjeMydYemoX608nUmaspL1XS17qOpVhLTrXe18nz57loVXLSczJ5i89e/HPqwbgVMdS8O827OGNHzbSN6YNb98/zuKCiDP5Jcx4dB4V5ZW88fEdBAXXfTC1sB+SoITdO3Qgg6gOLS2eOfeCghLTOCZvj/pfRory82fJoYNUGo11/lCuLtKrBV/0e4BXEhcx68gafkzfzU3hAxgcHIOvS/06jxdXlrIj9xhbcw7za+4R8sqK8HRyY2yrnlwXGkeH5pZNOb/yyGFmrP8JB6X479gJDIuoWz87rTUfLf+NT1dtZ2i3SP59z+h6FaxUVVh4numPfEtudiGvzbyFNm2lp2dTJwlK2DVDpZHko1mMm9jTats8X24ax+RmwX/rvVuF8k3CPpJysukWXLeZeGvi6eTGq91uYkvIId4/vIpXkxbzWtISeviFMyS4E52atybQzRt/F8/fz3i01pQaKiiuLCXz/BkOF2ZwpCiTI4WZHCnKxKCNeDm50TcgioFBMQwJ7mhxSXthWRkvbFrP4kMH6NGiJe+NGksr77rdO6s0GHl17s8s+TWRif07M+OmYTg5WpbkS0rKmPHIXNJS83jpjal07mr5PFfC9iRBCbuWlppHeXmlVbpHXFBeYQDA1bn+Z2R9Wpk+AH9JPWmVBAWm8vVBQTEMDOzAkaJMNmYlsSEribcPrvif5VwdnHF1dKKksgxDtWk7vJ3difYO4ba2A7kqoD1dfMKsdrlwa9pJHl+7huySYh7ufRUP9uqDcx27uRefL2PGZz+yNekE00b34f6xtR/8ezHnz5fzzGPfmwojXptMz951r0AU9kkSlLBrJ1NMHR/aRgZZbZtWaERBoIcHsS1asvzwQR6I622V7hYXKKWI9g4h2juEv0RdQ1pJHidLcsgpKyS3rIjzleWcM5Th7eyOh5MbXk5uBLp50947hCBXb6vGAlBUVsZbv/3C1/v3EuHry4LJN9GtRd1bRJ3OL+LhD5eQkpnH07cMZ9KALhbHVlpawbOP/0DS/jRmPD/BagO5hX2QBCXs2smUHJTCqr3TLlxOqjRYNmngxJhOPLNhHUk52XSu48y6ddHaw5/WHo3fO05rzU/Jx3hh43qySoq5q3ssj/UbgJtT3S+NHjh5mkc+WkZpWQXv/20ifWMsH/dVVlbB89Pns2/3CR5/5jqGDO9k8TaFfZFefMKunUrLJyi4uVWn43Y134w/X1Zh0XbGRkXj7uTEnD3x1gjLrqQXFjJt+RL+unIZPu7uLJxyM88MGlqv5LRqxyHuefsHnB0dmfOvqVZJThfOnHbvTOYfM8YyfJTlZ2PC/sgZlLBrpzPO0jKk/lN716S5h6m8vKDEsoG2zd3cuKVLN+bs3c20nr2IqePgVHt0rqKC2fE7mb17JwqYMWAQd3aLrfO9JjBNaTJr2VY+X7OT2KhWvDltLL5edZ+ipDpTcvqevfEn+NdT4xgxWvrrXa4kQQm7lpVVQK8+1p2S29c8/unCeChLPNCrDwsOJvHM+rXMu35qvT7I7YHBaGThwSTe2baV7JISxkS1Z3r/wXWu0Lug6FwpT32+ml8SU5g0oAtPTB1qUUfyC0pKynj28e9J2JvKY0+P55pru1q8TWG/JEEJu2UwGDmbX0JAoHXnTPJ0c8HL3ZX0XMs6QQD4uLnzwpBh/H31St7ZtpUn+g+yQoSNR2vNuuTjvLv9Vw7l5tCjRUtmjR5Hz5b1Hyd1KC2bx2ev4PSZIqbfeDWTB3W1SuFGwdlzPPmPeRw/msX05yZw9YjOFm9T2DdJUMJuFZw9h9Go8fOv32DVi1FKERbkQ2r2Watsb1z7Dmw7lcYn8Tvp2TKE4RF1a5JqC1pr1iYf4/0d20jKyaZNcx/eGzWGMVH1n29La82iXxJ484eN+Hq5899HJ9MtMsQq8ebmFDL9kblkpp/l+dcmS7XeFUISlLBbBWdNl+Ca+1h+36K6iJb+bE06gdbaKv/dPzNoCAnZWTy0aiWfjZ9Iv9bW6RtobeUGAz8ePcx/d+/iYG4ObZr78OY1o7guOsaijhjF58t4Ze7PrNl1mL4xYbxy17VWud8EkHEqnycemUvB2XO8+s6NdIsNt8p2hf2TBCXsVkmJaToLD0/LmofWpHN4C5ZvO0BmfiEh/pb3a3NzcuaL6yZx88IfuHf5Yt4cPoox7aOtEKl15JSUMDdxH3MT9pNzroRIXz/evuZaxkV3sLhVU0JKJk99voqM3EIeHN+fu0b2strUFinHs5n+yFwqKgy8+d6tRHe0zhmZaBokQQm7dc6coJp5WD9BdYkwDTTdfSzdKgkKwM+9GV9PmswDK5fx0OoVbDiRzFMDh+Drbptu2hUGA5tTT7D44AHWJR+n3GhgSHhb7uoWS/+wNjhYeOZYaTAyZ/UO/vvjNgJ9PJn96A3ERtVvCpOaJOxN5dknfsDV1Zl3Pryd8IimXyUp6kYSlLBbFeWmlkSWNhGtSftWgfh7N2NLQgpj+3S02nYDm3nw7aQpzNq5jY927WDTyRM8N3ioRfd26sJgNLLndCY/HjvC8sMHyTt/Hj83d27u2o1bu3QjwtfPKvtJzT7D05+vJvHEaa7t3YHpU4daPIdTVZvXH+S1F5fQooUPr757Ey1aWneogWgaLvmXr5SaA4wFsrXWnc2vdQM+BjyBE8AtWuvCGtYdBcwEHIFPtdavWS90cbmrNJgSlKOT9ceTOzgoBnaOYN3uI5RXVFo1Cbo4OvJo3/6MateeJ9at4eHVK3l/xzamdurCddExdZ4v6VLOnD/P1rST/JySzKaTKZwtLcXFwZFhEZFM6tCRQW3CrVb+bjAambdhLx8u3YqLsyP/vmc0I+OsdylTa83iH3bw8XtriekcyktvTMG7ufXvQYqmoTZ/lV8AHwBfVXntU+BfWutNSqm7gceAZ6qupJRyBGYB1wCngJ1KqWVa6wPWCFxcORrqzGNYbBRLfk1kc0Iyw2PbW337MQGBLJpyM8sOH+TLfXt4ectGXtu6md6tQrk6PIKuwS3oFBiEu3PtuzMUlJZyouAsSdlZ7Dmdye7MDFLOmual8nNz5+rwCIaGRzCwTRu8Xa13RgNwPCOXF75eS+KJ0wzo3JanbxlOkI/1KiwNlUZmvbuG5Yvj6T84mhnPT7BqBxHR9FwyQWmtNyulwqu9HA1sNj9eC6yhWoICegPHtNbJAEqp74DrAElQolYcL/TMqzQ0yPb7xoTRwteLhVsSGiRBATg5ODApphOTYjpxOC+XRQeT+DnlOC9v2QiAo1K08/Mn2MMTbzdXmru64e3qikFrzpWXc66igpKKCk4XF3Gy4CxnS/+/+4W/uzs9WoRwQ8dO9AoJpUeLljhaWPBQk/KKSj5fs5PPVu/A092VV+++lpFx1r1kWVJcyktPLyJ+RzJTb+3H3fcPtVqhhWi66ntdIxEYDywFJgM1Tb7SCkir8vwU0OdiG1RK3QfcBxAWZp8luqJxXeg8UFHRMAnK0cGBGwZ15YOlWzmYmkVMWMM1fAWI9g9gxoDBzBgwmKziYhKyT7M/K4uknGzyzp/jZMFZCstKKSwrw8nBkWbOTjRzdqGZszPBHp6MiYqmTXMf2jT3ob1/AGHNmzf4fa1fD5zg9e82kJZzllFx0Tw2ZYjVyscvyDiVzzOP/0B6Wj7/fHIso8Z2t+r2RdNV3wR1N/CeUupZYBlQXsMyNf3l6IttUGs9G5gNEBcXd9HlxJXjQvXehWq+hjB5cDe+XhfPrKW/8sFDExtsP9UFe3oS7NnObgf1ZuYX8vb8Tazfe4ywIB9mPTSJqzpa3uS1un17TvLCjAUAvD7zZhnjJP5HvRKU1voQMAJAKdUeGFPDYqf43zOrUCCjPvsTVyZPL9M9lOJiy5q6/hkvd1fuHNGLmYu3sP1QKn06XNln7+dKy/ly7S6+XhcPGh4c35/bhsc2SCXliiXxfPD2GkJCfXnpzam0CrVOhaG4fNTrXaeUCtJaZyulHICnMVX0VbcTiFJKtQXSgRuBm+sdqbji+PiaLiWdyS9p0P1MHdKdhb/s5+Vv1vL907fRzM2yadGbIoPRyNJfk/h4+a/kFp7jmp7t+fvEAVYbI1ZVeXklH7y9mlXL99KrbyRPvTgRD0/rFnSIy0NtysznAUOAAKXUKeA5wFMp9aB5kUXA5+ZlQzCVk4/WWlcqpf6GqYDCEZijtU5qgN9BXKaa+3jg5ORAbnZRg+7HzcWJ528bwbR35zNz8RZm3DSsQfdnT7TWbNh3nI+W/crxzDy6RbTkrb+Mp2tE3WfMrY2c7EJefGohh5LSufH2ftw5bcjvxTBCVFebKr6bLvKjmTUsmwGMrvL8R+DHekcnrmgODorAIG+yMq3T1PXPxEaFcsvVsXzz8256tGvFqF4dGnyftqS1ZnNCMp+s2MahtGzCgnx4Y9oYhvWIarDCi907k3n1uSWUl1fy7CvXM3BoTIPsR1w+pJOEsGuhbfxJTc1rlH09NGEASSezePbLNTT3cG+QogBbMxiNbN6fzJzVO0g6mUVoQHNevGMko3p1wKmBzmQMBiPzvtrKV59uIiw8gGdeuYE24QENsi9xeZEEJexaWJsA9sWfxGAwNvilIGcnR/7z1/FMe3cB//xkGW/9ZRz9OoY36D4bS1lFJSu2HeDrdfGkZp8lxN+bZ2+9hjF9Yxp0ksW83CLeeGkZu3emMGxkZ/7++Gjc3a+8e3yifiRBCbsWFd2C8vJKTqbkENGuYccpAXg1c2PWQxN58P3F/H3WEp66eTgT+jfdifGyzhSxeGsiC7fsJ6/wHDFhQfz7ntEM6xHVYGdMF+z47RhvvrSM8+fLeXT6GK4d171R+hGKy4ckKGHXYjqZZnY9mJjeKAkKwN/bg0//MZknPl3Ji9+s5URWPveP7YebS9P4czEaNb8dOMGCLfvZkpCCRtOvYzi3XxNHXPvQBk8S5WWVzPlkAwu/207byCDeenEibdpKJ3JRd03jL05csVq28sXXz4N9e04yZkJso+3X092V/zxwHW9+v5Gv1sazfs8xHpsyhIFdIhothro6mp7LjzsOsnrnIbLOFOPn1Yw7RsQxaUAXWgVYv1y8JsnHsnjthaWkHM9m3KSe/OWh4dJPT9SbJChh15RSxPWJYNvWY41yH6oqZ0dHnrx5GMNio3j9+w38/cOlDOkWyT9vGNxoH/h/RmvN0fRcNickszb+CEfTc3F0UFzVMZxHJg3i6u7tfm8X1dCMRs3C77bx+Scb8fJ255W3b6T3VfbZJUM0HUpr++sqFBcXp3ft2mXrMISdWP9TIv9+fgnvfnwHnbvW1Pax4VVUGvh2/W5mr9xGRaWBgV0imNi/M/06hTdIg9aLOVdazr7kTH5JTGbjvmQy802z3HRp25LRvTswomd7q/fKu5SMU/m89eoKEvam0n9wNI8+MYbmPjJFxpVMKRWvtY6zdDtyBiXsXp9+7XBxcWLD2iSbJShnJ0fuHNGL0b1j+G7DHpb9doCN+44T7OvJ6N4x9O4QRteIlri7WO9yltaa7LPFHD6Vw95j6cQfTefgySwqjUZcnR3p06EN00b3YUDntgQ097DafmvLaNQsW7iLzz5aj4OjA/96ahwjRneVQghhNXIGJZqEl59ZxJ5dKXy37BGcnRvnstWfqag0sHl/Mou2JrDjUCoGo8bJ0YHO4S3o2CaYiJb+tApoTit/b4L9vC5ayl1pMFJ8vozss8Vk5BWSkVdAem4hxzNyOXIqh7Mlpj6ETg4OdAoPJjYqlLj2rekeGYK7De/tVD1r6tU3kkenjyEwyNtm8Qj7ImdQ4ooyYnRXNv18gC0bDnL1CNuXfTs7OTIsNophsVGUlJaz93gG8UfS2HXkFIu3JnK+rOJ/lndxcsTF2Qk3Z0ecnBwpLa/kXGk55TXMdeXm4kRkS3+Gdm9HVGgg0aGBdGgdZNOEdEFlpYEFc7fx9ZwtODk78s8nxzJyTDc5axINQhKUaBLi+kTSqrUfi77fwdBrOtnVB6KHmwv9O4XTv1M4YDoryj5bTHpuAel5BWTlF1FWUUlZRSWlFZVUVBhwc3GmmZszHm4uNHN1IdjXkxB/b1r6N8fHw82ufr8LDiSc4t3XV3IiOYcBQzrw4KMjCAiUsybRcCRBiSbBwUExaUpv3n97NXvjT9Ajrq2tQ7ooJ0cHQvy9CfH3pleNc3k2LYUF55jz8QZWLt1DYLA3L7w+hX4DG2YGYiGqkjbCoskYObYbgUFezPlkI/Z47/RyY6g0smzhLu6c8iGrVuxl0tTefPbt/ZKcRKORMyjRZLi6OnPr3YN497WV/LLpMAOHXN4dx21p/56TzHp3DcnHsuke24YHHh1J28ggW4clrjCSoESTMnJ0NxZ/v4OP/rOG2F5t8TBPCy+s41RqHp9+tJ6tmw4TGOzN0y9PYtDQGLu8JyYuf3KJTzQpjk4O/OPJseTmFPHZh+ttHc5l40x+Ce+9tYp7bvmY3TtTuGPaYObM+yuDr+4oyUnYjJxBiSYnplMrJk3pw8Lvt9OnfxR9+klLnfoqLipl4ffbWfTddkrLKhgzPpbb7hmIr5+nrUMTQhKUaJruun8Ie3af4PUXlzLrs7tp2crX1iE1KefPlbN4/g7mz91GcVEpA4Z04K77hhAmEwkKOyKdJESTlX4qn4fumYNfgCfvfHQH3t7utg7J7pWUlLF84S4WfLedgrPn6Ns/ijvuHUy76Ba2Dk1cRqzVSUISlGjS9saf4Ml/zCM8Mog3Zt6Cp5ebrUOyS4UF51g8fydL5u+kuKiUuD4R3H7v4N/n2xLCmiRBCWG2fetRnp8xn6jolvz7PzdLZV8VmelnWDx/J6tX7OX8uXL6D47mptv7Ex0TYuvQxGVMEpQQVfyy6RAvPb2QyKgWvPj6FAICvWwdks1orUlKOMXC77azddMhHB0dGDysI1Nv7SdjmUSjaLQEpZSaA4wFsrXWnc2vdQc+BtyASuABrfWOGtY1AAnmp6la6/G1CUoSlKiPbVuP8sqzi3B3d+HplybRtUcbW4fUqEpKylj/UyI/Lt3DsSOn8fJyY+zEnoy/Pu6KTtii8TVmghoEFANfVUlQPwHvaq1XKaVGA49rrYfUsG6x1rrO9aqSoER9nUjO4YUn55ORfoY77h3M1Fv64eh0+Q7301pz5GAmK5fuZsPaJEpLK4hoF8TYCT0Zfm0X3N1dbB2iuAI12nQbWuvNSqnw6i8DF9oYNwcyLA1ECGsIjwjkg0/v5t3Xf+TzTzayfesxHn7sWiKjgm0dmlVlny5g3ZoE1q1KIC01D1dXJ4Ze04kxE2KJjgmRwbXislCre1DmBLWiyhlUDLAGUJi6UfTTWp+sYb1KYC+my4Cvaa2X/Mk+7gPuAwgLC+t58uQfNidErWmt2bA2iQ/eWUNx0XlGje3O7fcObtKXurJPF7Bl4yG2bjpEwr40ALp0D2P4qC4MvjoGD0+pYBT2oVGLJGpIUO8Bm7TWC5VSU4D7tNbDa1gvRGudoZSKANYDw7TWxy+1P7nEJ6ylsPA8cz//hSULduLo6MC4iT2ZOKUXwS19bB3aJWmtOZGcw85tx9my8RCHktIBiGgXxKChMVw9sjMtQ2SAsrA/tk5QBYCP1lor07WEAq31n85cppT6wryNBZfanyQoYW2Z6Wf45vMtrFudgNaauD6RXDuuO30HtLeLKeQvyMstInF/GvHbk9m1/Tg52UUAtGvfgkFXxzBwaAyhrf1sHKUQf87WCeog8Fet9Ual1DDgDa11z2rr+ALntNZlSqkA4DfgOq31gUvtTxKUaChZmWdZvXIfa1bsJSe7CB+fZvQdEEXP3hHE9mqLd/NmjRaLwWDkVGoeRw5lsn9vKvv3nCTj1BkAPDxdie0VQa++EcT1iSQwSGauFU1HY1bxzQOGAAFAFvAccBiYianIohRTmXm8UioOuF9rfa9Sqh/wCWDEdJ/qP1rrz2oTlCQo0dAMBiPxO5JZ++N+du1IprioFKUgOiaEjl1CaRsZRNvIINq0DcTNzdmyfVUayc4q4FRaPulp+aSl5nHsyGmSj2ZRWloBgJeXG126h9G5Wxidu7WmfXTLy7r6UFzeZKCuEFZiMBg5fDDDdFltRzLHj5ymrKwSAKUgIMgbPz9PfP098PPzxNPLDWcXR5ydnXBxccRQaaTSYKSstIKyskrOnyvjTH4J+fklnM0vJj+vBIPB+Pv+mjVzITIqmHbRLYmKbkG79i1o0zYQBwepvBOXB0lQQjQQg8FIZsZZUo5nk3Isi9OnCziTV0x+fgln8oopLi6lotzw+/JKgdbg5OSAi6sz7u4u+Pp5/J7QfP09aBXqZ/pq7Yevn4eUgYvLWqONgxLiSuPo6EBoaz9CW/tddFp5rTUGg5GKCgNocHFxkktyQliZJCgh6kEphZOTI05O9lMBKMTlRv7lE0IIYZckQQkhhLBLkqCEEELYJUlQQggh7JIkKCGEEHZJEpQQQgi7JAlKCCGEXZIEJYQQwi5JghJCCGGXJEEJIYSwS5KghBBC2CVJUEIIIeySJCghhBB2SRLC8G5UAAAG0klEQVSUEEIIuyQJSgghhF2SBCWEEMIuSYISQghhlyRBCSGEsEuSoIQQQtilWiUopdQcpVS2UiqxymvdlVLblFJ7lVK7lFK9L7LuHUqpo+avO6wVuBBCiMtbbc+gvgBGVXvtDeAFrXV34Fnz8/+hlPIDngP6AL2B55RSvvWOVgghxBWjVglKa70ZyK/+MuBtftwcyKhh1ZHAWq11vtb6DLCWPyY6IYQQ4g+cLFj3EWCNUuotTImuXw3LtALSqjw/ZX7tD5RS9wH3mZ+WVb2c2IQEALm2DqIeJO7G11Rjl7gbV1ONO9oaG7EkQf0VeFRrvVApNQX4DBhebRlVw3q6po1prWcDswGUUru01nEWxGYTEnfjaqpxQ9ONXeJuXE05bmtsx5IqvjuARebH8zHdY6ruFNC6yvNQar4UKIQQQvwPSxJUBjDY/Phq4GgNy6wBRiilfM3FESPMrwkhhBB/qlaX+JRS84AhQIBS6hSmyrxpwEyllBNQivn+kVIqDrhfa32v1jpfKfUSsNO8qRe11tWLLWoyu26/ht2QuBtXU40bmm7sEnfjuqLjVlrXeEtICCGEsCnpJCGEEMIuSYISQghhl2yWoJRSjyqlkpRSiUqpeUopt2o/d1VKfa+UOqaU2q6UCrdNpH9Ui9jvVErlmNtA7VVK3WurWKtSSv3dHHOSUuqRGn6ulFLvmY/5fqVUrC3irK4WcQ9RShVUOd7P2iJOcyw1tQXzU0qtNbf7Wnuxbiq2bAtmYdyGKsd+WeNFfdG4J5vfK0bzPfGLrTtKKXXY/H6f3jgR/75vS+I+oZRKuNBmrnEi/n3fNcX9plLqkPkzY7FSyuci69b9eGutG/0L02DdFMDd/PwH4M5qyzwAfGx+fCPwvS1irWfsdwIf2DrWajF1BhKBZpiKY9YBUdWWGQ2swjR+rS+wvYnEPQRYYetYzbEMAmKBxCqvvQFMNz+eDrxew3p+QLL5u6/5sa+9x23+WbGdHe8YTANFNwJxF1nPETgORAAuwD6go73HbV7uBBBgR8d7BOBkfvz6Rd7f9TretrzE5wS4m6sAm/HH8VHXAV+aHy8Ahimlahr4awuXit0exQDbtNbntNaVwCZgYrVlrgO+0ibbAB+lVMvGDrSa2sRtN3TNbcGqvpe/BCbUsKpN24JZELdN1RS31vqg1vrwJVbtDRzTWidrrcuB7zD9vo3Cgrht6iJx/2T+2wTYhmm8a3X1Ot42SVBa63TgLSAVyAQKtNY/VVvs9zZJ5l++APBvzDhrUsvYAa43n/IuUEq1ruHnjS0RGKSU8ldKNcN0tlQ9rlq3pmpEtYkb4Cql1D6l1CqlVKfGDfGSgrXWmQDm70E1LGOPx742cQO4KdOMBtuUUnaXxC7CHo93bWngJ6VUvDK1iLMnd2O6ClNdvY63TRKU+Vr2dUBbIATwUErdWn2xGla1eU18LWNfDoRrrbtiuiT1JTamtT6I6fR7LbAa0yl2ZbXF7O6Y1zLu3UAbrXU34H1gSaMGaR12d+zrIEyb2vHcDPxHKRVp64BqoSkf7/5a61jgWuBBpdQgWwcEoJR6CtPf5rc1/biG1y55vG11iW84kKK1ztFaV2BqmVS92ezvbZLMl9Ka88dLELZwydi11nla6zLz0/8CPRs5xhpprT/TWsdqrQdhOpbVu3/YZWuqS8WttS7UWhebH/8IOCulAmwQ6sVkXbhUav6eXcMy9njsaxM3WusM8/dkTPdPejRWgBawx+NdK1WOdzawmJrbzDUqc1HPWOAWbb7pVE29jretElQq0Fcp1cx8X2kYcLDaMssw9fsDuAFYf5FfvLFdMvZq923GV/+5rSilgszfw4BJwLxqiywDbjdX8/XFdPkys5HD/INLxa2UanHh/qQyTZzpAOQ1dpx/oup7+Q5gaQ3L2GNbsEvGbY7X1fw4AOgPHGi0COtvJxCllGqrlHLBVIjVqBWI9aGU8lBKeV14jOl9YtOZH5RSo4AngPFa63MXWax+x9sWlSDmPPMCcAjTwf0acAVeNP+SAG6YmtAeA3YAEbaKtR6x/xtIwnQ5agPQwdYxm+PagunDYx8wzPza/ZhaU4HpNHwWpmqbBP6kksjO4v5bleO9Dehnw1jnYbo3WYHpv8Z7MN07/RnTmd/PgJ952Tjg0yrr3m1+vx8D7moKcWO6epBgPvYJwD12EPdE8+MyIAtYY142BPixyrqjgSPm9/tTTSFuTFVw+8xfSXYS9zFM95f2mr8+rh53fY+3tDoSQghhl6SThBBCCLskCUoIIYRdkgQlhBDCLkmCEkIIYZckQQkhhLBLkqCEEELYJUlQQggh7NL/Ad1vHv59wnQKAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_contour(joint)" ] }, { "cell_type": "code", "execution_count": 107, "metadata": {}, "outputs": [], "source": [ "from utils import marginal\n", "\n", "posterior_mu0_student = marginal(joint, 0)\n", "posterior_mu1_student = marginal(joint, 1)" ] }, { "cell_type": "code", "execution_count": 108, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3deXxU9b3/8ddnJvtCNpaQBRKWQBDCIosoKC61Wq3YulerbW3prddftVa73tZbr+3tehdvba3W1rZal1IXWnHFfaEaJBDCGiCQkGUmCQlJyDrz/f0xQxpCQgJk5juT+Twfj3kwc+bMOe8Mmfnke873fL9ijEEppZQKNQ7bAZRSSqmBaIFSSikVkrRAKaWUCklaoJRSSoUkLVBKKaVCkhYopZRSIUkLlFJKqZCkBUoppVRI0gKlIp6IlInIigBu/xERuTcQ++q7PRGpEJELArHtYBGRGSKyUURaROSrwdy3Cj1aoFRQ+b9E20WkVUTqROT3IpJ0its7pS9lY8xpxpg3TmUbI72v4f5cI5V9oP0F833p4xvAG8aYZGPMfUHetwoxWqCUDZ80xiQBC4BFwL/ZCCEiUTZfH677DrDJQJntECo0aIFS1hhjDgAvALMBRKRQRN4QkSb/4aXLjqwrIt8UkQP+Qz87ROR8EfkTMAn4m79F9g3/ulki8lcRcYvI3r6HivwthW+KyGagTUSi+rcehshxzOv7/1wiMl9EPvJnfRKI6/f6vvs6kZ9ryOzAIhHZKiIH/a3Tvvs2IjKtz+NHROTeIfZ3wVDvSZ917xSRzSLSLCJP9t13v3UH3JaIvAacC/zSn6NggNd+V0R+3edxmoh0D7YvFeaMMXrTW9BuQAVwgf9+Lr6/lv8DiAbKge8AMcB5QAsww3+rBLL8r8sDpvbfnv+xA9gAfN+/nSnAHuDjfdYv8e87foBMg+YY7PX9fr4YYB/wNf+2rgS6gXsH2Newf65hZq8AtvifTwfePbJf//MGmNbn8SMD5er/fzXUe9Jn3Q+ALP++twH/MsD7M9T7+wbwxeP8/jwBfLnP43OBLbZ/r/UWmJu2oJQNz4pIE/AO8CbwI+AMIAn4sTGmyxjzGvB34DrAA8QCs0Qk2hhTYYzZPci2FwHjjDH3+LezB3gIuLbPOvcZYyqNMe0DvP54OYb7+mjgf4wx3caY1cCHg2Q9kZ9rOPsG+KX/+Ubgh/1yn6zhvCdHslX79/03YN4pbGswc/AV6SPmAZuG/6OocKIFStlwuTEm1Rgz2Rhzi//LNguoNMZ4+6y3D8g2xpQDtwP/DrhE5AkRyRpk25OBLP/hoyZ/IfwOMKHPOpXHyTZojhN4/QFjTN95bPYNtOIJ/lzD2Xf/5/f585yq4bwnALV97h/GV4hOdlvHEJEYYCpQ2mfxXI4uWGoU0QKlQkU1kCsifX8nJwEHAIwxfzbGLMNXgAzwE/86/Sc0qwT2+gvgkVuyMeYTfdY53iRox80xjNfXANkiIv1eP6AT+LmGs2/wHd7ru9/qPo8PAwl9HmcOc7vDeU+G61S2NQtf8T8M4H+PV6AtqFFLC5QKFf8A2oBviEi0+K6/+STwhPiujTlPRGKBDqAd3+ExgDp855mO+AA45O9MEC8iThGZLSKLTjXHMF//PtADfNXfieHTwOKBVjzBn2u4/lVEckQkHV/L8ck+z5UAn/G/JxcB5/R57nj7O9X3ZKS2NQcYLyJTRSQe37nLyfjOf6lRSAuUCgnGmC7gMuBioB74FXCjMWY7vvM0P/YvrwXG4/vyBfhP4N/8h/PuNMZ48H3hzQP2+l/zWyBlBHIM9/WfBj4HHASuAZ4eZPVh/1zD2bffn4GX8XUM2QPc2+e52/C9N03A9cCzfZ4bdH+n+p6M4LbmAC/h6/lZjq+o7gG+e6I5VHiQow+VK6VUaBKRF4DfGmP+ajuLCg5tQSmlwsUcfN3XVYTQFpRSKuSJSBq+Q3qJxphu23lUcGiBUkopFZL0EJ9SSqmQFHYDTo4dO9bk5eXZjqGUUmqEbNiwod4YM67/8rArUHl5eRQXF9uOoZRSaoSIyICjreghPqWUUiFJC5RSSqmQpAVKKaVUSNICpZRSKiRpgVJKKRWSAlagROR3IuISkS2DPC8icp+IlPuniV4QqCxKKaXCTyBbUI8AFx3n+YuB6f7bKuDXAcyilFIqzATsOihjzFsiknecVVYCf/TPPLpeRFJFZKIxpiZQmVTwtbe3s2HnfvbUNFLTeIiYxBTSx2VyuMtDe7eH9q4eZmWN4VPzc2xHVUoBXV1duFwu3G43jY2NTJw4kVmFhbD/fajfBd2HoasNutt99+dcCdmnBySLzQt1szl6euoq/7JjCpSIrMLXymLSpEEnJ1UhYEvVQZ77xw7W766n+lA3LT0Ouo76NWvw33zio51cPj9LC5RSlrS2HKJ648s0VpRx2FWBaa0jicMkcpiptDE23sCaVuhoPvqF4oDoRMhaMCoLlAywbMCRa40xDwIPAixcuFBHtw0x+xraWLelisffK2eX/3c4xdFFTrKDuSkJTM1MYeGU8WSPTSUlIYaEGCfxMU7iopw4HAP9GiilAunw4cNs/Wg97Rsep/DgKxRw8KjnPdGJkDgex5hcJGk8JE2AifNgyjkQnQAxieCMAQns59dmgaoCcvs8zgGqLWVRJ+np4n3c+dcteA0kSScXTHTyhXMKWDKnAKfTaTueUgrgcCN88CAdlSU0uQ7Q1dLIfKpx4qU1MY+mRXeRMnUxkjwBEsfhjI63nRiwW6DWALeKyBPAEqBZzz+Fl+fWb+euZ3cRRw9fPM3BjZecy9j0NNuxlFJ97X4Nz7O34mw5QCdJGEkiMTmdnowZOBd/jqSZl4IjNK84CliBEpHHgRXAWBGpAu4GogGMMQ8Aa4FPAOXAYeDzgcqiRt7/rVnPL95rINXZw0OfmcOi06bZjqSUOqKlDkoexWx6AqnfiYdonoy6hswzr2Xp0qXEx4dGC2kogezFd90QzxvgXwO1fxU4b63/kF++V0uS08mLXz+PzPQU25GUUke0uuG3F0Dzfupi8ihhBZ0zVnLpJVcyZswY2+lOSNhNt6Hs2ly6hbv/tp1O0vn1DadrcVIqlHg9sPrzeFvr+HPMDRxwTuKTV3+SWbNm2U52UrRAqWGrqanhR6vfY68nm2sX5bBixgTbkZRSfT1/B1S8zUtyLq3j5rDqmmtISwvf88JaoNSwdHZ28v1HXmR9ZzYZidH8x+VztIu4UqFk05Ow4RE2M5OGqVfy+auuIjY21naqU6IFSg3LE2te5s3mdLJTYnj21rOJdoZmrx+lItKHD8Pzd9BJNHunfYHrrrtuVFzmod8yakgVFRX8emMr4oziz6vOZFxyeP9VptSo8t7/wfN30E4sL+R9n0uv++KoKE6gLSg1BK/Xyy9Wv0mtdyx3fWw6kzMSbUdSSh2xdQ3m5e+xQwr4R+YNXPeZfxk1xQm0BaWGsPr1Yl6qT2XmuFi+vEKvdVIqZLz3S3jqs7icWbyUeAWf/swXiImJsZ1qRGmBUoPyeDz8+LUqjDj41Y1nEKXnnZQKDd0dmHX34E4o4GHvFXzq6s+QnJxsO9WI028cNajX139EoyeWzy+awJRxSbbjKKXAN9XFUzcink5eOzyD5eddOGpnedBzUGpAXq+XP7y5DcjgsiUFtuMopQA6W+E3Z0Pjbl6OvpC2iedx1lln2U4VMNqCUgN6t2Qbbx/KoCgzjtOydLQIpULCu/8Djbv5IPsLfGDmctlll+EI0YFeR8Lo/cnUKfm/V7YjGP7rukVIgOd8UUoNw86X4a2f0TrpPF44kMLZZ5/N2LFjbacKKD3Ep45R565nWxNMSXUybUJ4DS6p1Ki1/e8APHr4HNIznJx55pmWAwWetqDUMR5/7SNaTByrzpluO4pSCnzTrW96gsYJZ1HX0MyFF15IVNTob19ogVJH8Xq9rNvuJsZhWLkw33YcpRRAyePg6WTtoZnk5eVRUBAZHZe0QKmj7Ny9h/L2BIoyE4iLHj1XpCsV1kr/wuGEHHZ3pHD++edHzHlhLVDqKH95ZyvtxHDtmTpqhFIhodUFB4r5sGsqBQUF5OTk2E4UNFqgVC+Px8Nbe1tIjDKsnB85HwKlQtraOwHY2ZPNihUr7GYJMi1QqteO8t1UdCWxLD9Fp9NQKhRUFcPW59gYdTqJBcuZOHGi7URBpd9Cqtdz63fQTRRXL9XDe0qFhLJn8DqieblnMcuWLbOdJui0QCnA13vvzT2HiHMalhfoVO5KWefpxmx5mipHLhk508jNzbWdKOi0QCkAqqurqehM5IzcRGKi9NdCKeuqNyIt1WzoKWDp0qUR03OvL/0mUgCs37yDDqJZUpBlO4pSCuC1e+lwJFGbXERhYaHtNFZogVIAPFvqBgyXzI28wwhKhZyOQ5h971HsLWT24rNH9YCwxxOZP7U6SmtrK2VNTmakRzEpI8F2HKVU+auIt5tyx1Tmz59vO401WqAU727ayUGTwEWnZdqOopTyejFv/4I2EkgqPJ+kpMidLFQLlOL1sioALl6gY+8pZd3eN5C6LbzJEhacvtB2Gqu0QEU4YwwfHWhjTLSXGZk6tYZS1r37vxx2plCReib5+ZH9R6MWqAhX39DA/s545k1MiMhurEqFlFY3Zu/blHrymTVvccR/JrVARbi3NpXTQTTnnZZtO4pSavc6xHjYSgFz5861nca6gBYoEblIRHaISLmIfGuA5yeJyOsislFENovIJwKZRx3rrR11AFw4d5LlJEopU78LLw4ckxaTlpZmO451AStQIuIE7gcuBmYB14nIrH6r/RvwlDFmPnAt8KtA5VHHMsawy9VKUpQhK1W7lytlW+e+D2kkhdlzF9iOEhIC2YJaDJQbY/YYY7qAJ4CV/dYxwJEz8ylAdQDzqH6amppwd0UxKTXGdhSl1OFGYirfYZdMjdiRI/oLZIHKBir7PK7yL+vr34EbRKQKWAv8v4E2JCKrRKRYRIrdbncgskakPXsraPTGU5SbbjuKUhHPbHkah/HQNOnjJCToEQ0IbIEaqPuJ6ff4OuARY0wO8AngTyJyTCZjzIPGmIXGmIXjxo0LQNTItHFXFR6cnD5VRy9Xyipj6PrwEerIIHvBx22nCRmBLFBVQN+B3XI49hDezcBTAMaY94E4YGwAM6k+tlXVAzBlXOReqa5USKgqJtZdykbHPGbMnGk7TcgIZIH6EJguIvkiEoOvE8SafuvsB84HEJFCfAVKj+EFQXt7O3sPdgMwdVyi5TRKRTaz80UAuvIvIDY21nKa0BEVqA0bY3pE5FbgJcAJ/M4YUyYi9wDFxpg1wNeBh0Tka/gO/33OGNP/MKAKgKqqKmq9SUxJjyU1QTtJKGVTR+Um2khjctFZtqOElIAVKABjzFp8nR/6Lvt+n/tbAf0fsaCyshK3N4lP5esRVaVs87h20Eg6BQUFtqOEFB1JIkKVVtTRjZO5k/RiQKVsMh3NJB3eT3taAfHx8bbjhBQtUBHIGMPb+zsQDMunaa9IpWw6tPFZAOKnLbOcJPQE9BCfCk0NDQ1s70xhzvhYnaBQKcs6Nj9HFPFknnW97SghR1tQEejdsgpaTSxnTtPzT0rZFuveTEPsZMak6uH2/rRARaCKal9P/uWFOZaTKBXZDtftJbXHjWdi5E7rfjxaoCJQeW0TABNT9YSsUjY1v/6/ACQtus5yktCkBSrCeL1etjZ4iHXA5Ay9QFcpa4whYe/LVDtzGDvrbNtpQpIWqAhTX1/PgZ4kzsiNx+mI7Nk6lbLJU7uFlM4DtI5dEPEz5w5GC1SEKd93gA6imTs5w3YUpSJac8nfAXAsvNFyktClBSrC7KysBSAvU6fYUMqmzj3v0kY8uUV6eG8wWqAiTEVtIwATxmgHCaWsMYb0+g+oTTxNB4c9Di1QEcQYQ1X9IQDGJeuHQilb2j94hFjTiWfycttRQpqOJBFBmpqaaOhyIkBmSpztOEpFrNYdbxGFk+RlX7IdJaRpCyqC1NTU0GZiGBPnZExctO04SkUsZ81H1DsmkDkxy3aUkKYFKoLU1tbS4E1gdnaq7ShKRSxTv4v09goaxy/V7uVD0AIVQerq6uiQOHLTdYBYpWxpLnsVgOjCiywnCX1aoCJIdW0dh70OxmsHCaWs8Zb+lTbimVh0nu0oIU8LVIRob2/nQFMHBmGSDnGklB3NVaTVF1MeP5/kNJ1NYChaoCJEXV0dzcbXc2/KOC1QStng2bUOwXB46iW2o4QFLVARoq6ujmavr0BNHZtkOY1Skal19/t0EU367PNtRwkLeh1UhKirq6PNmURGbAwpCdrFXCkbzIES3GSQlz/FdpSwoC2oCOFyuWhzJOnhPaVs8XQz5tAOGpILdXijYdICFQGMMVTW1XOgI5r5k3RaaaVs6KoqwYGXqImzbUcJG1qgIsDBgwep64zBY2D5dO05pJQNzSV/AyCp6FLLScKHFqgI4HK5aDMxAOSk6UW6StnQeaCUTqKZWLDAdpSwoQUqAtTV1dHqL1ATdZBYpYLP00Na/YfUJhQSHRNjO03Y0AIVAdxuN4ejxpA5Jo64aKftOEpFnM7tL5HobaEl/xO2o4QVLVARwOVyUe9NZG5uiu0oSkWkQ9teB2DMgk9ZThJetECNch6Ph/3uQzR0OSjK0VHMlQo6Y4jd8wpuMsiaPM12mrCiBWqUa2hooN7jO+90xpR0y2mUikD1uxhzuIJ9aWcRFaVjI5yIgBYoEblIRHaISLmIfGuQda4Wka0iUiYifw5knkjkcrlo8g9xlKeDxCoVdF3lbwDgLdDzTycqYOVcRJzA/cDHgCrgQxFZY4zZ2med6cC3gbOMMQdFZHyg8kQql8tFvUkkNy2ejCS9el2pYOsueZIOkphQuNR2lLATyBbUYqDcGLPHGNMFPAGs7LfOl4D7jTEHAYwxrgDmiUgul5sGxlCUq+eflAq6nk7iXSWUyUyyc3Jspwk7gSxQ2UBln8dV/mV9FQAFIvKuiKwXEZ1icoTtrW2gxRPFosk6xJFSQVezGYfpoWPsHD3/dBIC+Y7JAMvMAPufDqwAcoC3RWS2MabpqA2JrAJWAUyaNGnkk45SPT097DvYCUDBhGTLaZSKPD27XsUJRE9bYTtKWApkC6oKyO3zOAeoHmCd54wx3caYvcAOfAXrKMaYB40xC40xC8eNGxewwKNNfX09TV7feaep43UOKKWCraPiQxpII2t6ke0oYSmQBepDYLqI5ItIDHAtsKbfOs8C5wKIyFh8h/z2BDBTRHG73TR740iMcTA+WTtIKBVs3sYKmkkhR88/nZSAFShjTA9wK/ASsA14yhhTJiL3iMhl/tVeAhpEZCvwOnCXMaYhUJkijcvlotEkMiNzDCIDHXFVSgVMdwfxbZV0JOUSo+PvnZSAnrUzxqwF1vZb9v0+9w1wh/+mRpjbXU+Tiee8zDG2oygVcXq2v0i06aJj8grbUcKWjiQxipXXHqTTOJmTrWPwKRVsbTtepwcnY2Zr5+STpQVqlOrp6WFPYxcAs7O1BaVUsPXUlNFIKjl5U21HCVtaoEaphoYG3N4EnKJdzJUKus4WUhs24o6fTnx8vO00YUsL1Cjldrs56I0nPyNe54BSKsi8+/+Bkx7aJp1rO0pY0wI1SrndbtpNDLkZev2TUsF2eNNz9OAkqfA821HCmhaoUcrtdtMuMWTqFO9KBZ2p/IADZJI7tdB2lLCmBWqUqnW5afc6GZesBUqpoOpuJ7F5J+64KSQn6/nfU3HcAiUij/S5f1PA06gR4fF42NfQhkHIy0iwHUepiGKqN+LAS8/EBbajhL2hWlBz+9y/LZBB1MhpbGykyeO7cj0nTQuUUsF0eNs6ABIKzrGcJPwNVaD6jz6uwoBvkFhf19ZZWXoNlFLBZHaspZaxZBfMsx0l7A011FGOiNyHb+qMI/d7GWO+GrBk6qS53W6aTBxjk2JIitU5aJQKGk83sc17KI86jbnp6bbThL2hvr3u6nO/OJBB1Mipr6+nkTGcrrPoKhVcZc8Q7e2gJftMHaB5BBy3QBlj/hCsIGrk7K1p4KAni6IcLVBKBVPX3veBaKIKL7YdZVQYspu5iNwkIh+JSJv/ViwiNwYjnDpxXq+XYpcXgAtPm2A5jVKRpevAZtykMzkv33aUUeG4LSh/Ibod33QYH+E7F7UA+JmIYIz5Y+AjqhPR3NxMU080CdHCDB2DT6ngMYaog+U0OHKYnZlpO82oMFQL6hbgU8aY140xzcaYJmPMa8AV/udUiHG73TSbOLJTYvUYuFLB5N5BXHcThzNm43DoGAgjYah3cYwxpqL/Qv8y7b8cglwuF25vIgsmaw8ipYKpe8dLvjtTdPy9kTJUL772k3xOWbKvtoFuopgxUTtIKBVMXdte4hCpTJi52HaUUWOoAlUoIpsHWC7AlADkUadoX91BYBwTxugYfEoFTVcbsbUb2CEFzM7Otp1m1BiqQM0FJgCV/ZZPBqoDkkidNGMMBxpbgHGMTYqxHUepyFFXRpS3g/qM04mJ0c/eSBnqHNR/A4eMMfv63oDD/udUCGlpaaGxyzc5YVaqzuKpVLB4arYAED/5dMtJRpehClSeMeaYQ3zGmGIgLyCJ1Elzu93UexNIi48iJ00LlFLB0rZvI904GTddC9RIGqpAHe9Ehn4Dhhi3202biSE3PV67mCsVRN7qEtyMZdLkPNtRRpWhCtSHIvKl/gtF5GZgQ2AiqZPldrs5TBzZaYm2oygVOTzdJDbvpDFuMgkJOr3NSBqqk8TtwDMicj3/LEgLgRjgU4EMpk6c211PmxlHtp5/UipovNUlRHs76Jio3ctH2lCDxdYBZ4rIucBs/+Ln/aNJqBBijKHCdZBuM17PPykVRG2la0kGEmaebzvKqDOsyYKMMa8Drwc4izoFbW1t7Gvz/XcuzNNRJJQKmp0vUkUmWTN0iveRpgNGjRJut5vDxnf9xaQMPQ6uVFAYQ3RLJQejJ5KaqqO3jDQtUKOE2+2mnSiiHEKyzqKrVFCYQ9XEeVrwjJtlO8qopAVqlHC73TSTxNRxidrFXKkgObTPd5loQm6R5SSjU0ALlIhcJCI7RKRcRL51nPWuFBEjIgsDmWc0c7ncNJoEnUVXqSBq2/oKABkzllpOMjoFrECJiBO4H7gYmAVcJyLHtINFJBn4KvCPQGWJBPtcB2nzOJmVpbOgKBUsUr2RBskgPV9bUIEQyBbUYqDcGLPHGNMFPAGsHGC9/wB+CnQEMMuo5uvB5/uvLMpJsZxGqcgR31rB4aTJelg9QAJZoLI5ehT0Kv+yXiIyH8g1xvw9gDlGPZfLhcubRIxTmJOth/iUCoZD1eWkehsxE+fZjjJqBbJADfQnhel9UsSBb0T0rw+5IZFVIlIsIsVut3sEI44ObrebFm8suWnxxERpvxelguFgyfMAJMy+2HKS0SuQ32ZVQG6fxzkcPYdUMr7RKd4QkQrgDGDNQB0ljDEPGmMWGmMWjhs3LoCRw5PL5aJN4sgbl2Q7ilIRw7v3bbqIJn3WCttRRq1AFqgPgekiki8iMcC1wJojTxpjmo0xY40xecaYPGA9cJl/Kg91AlwuXwtqUrpeoKtUUHg9jG34AHfiDBxROkFhoASsQBljeoBbgZeAbcBTxpgyEblHRC4L1H4jjTGGirpGuoyDvAwdxVypYGjf8DjJ3mZapl1uO8qoFtAhB4wxa4G1/ZZ9f5B1VwQyy2jV2tpKY4cXQEcxH0J3dzdVVVV0dGiH0ZEWFxdHTk4O0dHRtqMERdvOt4giijGLr7MdZVTTMXHCnMvlos3EApCZcrz5JVVVVRXJycnk5eVpt+ARZIyhoaGBqqoq8vPzbccJClNbRoOMJXNilu0oo5p2+QpzLpeLg944BJiqnSSOq6Ojg4yMDC1OI0xEyMjIiJyWaWcrqS076EzMxuHQr9BA0nc3zLlcLg45kskfm0h8jNN2nJCnxSkwIul9bd/0V6LppnXGFbajjHpaoMKcy+XiEIlMn6CtJ6WCoWvjX/DgIG3eJbajjHpaoMKYMcZ3kW6Pk+xU7WKuVMB1NDOm5h1KnPPIzJ5kO82opwUqjB08eJDDXR46vZCRpNdiKBVw29ciGA5NXKbnn4JA3+EwVldXR6PX13KamZlsOY0KRa+++iqf/exnAV8vxieffLL3uffee4+77777mOVqcF07X6WNeOJP+4TtKBFBC1QYq6ur46DxXfs0c6JOs6GOtWnTJubOnQvAunXr+Oijj3qfO/PMM/nBD35wzHI1uJ4Dm6hhPPlTptiOEhH0Oqgw5nK5aIlOJ9kRRZZeA3VCXnzxRWpra0d0m5mZmVx00UVDrrdixQp+85vfMGPGDBoaGjjnnHPYsmXLgOteddVVTJgwgZKSEiorK3nsscd48MEHWb9+PcuXL+fhhx/mjDPO4IknniAvL48DBw6wcuVKiot9I4Zt2rSJG2+8kXfeeYc77riD1NRUXnrpJZ555hm+8Y1vcNtttx2zPFKuZTphzQdIaN5FffSZTB0/3naaiKAtqDBWU1vHns4kziscH1HdfMNdeXk506dPB2Dz5s3MmTNn0HVLS0uZMmUK77zzDjfddBM333wzP/nJT9iyZQtPP/00nZ2d7N+/n8mTJw+4vSMtqGXLlrFo0SKee+45SkpKyM/PZ8uWLcyZM+eY5WpgZs8bALROOl8/b0GiLagw1dXVRUXDYQ57hGXTxtqOE3aG09IJhH379pGd/c8LPDdv3kxRURFtbW3ccsstxMTEsGLFCq6//no6Ojpoamri9ttvByA+Pp6bb76ZiRMnApCQkMD+/fvJz8/v/cLsW6C6u7s5dOgQR2YA2LFjBzNmzAB8Fy13d3eTkpJy1HI1uO4Nf6KdJNIKV9iOEjG0BRWmXC4XdV7ftU+Fev4pbJSUlFBU9M/pwTds2EBRURFPP/00V155JQ899BBr1vgG/S8rK2PBggW9xWzTpk0sWbIE8HV4yMrKorS09KgWU3Fxce/2t27dSmFhIQANDQ2kpKT0jpVXVlbGrFmzjlmuBtHTRVT1BrYxnSlTp9pOEzG0QIWp2tpaGrwJJMU6tQdfGNm0aVPvkEC7du3iueeeY8ffnPEAABeaSURBVM6cOVRVVZGb65s+zen0jQhSWlra28EB/tnaOrKdoqIiGhsbiY/3dZTZtm0bzz//fG/B2rRpE/Pm+WZ73bt3L1lZ/xw3rrS0lKKiomOWq0HUluLwdtGQWEBaWprtNBFDC1SYqq2t5SBJTB2XRJRT/xvDRUlJCV6vl7lz53LPPfdQWFjIH/7wB3JycqiqqgLA6/WNTl9aWtpbYDo6Omhvb+/9cjxSrD7+8Y+zbt06rr76av7yl7+QkZHBhAkTgKN78M2cOZP6+npmz57Ne++911ug+i9XA/PueR0DxEw5y3aUiCLGmKHXCiELFy40R3ooRbKHHvotP9mTyeeXTeG7l8yyHScsbNu2rfeQly3Tpk1j48aNJCcf3epta2vj1ltvJS4ujmXLlnH99ddbSnjyQuH9DZSOBz9OS/VO3Fc/z6xZ+nkbaSKywRhzzGzq2kkiDHm9XvbVNtBjJuocUGGkpaUFh8NxTHECSExM5Pe//72FVGpIxhBVV0oF05itvRyDSo8NhaHGxkaaenz/dVlaoMJGcnIyO3futB1DnaiWWqI8bfSk5PWe71PBoQUqDNXU1ODWHnxKBUXnvg8AiM1bbDlJ5NFDfGGopqaGOu8YMhJjyEnTv+iUCqSW0rU4cTJ+3oW2o0QcbUGFoT1VtRzwjuGCwgl6RbtSARZV+R5VjlyyJk+zHSXiaIEKM8YYthxopts4+ETRRNtxlBrVTMchxrRX0p5xmk6vYYG+42GmqamJ2k7fVf+z9PyTUgHVXLwaB4bogvNtR4lIWqDCTHV1NTXeMUxOi2VccqztOEqNXsbg/McvaWIMmUuutJ0mImmBCjOVVVXUeZNYXjDBdhSlRremfSS37GZbygqSxqTYThORtECFmc0VLnpwMjc31XYUpUa17td/AoBjhp2R75UWqLDi9Xr5sLoTgCX5GZbTqHCgU76fpM5WnFtWs4UCcuedaztNxNICFUbq6+vZ3ZXCrHExTMpIsB1HhQGd8v0k1W3B4e1iT/y83vm3VPDphbphpLyikoMmniumjbMdJezplO865fvxeDf/BYODmBkX6LWGFmkLKoy8u6Mag7C8UOfvCWc65Xvo6979FnvJZeppC2xHiWjaggoju2sOAhnkZSTZjhL2Qm3K9z179vDDH/6Q5uZmVq9eDaBTvtvS1Ub0wd3UORezRAu2VdqCChOdnZ3sa+4h1gnZOv5e2BpsyvcpU6bw8MMPH7WuTvluh7d8HQ48eCedSVSU/g1vU0ALlIhcJCI7RKRcRL41wPN3iMhWEdksIutEZHIg84SzAwcOUO9NpGBcPE6HHhMPV4NN+T4QnfLdjpatr+HBQcb8S21HiXgBK1Ai4gTuBy4GZgHXiUj/qSg3AguNMUXAauCngcoT7ir27aPRJLAgb6ztKOoUDDbl+0B0ync7uvYX42Ys02bOth1FGWMCcgOWAi/1efxt4NvHWX8+8O5Q2z399NNNJPqfh/5kJn/z7+aP71fYjhK2tm7dajuCmTp1qjl06NAxy+vr682Xv/xlM2XKFPOjH/3IQrJTFwrv76ny9HSb9rvHm/L/vsR2lIgCFJsBvu8DeYA1G6js87gKWHKc9W8GXhjoCRFZBawCmDRp0kjlCxsej4c39/su0D17uragwtXxpnzPyMjggQcesJBK9VVT+jbZdBA7bbntKIrAnoMa6ESJGXBFkRuAhcDPBnreGPOgMWahMWbhkR5JkaS2tpa6nngmp0QzOSPRdhx1knTK99DX9o8/AjB+gZ5/CgWBLFBVQG6fxzlAdf+VROQC4LvAZcaYzgDmCVv79u2jxcSSP16n11AqUDweD9F1GzkUm0VM1mm24ygCW6A+BKaLSL6IxADXAmv6riAi84Hf4CtOrgBmCWsbduznkIlj+QwdwVypQNmzcytZ3iq8Occ7E6GCKWAFyhjTA9wKvARsA54yxpSJyD0icpl/tZ8BScBfRKRERNYMsrmI5fF4KNl/EIClU3SAWKUCpeHdPxJLN8ln3GA7ivIL6FVoxpi1wNp+y77f5/4Fgdz/aFBTU4O7OxqHwNTxev5JqUDo6Ogg5cCbdESnEjf1PNtxlJ+OJBHi9uzZw0FvPPkZCcRGOW3HUWpU2vfW4xSaHZicxeDQr8VQof8TIW737t0cciRRmKUzeioVKKnF/02XxBB32c9tR1F9aIEKYZ2dneytrKa5J4qCCcdeO6OUOnWu6v2M7arENXklkqajrYUSLVAhbO/evRzo8Z13KpyoXcyVCoSKt57AiZexp1829MoqqLRAhbBdu3ZRSxqxUQ5WzIi8C5SVPUlJkTGlS3d3N85dL9IjMcTN0D5boUYLVIgyxrBjx04qvBmcXTCOaKf+Vyk10kpLS8nz7KYr+wyISbAdR/Wjk52EqOrqaipbPLT1iI6/FwA/+FsZW6sPjeg2Z2WN4e5PDj0CwYlM+X5EW1sbV199NVVVVXg8Hr73ve9xzTXXcPnll1NZWUlHRwe33XYbq1atoqKigosuuohly5axfv165s6dy+c//3nuvvtuXC4Xjz32GIsXL+5db8mSJWzcuJGCggL++Mc/kpBw9Bf1o48+yn333UdXVxdLlizhV7/6FU5n+PcoNcZQ8/afWEATZvYltuOoAeif5SFq+/btVHlTATh35njLadRIOpEp34948cUXycrKYtOmTWzZsqV3RuDf/e53bNiwgeLiYu677z4aGhp693HbbbexefNmtm/fzp///Gfeeecdfv7zn/OjH/2od7s7duxg1apVbN68mTFjxvCrX/3qqP1u27aNJ598knfffZeSkhKcTiePPfbYSL0VVlVUVDD34Fq6YjOQhV+wHUcNQFtQIcgYw6ay7ew0k1iUl0ZOmh56GGnDaekEwmBTvre1tXHLLbcQExPDihUruP7664963Zw5c7jzzjv55je/yaWXXsry5b7Rtu+77z6eeeYZACorK9m1axeZmZnk5+f3Fr7TTjuN888/HxFhzpw5VFRU9G43NzeXs846C4AbbriB++67jzvvvLP3+XXr1rFhwwYWLVoEQHt7O+PHj44/mDa/uYaV1OJZ+h2IirEdRw1AC1QIcrlcvO9y0tLj4DufKLQdR42ggaZ8v+aaa3j66ae58sor+eQnP8k111xzTIEqKChgw4YNrF27lm9/+9tceOGFnH322bz66qu8//77JCQksGLFit7ZemNjY3tf63A4eh87HA56enp6nxM5etKB/o+NMdx0003853/+58i8ASHC5XIxreJRvI5onEVX246jBqGH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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior_mu0_student.make_cdf().plot(color='gray', label=r'$\\mu_0 multi t$')\n", "posterior_mu1_student.make_cdf().plot(color='gray', label=r'$\\mu_1 multi t$')\n", "\n", "Cdf.from_seq(sample_mu0).plot(label=r'$\\mu_0$ sample')\n", "Cdf.from_seq(sample_mu1).plot(label=r'$\\mu_1$ sample')\n", "\n", "decorate(xlabel=r'$\\mu$',\n", " ylabel='CDF',\n", " title=r'Posterior distribution of $\\mu$')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Compare to analytic univariate distributions" ] }, { "cell_type": "code", "execution_count": 109, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(20, 10.409286443363563, 5.777663231781492)" ] }, "execution_count": 109, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prior = 0, 0, 0, 0\n", "summary = n, xbar[0], S[0][0]\n", "summary" ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(10.409286443363563, 20, 10.0, 57.77663231781492)" ] }, "execution_count": 110, "metadata": {}, "output_type": "execute_result" } ], "source": [ "params = update_normal(prior, summary)\n", "params" ] }, { "cell_type": "code", "execution_count": 111, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(10.409286443363563, 0.5665521076251745)" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dist_mu0 = make_posterior_mu(*params)\n", "dist_mu0.mean(), dist_mu0.std()" ] }, { "cell_type": "code", "execution_count": 112, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "19.930298060446894" ] }, "execution_count": 112, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mu0s = np.linspace(7, 12, 101)\n", "ps = dist_mu0.pdf(mu0s)\n", "posterior_mu0 = Pmf(ps, index=mu0s)\n", "posterior_mu0.normalize()" ] }, { "cell_type": "code", "execution_count": 113, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(20, 19.839156108992704, 12.385876143614098)" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prior = 0, 0, 0, 0\n", "summary = n, xbar[1], S[1][1]\n", "summary" ] }, { "cell_type": "code", "execution_count": 114, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(19.839156108992704, 20, 10.0, 123.85876143614098)" ] }, "execution_count": 114, "metadata": {}, "output_type": "execute_result" } ], "source": [ "params = update_normal(prior, summary)\n", "params" ] }, { "cell_type": "code", "execution_count": 115, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(19.839156108992704, 0.8295204820863575)" ] }, "execution_count": 115, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dist_mu1 = make_posterior_mu(*params)\n", "dist_mu1.mean(), dist_mu1.std()" ] }, { "cell_type": "code", "execution_count": 116, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "16.64813735166017" ] }, "execution_count": 116, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mu1s = np.linspace(17, 23, 101)\n", "ps = dist_mu1.pdf(mu1s)\n", "posterior_mu1 = Pmf(ps, index=mu1s)\n", "posterior_mu1.normalize()" ] }, { "cell_type": "code", "execution_count": 117, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3deZxU9Znv8c9T1dX7SgMNdDc0q+wNCkKEKCpuiVsmTNCriZkY9cbxOsmMmeiY8SZeE50k986Mr5gYExOzGU2MMSSucSMKuIDsmzTY0N3QS1Xv+1LP/aMKUjS9QXf1qeV5v171opZTVd8quuqpc87v/B5RVYwxxphI43I6gDHGGNMXK1DGGGMikhUoY4wxEckKlDHGmIhkBcoYY0xEsgJljDEmIlmBMsYYE5GsQBljjIlIVqBM3BOR3SKyKoyP/4SIPBCO5wp9PBEpFZHV4Xjs0SIiZ4nIVhFpEpE7R/O5TeSxAmVGVfBLtE1EmkWkSkR+JiLpw3y8YX0pq+o8VX1zOI8x0s811Nc1Utn7er7RfF9C/CvwpqpmqOrDo/zcJsJYgTJOuEpV04GzgaXA150IISIJTt4/Wp87zKYAu50OYSKDFSjjGFWtAF4E5gOIyBwReVNE6oObl64+vqyIfE1EKoKbfvaLyMUi8ktgMvCn4BrZvwaXnSQivxeRGhH5KHRTUXBN4WsisgNoEZGE3msPg+Q45f69X5eILBaRD4JZnwaSe90/9LlO53UNmh1YKiJ7RKQuuHYa+twqIjNCLj8hIg8M8nyrB3tPQpa9S0R2iEiDiDwd+ty9lu3zsUTkdeBC4PvBHLP6uO+9IvLDkMs5ItLV33OZKKeqdrLTqJ2AUmB18HwhgV/L/wfwACXAvwGJwEVAE3BW8FQGTArerwiY3vvxgpddwBbgvuDjTAMOAZeFLL8t+NwpfWTqN0d/9+/1+hKBw8BXgo+1BugCHujjuYb8uoaYvRTYFbx9DLDh+PMGb1dgRsjlJ/rK1fv/arD3JGTZ94BJwefeC/zPPt6fwd7fN4EvDvD38xRwW8jlC4FdTv9d2yk8J1uDMk54TkTqgbeB9cC3geVAOvCQqnaq6uvAn4HrgR4gCZgrIh5VLVXVg/089lJgnKreH3ycQ8CPgetClnlYVctUta2P+w+UY6j39wD/papdqvoM8H4/WU/ndQ3luQG+H7y9FvhWr9xnaijvyfFsR4PP/Sdg0TAeqz8LCBTp4xYB24f+Ukw0sQJlnHCtqmar6hRVvT34ZTsJKFNVf8hyh4F8VS0Bvgx8A6gWkadEZFI/jz0FmBTcfFQfLIT/BuSFLFM2QLZ+c5zG/StUNbSPzeG+FjzN1zWU5+59++FgnuEaynsCUBlyvpVAITrTxzqFiCQC04GdIVcXc3LBMjHECpSJFEeBQhEJ/ZucDFQAqOqTqrqSQAFS4D+Cy/RuaFYGfBQsgMdPGar6iZBlBmqCNmCOIdz/GJAvItLr/n06jdc1lOeGwOa90Oc9GnK5FUgNuTxhiI87lPdkqIbzWHMJFP9WgOB7vApbg4pZVqBMpHgXaAH+VUQ8Ejj+5irgKQkcG3ORiCQB7UAbgc1jAFUE9jMd9x7QGBxMkCIibhGZLyJLh5tjiPffBHQDdwYHMfwdcG5fC57m6xqqfxSRAhEZQ2DN8emQ27YB/yP4nlwOXBBy20DPN9z3ZKQeawEwXkSmi0gKgX2XUwjs/zIxyAqUiQiq2glcDVwBeIEfAJ9T1X0E9tM8FLy+EhhP4MsX4EHg68HNeXepag+BL7xFwEfB+/wEyBqBHEO9/98BnwfqgLXAs/0sPuTXNZTnDnoSeIXAwJBDwAMht/0TgfemHrgBeC7ktn6fb7jvyQg+1gLgZQIjP0sIFNVDwL2nm8NEBzl5U7kxxkQmEXkR+Imq/t7pLGZ02BqUMSZaLCAwfN3ECVuDMsZEPBHJIbBJL01Vu5zOY0aHFShjjDERyTbxGWOMiUhRN+Hk2LFjtaioyOkYxhhjRsiWLVu8qjqu9/VRV6CKiorYvHmz0zGMMcaMEBHpc7YV28RnjDEmIlmBMsYYE5GsQBljjIlIUbcPypgz1dXVRXl5Oe3t7U5HiTnJyckUFBTg8XicjmJiiBUoEzfKy8vJyMigqKiIkycbN8Ohqvh8PsrLy5k6darTcUwMCdsmPhH5qYhUi8iufm4XEXlYREqCbaLPDlcWYwDa29vJzc214jTCRITc3FxbMzUjLpz7oJ4ALh/g9iuAmcHTrcAPw5jFGAArTmFi76sJh7Bt4lPVv4pI0QCLXAP8Ith59B0RyRaRiap6LFyZTOSr9tWxae8RjlTVUt/WRdH0WbR09tDa0U1LZw+Xzs1j2bRcp2MaE718B+HwRrSzmZ62Rrpa6vG3N+JbcBvtkkxXVxddXV10d3fT3d1NT08PPT09+P3+EydVPfHvggULyM8ftCHyGXFyH1Q+J7enLg9ed0qBEpFbCaxlMXlyv81JTRQqqWrimU37Wb+/imONnTT0eFBCfo3v2n3ibFqim6KxaVagjBlI7UeBItR0DH/jUdqqP6K7rgyaKvG0+0jprkeCn7IEwIXQQSLP7kqiQQZvm+ZyuXC5XIgILpeL/Pz8mCxQfW0T6HPmWlV9DHgMYMmSJTa7bZRr7ezmjX3V/Hz9Xt6rCOy3yHG1MTkzgfwxKSydPo55UyYwPjuN9KQE0pLcJCe4cblsM5Ix/Srfgm76PrL7b/0xXYCQTDvpNJFOR+JUOnIm4cv7OIlZeSRm5JCcmklySgrXJCeTmJiIx+PB4/GQkJBAQkICbrcbt9t9oiiNJicLVDlQGHK5ADjqUBYzShraurj64fUcruvAQw9LM1u55YKZXHjuQhuiHAbnnXceGzduPOm6+vp6nnzySW6//XaHUplha62FTd8HXwl0NNHtPURCQyndJLCDBeyRs0icMJvcKXOYWDiVvLw8pubk4Ha7nU5+WpwsUOuAO0TkKWAZ0GD7n2JbW2cPt/0kUJw+llbNP1+1hCXF820Hexj1Lk4QKFA/+MEPrEBFq4ot8MwXoK6U7vRJ1HUl0tih1Mpijs66iZnFy/jM9OkkJSU5nXTYwlagROQ3wCpgrIiUA/8b8ACo6qPAC8AngBKgFfiHcGUxzlNVPv1fr7Cn1s8F49p59PbrSElJcTqWI1atWsWPfvQjzjrrLHw+HxdccAG7dvV5NMYJpaWlXHnllSeW+973vkdzczOf//znueKKK1i5ciUbN24kPz+fP/7xjyfe2/T0dJqbm096rLvvvpuDBw+yaNEiLrnkEr773e+G54WakeP3w74/w7s/gsNvoy4P6wvuZH1FAunp6Sw/fzlnn302S2PsMxXOUXzXD3K7Av8Yruc3keWR37/Onlo/lxUoP7z9U7hczs6y9dJLL1FZWTmijzlhwgQuv3ygIysCSkpKmDlzJgA7duxgwYIFw3reAwcO8Jvf/IYf//jHfOYzn+H3v/89N954Y7/LP/TQQ+zatYtt27YN63nNKPrrd+DNB9GMSRyd+Tn+UJpGU00qF1/8cZYtWxazm8dtJgkTdhve38pPttSR7E7m/91ymePFyUmHDx8mPz//xHuwY8cOFi5cSEtLC7fffjuJiYmsWrWKG264YciPOXXqVBYtWgTAOeecQ2lpaTiiG6cceRfW/wc9c67lD3I5u/d+yPTp0/nsVVeRlTX4qLtoZgXKhFV1dTUPrNtBvY7lP66ZT1pSZPzSG8qaTjhs27aNhQsXnri8ZcsW1q5dy7PPPsuaNWu46qqrWLt27SkFKiEhAb/ff+Jy6KwNofsa3G43bW1tYXwFZlS1eOGZL6ApOfyy7myOVB9g9erVnHfeeXGx7zZ+f8qasPP7/Xz9F6+yt2ssZxdmsvbcKU5Hctz27dtPFJcDBw7wxz/+kQULFlBeXk5hYWBQa18jrfLy8qiursbn89HR0cGf//znM86QkZFBU1PTGd/fjBJV+PNXoLGcdQlXU+Fr5rrrrmPFihVxUZzACpQJo5fWv8Ob3jQmZ3n4xRc/5nSciLBt2zb8fj/FxcXcf//9zJkzh5///OcUFBRQXl4OcNKa0nEej4f77ruPZcuWceWVVzJ79uwzzpCbm8uKFSuYP38+X/3qV8/4cUyYvXQ37F1HuWcaezry+OxnP8usWbOcTjWqJDBWIXosWbJEreV75GttbeXqB//AR91ZvPyVC5gxPsPpSOzdu5c5c+Y4mmHGjBls3bqVjIyT34+WlhbuuOMOkpOTWbly5Wntg4oUkfD+xow3HoT1D+HzTOLH/s9w3Wf/gaKiIqdThY2IbFHVJb2vt31QJix++fxfKenK4rrFEyKiOEWCpqYmXC7XKcUJIC0tjZ/97GcOpDIR58NXYP1DlOWs4Bd1Z3Pt338mpovTQGwTnxlxh475+OHWZjI98G/XFDsdJ2JkZGTw4YcfOh3DRLK9f4Knrqctczq/qDubj51/EfPmzXM6lWNsDcqMuHt/+x71/hT+85qzyEyOjFF7xkQ8VVj/HXrSJ/KDtqsomDqNVatWOZ3KUbYGZUZUZ2cne6ramJfVzaeWzXA6jjHRQRU2PgyVO9gpc+hOSOVTn3L+gHanxferNyPu+bc/oMGfxMfnFjgdxZjo8ca34S/3UZe3gnUNc7nsssvIzMx0OpXjrECZEfXTjUfwiJ9bL57vdBRjokN9GbzzQ7qnreYnDSspmjad4mLbdwtWoMwI2n2wjF3NKVxQlMqY9OifSdmYUfHbz4G/m7dSLqW9q4crrrgibg7EHYwVKDNifvfWThQX160484NIjYkrLV44+gEti27mrb1VLF26lHHjxjmdKmJYgTIjwu/389rBJnKT/KyaM9HpOMZEh+1PAbCpJo3ExETOP/98hwNFFitQZkR8ePAjKrpSOX9aNglu+7MyZki2PUln3iI2HOnivPPOIzU11elEEcW+ScyI+MOmvfhxsXrRVKejmBDnnXfeKdcd76hrHNZQATV7+bCngOTkZJYtW+Z0oohjBcoMm6ry+sFGkt3KBbMnOB3HhBio5btx2EfrQf285c1h2bJlMdGifaRZgTLDdvToUSo6Uji3II30JJucZDCrVq1i//79APh8PubPH3xIfmlp6UnLfe973+Mb3/gGpaWlzJkzh1tuuYV58+Zx6aWXntQPKj09/ZTHCm35brOZO6S7A/76XdoTMmn0jLe1p37Yt4kZtpff30sriVwwL3oOzrWW79by3VE7n4HaQ7ziuoIFS5aQkpLidKKIZGtQZthe31cNwLVnT3Y4SeTrr+X7oUOHuPnmm1mzZs1pP6a1fI9C+1+gPSmXrf7ZtvY0AFuDMsPS3NzM7gYPU7Pc5EbRwbmR1vJ92rRpPP744/0WKGv5HkPaG9FDb1Lin8HMWbPIzc11OlHEsjUoMyw79pVQpymsnjPe6ShRob+W74Oxlu8xpOw9pLOZ7d1FLFlySo8+E8IKlBmWN3YeBoSLFtjmvaHor+X7YKzlewzZ+N+0ujOpz5rLjBk24/9AbBOfOWOqysbDzSS6slhUmON0nKiwY8eOPlu++3w+7r33XrZu3cqDDz7IPffcc8p977zzTu68885Trt+1a9eJ83fddddJtzU3N/eZ48knnzyT+Ga4OlvRI++yrWc+889eHvftNAZjBcqcMZ/Px5GOZBZOSCYl0e10nIg3UMv33NxcHn30UQdSmVF1eCPS08EhpnClzVg+KCtQ5oy9u/sgTZrMqjl2cO5QWMt3o+/9iB4SkKIVZGdnOx0n4tn6pTlj7x04BsDK2fkOJzEmCtSXIQde4T2Kmb94qdNpooIVKHNGVJWdR5tIEGXupCyn4xgT+TY/jl/cbE04Z1iDXOKJFShzRhobGznUlsJZuYkkJtifkTEDUkU/fIkqyWP8WefavHtDZN8s5ozsLSmlXlP4+MyxTkcxJvI1VyHVe9nnnzKkuRdNQFgLlIhcLiL7RaRERO7u4/bJIvKGiGwVkR0i8olw5jEjZ8O+CgBWzIme+feMcUztRwBUewpPzMNoBhe2AiUibuAR4ApgLnC9iMzttdjXgd+q6mLgOsB6AESJ7eUNACyabMc/GTMYf/UeALKmLiYhwQZPD1U416DOBUpU9ZCqdgJPAdf0WkaBzOD5LOBoGPOYEdLV1UVpo5+8VCEj2eN0HGMiXvu231NHJpOLL3A6SlQJZ4HKB8pCLpcHrwv1DeBGESkHXgD+V18PJCK3ishmEdlcU1MTjqzmNFRWVtLoT2L6WGtPbcyg2htIPvoO+11nMcM2752WcBYo6eM67XX5euAJVS0APgH8UkROyaSqj6nqElVdMm7cuDBENaejvLycZk1k+gQ70DBW9dXo0JwZ3fc8Lu2hqfBCEhMTnY4TVcJZoMqBwpDLBZy6Ce9m4LcAqroJSAZsWFiE23/4GN24mZ5nxz8ZM5iud39GLVmMLXamxUs0C2eBeh+YKSJTRSSRwCCIdb2WOQJcDCAicwgUKNuGF+G2l9UCcNaEzEGWNH05k5bvLS0tfPKTn6S4uJj58+fz9NNPA3DttddyzjnnMG/ePB577DEg0B5+9uzZfPGLX2T+/PnccMMNvPrqq6xYsYKZM2fy3nvvnbTcTTfdxMKFC1mzZg2tra2nPPevfvUrzj33XBYtWsRtt91GT0/PSL0Vsa+jGU/lZg4xhZmzznI6TdQJ23ASVe0WkTuAlwE38FNV3S0i9wObVXUd8C/Aj0XkKwQ2/31eVXtvBjQRpL29nSMNgS+o+fnRW6C++afd7DnaOKKPOXdSJv/7qnmDLncmLd9feuklJk2axPPPPw9AQ0NgFOVPf/pTxowZQ1tbG0uXLuXTn/70ief43e9+x2OPPcbSpUt58sknefvtt1m3bh3f/va3ee655wDYv38/jz/+OCtWrOALX/gCP/jBD06aEX3v3r08/fTTbNiwAY/Hw+23386vf/1rPve5z53emxOv6koR9dOYW2ybTc9AWI+DUtUXVHWWqk5X1W8Fr7svWJxQ1T2qukJVi1V1kaq+Es48ZviOHTtGraYwPj3BRvCdgf5avre0tHDTTTdxyy238Otf//qU+y1YsIBXX32Vr33ta7z11ltkZQU2rz788MMUFxezfPlyysrKOHDgABBoA79gwQJcLhfz5s3j4osvRkRYsGDBSS3hCwsLWbFiBQA33ngjb7/99knP+9prr7FlyxaWLl3KokWLeO211zh06FA43pqY1FYZWFPOmbrI4STRyQbkm9NSWVlJtT+dlVHe/2koazrh0F/L92effZY1a9Zw1VVXsXbtWm644YaT7jdr1iy2bNnCCy+8wD333MOll17K+eefz6uvvsqmTZtITU1l1apVJ7r1hk6l43K5Tlx2uVx0d3efuE3k5LFMvS+rKjfddBMPPvjgyLwBcaZh719JBiYtXOV0lKhkUx2Z0/J+SSUtmsTKWdbi/Uz01/K9vLycwsLAmCK3+9TeWkePHiU1NZUbb7yRu+66iw8++ICGhgZycnJITU1l3759vPPOO6ed58iRI2zatAmA3/zmN6xcufKk2y+++GKeeeYZqqurAaitreXw4cOn/Tzxyl22iTrJZXzhdKejRCVbgzKnZWNZK5DIVcWTnI4SlbZt20ZKSgrFxcUsXLjwRMv3oqIiysvLWbRoEX6//5T77dy5k69+9au4XC48Hg8//OEPWbBgAY8++igLFy7krLPOYvny5aed5/jz33bbbcycOZMvfelLJ90+d+5cHnjgAS699FL8fj8ej4dHHnmEKVOmnPF7EC/8nW2Mbd3PgbyrGCN9HXVjBmMFygxZV1cXB5o8TEoTslPteI4z0V/L95aWFu644w6ef/55rrrqqlPud9lll3HZZZedcv2LL77Y5/OEtoF/4oknTpwvKio66TaXy9VnJ9/QVvFr165l7dq1/b8o06eana+TB6RMXeZ0lKhlBcoMWVVVFZ24WZiX5nSUqDRQy/e0tDR+9rOfOZDKhEvj3jfIA8YtXO10lKhl+6DMkB2trKRFEynIjd7h5U6KtJbvvdemzAhSJfvIS9QnjCN5ojUnPFNWoMyQvV9ShR8XCybnOh3FmIjWXlvOuM4yavNXg+1/OmNWoMyQ7TzaBMD5NoLPmAHVbfwlAKlzbPPecFiBMkOiqpTWd5HhgbxMa1dtzEB6SjfSSgrjlvTuMGROhxUoMyQNDQ00dicwMcNzysGcxpiTpdR/SEPqFNwJNtvKcFiBMkNSXV1Np7oZk57sdBRjIlpz5UFye6ronHT6x6WZk1mBMkNSXV1NGwlMyLEJL40ZSPPbPwIgba7tfxouK1BmSKqqa2jTRCblWBddYwbSU7GNeslizKJPOh0l6lmBMkNyuNKLH2FClm3iM6Zffj8pDQdpT5l0YsZ6c+bsHTSD8vv9HKkJ9E4an2EFKh5Y76Iz0/TR+4zxe2mdeqnTUWKCFSgzqNraWpp6AjNs2xqUMf2r27segMw5FzqcJDZYgTKDqqmpoUkDxz5NtAI1bNbyPXa5S/5CGymMmWUj+EaCTRZrBlVTU0O1P5387GTGZ8TIQbov3g2VO0f2MScsgCseGnQxa/keozqamVC/hcNZy5mWmOJ0mphga1BmUDU1NbRKKjPzMuwg3WHqr+X7oUOHuPnmm1mzZk2f97OW75Gv9cM3cdNDx1QbXj5SbA3KDKqmpoZGfwGTx8TQEPMhrOmEQ38t36dNm8bjjz/eb4Gylu+Rr7HkHVKB7AU2QGKk2BqUGZDf7+dYTS3tfmFilm22GK7+Wr4Pxlq+R76uip20ksz4ojlOR4kZVqDMgOrr62npDvyqzk2zLrrDtW3bNvx+P8XFxdx///0nWq4PZufOnScGKnzrW9/i61//Opdffjnd3d0sXLiQf//3fx9Wy/eFCxdSW1s7YMv3hQsXcskll3Ds2LHTfp54kFa3B1/qDNxut9NRYoZt4jMDqqmpocYf6KA7bZx10h2u/lq++3w+7r33XrZu3cqDDz7IPffcc9Lt1vI9srU31ZLR46NljI3eG0lWoMyAvF4vNf50UjwuFk/OcTpOVBuo5Xtubm6fhcJEh5odr1FID54Zq5yOElOsQJkBeb1e2typFOak4nbZCL7hsJbvsavp8HYAcmec43CS2GL7oMyAvF4v7ZJCfrYNkDCmP8kVG2hzpeGZNPiAFzN0VqBMv1QVr9dLU4+biVagjOlTT0crBS078Y5dDi4bIDGSrECZfrW0tFDX1k1ztzA1NzYGSKiq0xFiUjy/r96SD0ikCyk6z+koMccKlOmX1+ulzh9Yc5o3KdPhNMOXnJyMz+eL6y/TcFBVfD4fycnxOU9j+7ZnAMiZe5HDSWKPDZIw/fJ6vdRroEDNyIv+9gsFBQWUl5dTU1PjdJSYk5ycTEFBgdMxHJFa8TbH3AVMLDrb6SgxJ6wFSkQuB/4bcAM/UdVT5pcRkc8A3wAU2K6q/yOcmczQ+Xw+GkklMzmBcenRP0msx+Nh6tSpTscwMUR7uklvK6cyZ6nTUWJS2AqUiLiBR4BLgHLgfRFZp6p7QpaZCdwDrFDVOhEZH6485vT5fD68ZDI/P8smiTWmD61bniZN2+guWuV0lJgUzn1Q5wIlqnpIVTuBp4Brei1zC/CIqtYBqGp1GPOY03Ss2oev28PiydlORzEmIrXv+wvtJJG+5Dqno8SkcBaofKAs5HJ58LpQs4BZIrJBRN4JbhI0EaC7u5vSug78KiwssAJlTJ9q9uOVXPImTHQ6SUwK5z6ovrYJ9R4+lQDMBFYBBcBbIjJfVetPeiCRW4FbASZPnjzySc0p6urqaPQH9jtNGxsbQ8yNGWkpLWXUpc090d/LjKxwvqvlQGHI5QLgaB/L/FFVu1T1I2A/gYJ1ElV9TFWXqOqScePGhS2w+Ruv10ujJiFAYSz1gTJmhHQ1eUn1N6FjZzkdJWaFs0C9D8wUkakikghcB6zrtcxzwIUAIjKWwCY/a9cZAXw+H42axISsJJI9dnS8Mb15920EIGXyIoeTxK6wFShV7QbuAF4G9gK/VdXdInK/iFwdXOxlwCcie4A3gK+qqi9cmczQ+Xw+miWNqWOj//gnY8Kh5dD7AIyZbhPEhktYj4NS1ReAF3pdd1/IeQX+OXgyEcTr9VHnH8eM8VagjOlLcvlbtEg6afnznI4Ss2zPnulTmbeBTr/LCpQxfVC/n6zmEnxZCyDBOk2HixUoc4q2tjaOtgTO2wAJY07VWL6XDG3CP8mmNwonK1DmFD6fj2p/OgIsLRrjdBxjIk7D7r8AkDb7QoeTxDYrUOYUPp+PBk0iPzuJ9CSbT9iY3vyH36OLBMbM/rjTUWKaFShzCp/PR7t6GJdpTQqN6Uu6bxu+pCm4E+OzxchosQJlTuHz+ehyJcfEDObGjLTu9mZyuo7ROtbau4ebFShzCp/PR6smMDbDCpQxvdXu/Stu/HimLHM6SswbsECJyBMh528KexrjOFWl0ldPa4+LwhwbwWdMby0HNgCQNWeVs0HiwGBrUMUh5/8pnEFMZGhqaqKuM/BnMTHLtq8b05sc3UqbpJBZMMfpKDFvsALVe/ZxE+OOz8EH2EG6xvQhr2ErNRnzwJp4ht1gY4gLRORhAq0zjp8/QVXvDFsy4wifz0dzsM1GXqatQRkTqsVbRpq24h8/3+kocWGwAvXVkPObwxnERIZAm/cMJo9JZZwNkjDmJK0bfkwakDjvk05HiQsDFihV/floBTGRweurpVbTWTYhw+koxkQcLXuPWrIZO2+V01HiwqDDzEXkJhH5QERagqfNIvK50QhnRt/+yiYaehJYddZ4p6MYE3GS6w9Ql1RIYqJNEDsaBlyDChaiLxNoh/EBgX1RZwPfFRFU9Rfhj2hGi9/vp6KhHYCFBVkOpzEmsmhbHZndXiryLnI6StwYbA3qduBTqvqGqjaoar2qvg58OnibiSH19fU09AR+GeZn2zRHxoRq2P82AJ5Ca1A4WgYrUJmqWtr7yuB1meEIZJzj8/mo1VTGpXnITvU4HceYiNJ8INDiPXvOBQ4niR+DFai2M7zNRCGfz0eTP4lp49IQO8bDmJMd204T6eROnu10krgx2DDzOSKyo4/rBZgWhjzGQbW1tbSSRGFumtNRjIk4GQ37qEubRqFrnrcAABcgSURBVIb9eBs1gxWoYiAPKOt1/RTgaFgSGcdUe320ag4Ts2z/kzGhOhuqyOrx4R13hdNR4spgm/j+E2hU1cOhJ6A1eJuJIWU1DShiBcqYXmp3vwlA0tTlzgaJM4MVqCJVPWUTn6puBorCksg4oquri8rgEHObJNaYk7Uc3grAmDkrHU4SXwYrUAN9U9nP7BhSV1dHK4Eh5jYHnzEn664poZsEUscVOR0lrgxWoN4XkVt6XykiNwNbwhPJOCHQpDAwtDwv0+bgM+Y4VSWp4SAtSXk2g/koG2yQxJeBP4jIDfytIC0BEoFPhTOYGV0+n49mTSQpwcWYNJvGxZjjGuvryO85jK/gSmx+ldE12GSxVcB5InIhcHx++eeDs0mYGOLz+WhxpTMlJ9WOgTImhHfXa0ynh6SpH3M6StwZbA0KAFV9A3gjzFmMg3w+H96esVyWn+10FGMiSs+B1wDIPGeNw0niz6CzmZv4UFPjpaXHxaRsGyBhTKju2iN0uFJxZ4xzOkrcsQJlaG1tpb6tC0Vs/5MxIbq7u0lvLqUtrcDpKHHJCpTB5/PR4A+sORXkpDqcxpjIUXnsGGPxoePmOB0lLoW1QInI5SKyX0RKROTuAZZbIyIqIkvCmcf0zefzUaeBw9oW5Ns4JWOOqz64jVTaSS6yryYnhK1AiYgbeAS4ApgLXC8ic/tYLgO4E3g3XFnMwAIFKpWM5AQ7BsqYEK0fvQdAypSlDieJT+FcgzoXKFHVQ6raCTwFXNPHcv8H+A7QHsYsZgA+n48Wdzozx6fbEHNjQlXuDvybd8pvazMKwlmg8jl5FvTy4HUniMhioFBV/xzGHGYQXq+XJn8SU6zNhjEnNDY2kt1RTntKHiTbpm8nhLNA9fVTXE/cKOIiMCP6vwz6QCK3ishmEdlcU1MzghGN3++nxldHQ5eLyWNsgIQxx5WXl1PAMXRCsdNR4lY4C1Q5UBhyuYCTe0hlEJid4k0RKQWWA+v6Giihqo+p6hJVXTJunB2LMJLq6+tp6HajwJRcK1DGHFddsp1sGkmacb7TUeJWOAvU+8BMEZkqIonAdcC64zeqaoOqjlXVIlUtAt4Brg628jCjxOfz0aSBgRFWoIwJUfpXAFxTznM4SPwKW4FS1W7gDuBlYC/wW1XdLSL3i8jV4Xpec3q8Xi+NwQJVaJv4jAECB+hOr32T1uQJMGmx03Hi1pDm4jtTqvoC8EKv6+7rZ9lV4cxi+ub1emlzpZOa6GZcug0xNwbgaEU5k6iiYcpaUl02n4FT7J2Pcz6fj/aEdCaPsVnMjTmu+sAWEughfcoip6PENStQcc7r9dLgT7QRfMaE6D4Y2P+UNH6Gw0nimxWoONbW1kZjcytVbcLsCRlOxzEmIqgqudUbafOMgaKVTseJa1ag4lhNTQ0tGpi9PD8nxeE0xkQGX2U5hT2H6cidCwm2X9ZJVqDimNfrpU09AEzIsgJlDEDD1udIpgM55yano8Q9K1BxrKamhk5X4BdirvWBMgYAOfQG3bjJnH+p01HinhWoOOb1eulMzgGg0PpAGQNAet1evKkzkZRsp6PEPStQcczr9dIgGRSOSSEr1eN0HGMc19TYQE5PNX5rUBgRrEDFqc7OTurr66nsSGDuxEyn4xgTEbxb1uGhm+Spy5yOYgjzTBImcnm9Xpr9Hqo6lKVFY5yOY0xE6P7wVRTIOmeN01EMtgYVt2pqavBpoP/T4sk5DqcxJjKMrd5AVcpM3BnWNSESWIGKU9XV1VT7M0hKcDFvkm3iM6a19ig5PTW0TfqY01FMkBWoOOX1emn3ZFCUm0ayx+10HGMc593xFwBSZ9jsEZHCClScqq6upkGTrQeUMUHtBzcAkLtgtcNJzHFWoOJQZ2cn3rpGvO0u5tgIPmMA8FTvosEznoT0XKejmCArUHGourqaFvVYm3djglpbW8npKKMj5yyno5gQVqDiUKBABaY2mpCZ7HAaY5x35OA+smkksaDY6SgmhBWoOFRVVUWTpAMwfXy6w2mMcV7tnkD/p4wZyx1OYkLZgbpxqKamhtqEMeQlJZFna1DG0F22BQD3JOugG0lsDSrOqCoVldWUtiezcoYdjGhMU1MTuc376EgaC1kFTscxIaxAxZnm5mYqWqC9R7h4znin4xjjuEOHDpFPJf78JSDidBwTwgpUnKmsrKTeH9isNyvP9j8ZU7V3I9k0kjzzfKejmF6sQMWZqqoqqv3pZCUnMG2sFSgT31SV3IN/wI8LmXO103FML1ag4kxlZSV1kknx5BxcLtucYeJbTXU1U7v20Zi3HLILnY5jerECFWfKjlZR25PInIkZTkcxxnE17/6WMTSQPMfau0ciK1BxpLOzkz3eTnpUOG/6WKfjGOO41A+fo1OSSP7YF52OYvpgBSqOVFZWUuVPxy2wbKo1KTTxrbOjg8zmg9Rnz4ck26IQiaxAxZFjx47h86cxY5y12DCmYtcGcqnDNdNmL49UVqDiyNGjx/BpGsXWQdcY6na9CkB28SccTmL6YwUqjuwvq6JdE5ifn+V0FGMcpapQsYVuSSRhwnyn45h+WIGKE11dXRz0tQFYDygT96qqqpjUWULbmDngtilJI1VYC5SIXC4i+0WkRETu7uP2fxaRPSKyQ0ReE5Ep4cwTz44dO0ZdTwoAs8bbDmET3w7s3cV4fCTNsNkjIlnYCpSIuIFHgCuAucD1IjK312JbgSWquhB4BvhOuPLEu/Lycuo0mfEZiWSlepyOY4yjqvduwIWSWLjY6ShmAOFcgzoXKFHVQ6raCTwFXBO6gKq+oaqtwYvvADaVcJhUVFTQ7k6jIMc66Jr41tDQgLt6d+BC3gJnw5gBhbNA5QNlIZfLg9f152bgxb5uEJFbRWSziGyuqakZwYjx42DZMY52JrPYRvCZOLdv3z4mUo16UiF3htNxzADCWaD6muhN+1xQ5EZgCfDdvm5X1cdUdYmqLhk3znoYna7m5mZK6v0owiVz85yOY4yj9u3dyxxXKTJxEbhsnFgkC+fwlXIgdPbFAuBo74VEZDVwL3CBqnaEMU/cOnLkCC2aCEBBTorDaYxxTnNzM9WH95GpdTDL5t+LdOH8+fA+MFNEpopIInAdsC50ARFZDPwIuFpVq8OYJa4dOXIEn6YzJtVDfrYVKBO/9uzZwxQN7nkoONfZMGZQYStQqtoN3AG8DOwFfququ0XkfhE53njlu0A68DsR2SYi6/p5ODMMZWVl1LqyOHtKDmIdQ00c2717N8XJFZCSA4XLnI5jBhHWI9RU9QXghV7X3Rdy3ibBCrPOzk6OHj1GXdckZuXZ8U8mfjU2NnLk8GFuTCiBOVfYAbpRwPYQxrjy8nIa/In0KEzJtSHmJn7t3LmTJezA090ERSudjmOGwApUjPvoo4/wamDNaVGhDTE38UlV2b5tGxe53oXsKbD4RqcjmSGwAhXjSktLIT0XgKlj05wNY4xDKisr6aw5RIq/GVbcCS5rNxMNrEDFsI6ODioqKqiTLPKzU0hMsP9uE5+2bt3KDNfx0XtLnQ1jhsy+sWLY4cOH6fErJY1w4Ww7wNnEp66uLnbs2EFxZj1kTIIJC52OZIbIClQMKykpocaVQ1uXn5UzxjodxxhH7N69m472dib0VEDBErBDLaKGFagYVlJSQmt6YPrDpUVjHE5jjDO2bNnCosx6PE3lMP1Cp+OY02AFKkbV1tZSV1fHse50iguyyE1PcjqSMaOuoqKC8vJyzk/aDclZsMhG70UTK1Axav/+/TT5Eymp62aFbd4zcerdd98lzQPZvq1QfD0kJDodyZwGK1Axav/+/exPmEZigpvrz53sdBxjRl1DQwO7d+/mmvFliL8L5v2d05HMabICFYNaWlo4eLicQx3pXLFgAoVjbAYJE382bdoEqkxv2AhTVsJkm3sv2liBikH79u3jvc582nrg788pHPwOxsSY1tZWPvjgA9aMP4irqQKK1zodyZwBmy0xBr27bTeH/GO5ZlE+H5ue63QcY0bdhg0bmNe5lTmVr8Dca2HRDU5HMmfA1qBiTGNjI++UNtClLv5hRZHTcYwZdU1NTWx9920u8WyGMdPhU4/a1EZRytagYszOnTv5qGcM49I9zJuU5XQcY0bd+vXrWdyzlVSthdX/DR5r0hmtbA0qhqgq727ZyjHN4srifNwuO2LexJeqqip2b9nEBe4PYGIxzL168DuZiGUFKoaUlpay19tFtwqrzhrvdBxjRpWq8uKLL/JJ13o8Pa1wxXecjmSGyQpUDHn33XeplFySPS6WTbWpjUx82bZtGxmlLzO/ZydSfD1MXu50JDNMVqBihNfrZf/+/dR5xrJkyhiSPbZT2MSPxsZGNr78e66S19HcmXDZA05HMiPAClSM2LBhAz4yKG9WLpxtm/dM/FBV1v3hd6zqfBWP9CBrfwUp1j06Ftgovhjg8/nYvn07DTnnkNLt5jNLCpyOZMyoeXv966z86P9SRAWs/GcYP9vpSGaEWIGKAa+//jrtrhS21ibwseljyEj2OB3JmFFxaMcm8t/8MkVUoFc9jJxzk9ORzAiyAhXlDh48yJ49eyjPXU5jeTdfXj3T6UjGjIrK0v3kPft3pNFKz+r7cVtxijlWoKJYR0cHzz//PElZ43iroptPLJjAwoJsp2MZE3bVVVVU/+pWJtBK66efJHXBJ52OZMLABklEKVXlpZdeoq6ujszZ56EKN6+c5nQsY8KuoryMD39yCwu7t9F29m1WnGKYrUFFqffff59t27YxffEK/mtzDcUFWSwutLUnE9sOv/Y46W89wEpq6Zz8cVKu+KbTkUwYWYGKQrt27eLFF1+kIXceX9/YQYJLePKW5bhsaiMTo7oaazj669sprPoLba4M2i/9T5KX/QOI/c3HMitQUWbz5s089/xLHEmdw1sVKcyekMHdV8xmVl6G09GMGXn+Hqpe+S9y3nmIyXRydOwFTLj5l7hTbCLkeGAFKkq0t7fzhz+/xJ+2V7DNX0xrm4sVM3L58eeWkJpo/40mtqgqR/ZtpefPdzGtZQvVCZPouvx75C+x/U3xxL7ZIlxXVxcfbN3Kj1/Zxobm8bRRRGFOCv92wXRuXD7F6XjGjKjGxkb27NlD28bHWNH4RxLp5tjkaxj/2Z/g9iQ6Hc+MsrAWKBG5HPhvwA38RFUf6nV7EvAL4BzAB6xV1dJwZooGPT09lB4+wmub9/LS3hpK2tNp1Hym5ybzzWuLWTEjF7Ft7yYGtPiOUlO6h6qyQ1SVHaLTd4QlbKeIclqzZuK67gkmTpzvdEzjkLAVKBFxA48AlwDlwPsisk5V94QsdjNQp6ozROQ64D+AteHKFClUlc7OTtrb22lsasZX30hNbT2V3lo+PFrH+koXx7rT6cINjGV6bhLfuHg2n1qcb4XJRKbuTmgog9qPoL0eutvp6Wylq62F7vZmutqa6W6tx113CNrqcHU24e5uJV0bKQKKQh5KPamw4h5Sz7sTElOdeT0mIoRzDepcoERVDwGIyFPANUBogboG+Ebw/DPA90VEVFXDFeq1116jvLz8jO7bO9bxy6H/Hj/5/f4T//b09NDT00N3dzddXV1Ud7h5vv0sunHhP+VQtBxcwKUzM1i9cAofmzme/GzrCGoi0/bt28l46Q6K2nbi4uTPhzt4Oq4bNz6yaXNloknjcGVkU5dTREr+XLLHF+BJzYLENGTsLEjOHNXXYSJTOAtUPlAWcrkcWNbfMqraLSINQC7gDV1IRG4FbgWYPHnysEIdLxpDNdAai8vlOmkZETlxcrlcJ/51u9243W4SEhJISEigTT20HlHSkhJIS04kIy2FnIxUMtNSGJuexLxJWUzISh7W6zRmNLjdbmrS59KaWkBb8gTaUyfSk5RNQnI6CclpJKZmkJyeTUp6FhmZWWRnZJCXlOR0bBMlwlmg+vpm771mNJRlUNXHgMcAlixZMqy1q9WrVw/n7iPmU04HMGYEzJ8/H+b/yOkYJkaFc6qjcqAw5HIBcLS/ZUQkAcgCasOYyRhjTJQIZ4F6H5gpIlNFJBG4DljXa5l1wPEpiNcAr4dz/5MxxpjoEbZNfMF9SncALxPYV/pTVd0tIvcDm1V1HfA48EsRKSGw5nRduPIYY4yJLmE9DkpVXwBe6HXdfSHn24G/D2cGY4wx0cnabRhjjIlIVqCMMcZEJCtQxhhjIpIVKGOMMRFJom1Ut4jUAIedztGHsfSaASOCRUvWaMkJ0ZM1WnJC9GS1nMM3RVXH9b4y6gpUpBKRzaq6xOkcQxEtWaMlJ0RP1mjJCdGT1XKGj23iM8YYE5GsQBljjIlIVqBGzmNOBzgN0ZI1WnJC9GSNlpwQPVktZ5jYPihjjDERydagjDHGRCQrUMYYYyKSFagRICJfEZHdIrJLRH4jIhHTDldEfioi1SKyK+S6MSLyFxE5EPw3x8mMwUx95fyuiOwTkR0i8gcRyXYyYzDTKTlDbrtLRFRExjqRrbf+sorI/xKR/cG/2e84lS8kT1//94tE5B0R2SYim0XkXCczBjMVisgbIrI3+N79U/D6SPw89Zc14j5TA7ECNUwikg/cCSxR1fkEWotEUtuQJ4DLe113N/Caqs4EXgtedtoTnJrzL8B8VV0IfAjcM9qh+vAEp+ZERAqBS4Ajox1oAE/QK6uIXAhcAyxU1XnA9xzI1dsTnPqefgf4pqouAu4LXnZaN/AvqjoHWA78o4jMJTI/T/1ljcTPVL+sQI2MBCAl2BU4lVM7BztGVf/KqV2KrwF+Hjz/c+DaUQ3Vh75yquorqtodvPgOga7Mjurn/QT4T+BfgYgZddRP1i8BD6lqR3CZ6lEP1ks/ORXIDJ7PIgI+U6p6TFU/CJ5vAvYC+UTm56nPrJH4mRqIFahhUtUKAr9CjwDHgAZVfcXZVIPKU9VjEPhDBsY7nGcovgC86HSIvojI1UCFqm53OssQzAI+LiLvish6EVnqdKB+fBn4roiUEfh8RdQvfREpAhYD7xLhn6deWUNF7GfqOCtQwxTc3nwNMBWYBKSJyI3OpootInIvgU0Wv3Y6S28ikgrcS2AzVDRIAHIIbPb5KvBbERFnI/XpS8BXVLUQ+AqB7tsRQUTSgd8DX1bVRqfzDKS/rJH8mQplBWr4VgMfqWqNqnYBzwLnOZxpMFUiMhEg+K/jm3n6IyI3AVcCN2hkHrQ3ncCPk+0iUkpgk8kHIjLB0VT9Kwee1YD3AD+BSUQjzU0EPksAvwMcHyQBICIeAl/4v1bV4/ki8vPUT9Zo+EydYAVq+I4Ay0UkNfhL9GIC23sj2ToCXwAE//2jg1n6JSKXA18DrlbVVqfz9EVVd6rqeFUtUtUiAgXgbFWtdDhaf54DLgIQkVlAIpE5w/VR4ILg+YuAAw5mASD4+X4c2Kuq/y/kpoj7PPWXNRo+UydRVTsN8wR8E9gH7AJ+CSQ5nSkk228I7BvrIvDleTOQS2C00YHgv2MiNGcJUAZsC54ejcScvW4vBcY6nXOA9zQR+FXwb/UD4KIIzbkS2AJsJ7Dv5JwIyLmSwOCNHSF/k5+I0M9Tf1kj7jM10MmmOjLGGBORbBOfMcaYiGQFyhhjTESyAmWMMSYiWYEyxhgTkaxAGWOMiUhWoIwxxkQkK1DGGGMikhUoYyKMiLwpImcFz+f21XvKmHhgBcqYyDODv03tsxDY6WAWYxxjBcqYCCIiUwi07vAHr1pIYLoaY+KOFShjIssiTi5I52AFysQpK1DGRJZiIBlARGYS6DVmm/hMXLICZUxkWQS4RGQ7gSaIe/lbKwdj4orNZm5MBBGREmCxqjY5ncUYp9kalDERQkQyAL8VJ2MCbA3KGGNMRLI1KGOMMRHJCpQxxpiIZAXKGGNMRLICZYwxJiJZgTLGGBORrEAZY4yJSFagjDHGRKT/D0GgJ4KFSocYAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior_mu0.make_cdf().plot(label=r'$\\mu_0$ uni t', color='gray')\n", "posterior_mu1.make_cdf().plot(label=r'$\\mu_1$ uni t', color='gray')\n", "\n", "Cdf.from_seq(sample_mu0).plot(label=r'$\\mu_0$ sample')\n", "Cdf.from_seq(sample_mu1).plot(label=r'$\\mu_1$ sample')\n", "\n", "decorate(xlabel=r'$\\mu$',\n", " ylabel='CDF',\n", " title=r'Posterior distribution of $\\mu$')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Sampling from posterior predictive" ] }, { "cell_type": "code", "execution_count": 118, "metadata": {}, "outputs": [], "source": [ "sample_pred = [multivariate_normal(mu, Sigma).rvs()\n", " for mu, Sigma in zip(sample_mu, sample_Sigma)]" ] }, { "cell_type": "code", "execution_count": 119, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(10.343334031620982, 19.79428758822268)" ] }, "execution_count": 119, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_x0, sample_x1 = np.transpose(sample_pred)\n", "\n", "sample_x0.mean(), sample_x1.mean()" ] }, { "cell_type": "code", "execution_count": 120, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.4491840957223703, 3.5023208219780724)" ] }, "execution_count": 120, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_x0.std(), sample_x1.std()" ] }, { "cell_type": "code", "execution_count": 121, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(10.409286443363563, 2.5962679183291297)" ] }, "execution_count": 121, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prior = 0, 0, 0, 0\n", "summary = n, xbar[0], S[0][0]\n", "params = update_normal(prior, summary)\n", "dist_x0 = make_posterior_pred(*params)\n", "dist_x0.mean(), dist_x0.std()" ] }, { "cell_type": "code", "execution_count": 122, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6.224974183920316" ] }, "execution_count": 122, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x0s = np.linspace(2, 18, 101)\n", "ps = dist_x0.pdf(x0s)\n", "pred_x0 = Pmf(ps, index=x0s)\n", "pred_x0.normalize()" ] }, { "cell_type": "code", "execution_count": 123, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(19.839156108992704, 3.8013403996769934)" ] }, "execution_count": 123, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prior = 0, 0, 0, 0\n", "summary = n, xbar[1], S[1][1]\n", "params = update_normal(prior, summary)\n", "dist_x1 = make_posterior_pred(*params)\n", "dist_x1.mean(), dist_x1.std()" ] }, { "cell_type": "code", "execution_count": 124, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4.944574125732073" ] }, "execution_count": 124, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x1s = np.linspace(10, 30, 101)\n", "ps = dist_x1.pdf(x1s)\n", "pred_x1 = Pmf(ps, index=x1s)\n", "pred_x1.normalize()" ] }, { "cell_type": "code", "execution_count": 125, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pred_x0.make_cdf().plot(label=r'$x_0$ student t', color='gray')\n", "pred_x1.make_cdf().plot(label=r'$x_1$ student t', color='gray')\n", "\n", "Cdf.from_seq(sample_x0).plot(label=r'$x_0$ sample')\n", "Cdf.from_seq(sample_x1).plot(label=r'$x_1$ sample')\n", "\n", "decorate(xlabel='Quantity',\n", " ylabel='CDF',\n", " title='Posterior predictive distributions')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Comparing to the multivariate student t" ] }, { "cell_type": "code", "execution_count": 126, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.02157144760939201" ] }, "execution_count": 126, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d = len(m_n)\n", "x = m_n\n", "mean = m_n\n", "df = nu_n - d + 1\n", "shape = Lambda_n * (kappa_n+1) / kappa_n\n", "multistudent_pdf(x, mean, shape, df)" ] }, { "cell_type": "code", "execution_count": 127, "metadata": {}, "outputs": [], "source": [ "x0s = np.linspace(0, 20, 91)\n", "x1s = np.linspace(10, 30, 101)" ] }, { "cell_type": "code", "execution_count": 128, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(101, 91, 2)" ] }, "execution_count": 128, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x_mesh = np.dstack(np.meshgrid(x0s, x1s))\n", "x_mesh.shape" ] }, { "cell_type": "code", "execution_count": 129, "metadata": {}, "outputs": [], "source": [ "ps = multistudent_pdf(x_mesh, mean, shape, df)" ] }, { "cell_type": "code", "execution_count": 130, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "22.23349484051357" ] }, "execution_count": 130, "metadata": {}, "output_type": "execute_result" } ], "source": [ "joint = pd.DataFrame(ps, columns=x0s, index=x1s)\n", "normalize(joint)" ] }, { "cell_type": "code", "execution_count": 131, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 131, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_contour(joint)" ] }, { "cell_type": "code", "execution_count": 132, "metadata": {}, "outputs": [], "source": [ "from utils import marginal\n", "\n", "posterior_x0_student = marginal(joint, 0)\n", "posterior_x1_student = marginal(joint, 1)" ] }, { "cell_type": "code", "execution_count": 133, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior_x0_student.make_cdf().plot(color='gray', label=r'$x_0$ multi t')\n", "posterior_x1_student.make_cdf().plot(color='gray', label=r'$x_1$ multi t')\n", "\n", "Cdf.from_seq(sample_x0).plot(label=r'$x_0$ sample')\n", "Cdf.from_seq(sample_x1).plot(label=r'$x_1$ sample')\n", "\n", "decorate(xlabel='Quantity',\n", " ylabel='CDF',\n", " title='Posterior predictive distributions')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bayesian linear regression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Generate data" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "inter, slope = 5, 2\n", "sigma = 3\n", "n = 20" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "xs = norm(0, 3).rvs(n)\n", "xs = np.sort(xs)\n", "ys = inter + slope * xs + norm(0, sigma).rvs(20)\n", "\n", "plt.plot(xs, ys, 'o');" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import statsmodels.api as sm\n", "\n", "X = sm.add_constant(xs)\n", "X" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "model = sm.OLS(ys, X)\n", "results = model.fit()\n", "results.summary()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "beta_hat = results.params\n", "beta_hat" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# k = results.df_model\n", "k = 2" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "s2 = results.resid @ results.resid / (n - k)\n", "s2" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "s2 = results.ssr / (n - k)\n", "s2" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "np.sqrt(s2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Grid algorithm" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "beta0s = np.linspace(2, 8, 71)\n", "prior_inter = Pmf(1, beta0s, name='inter')\n", "prior_inter.index.name = 'Intercept'" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "beta1s = np.linspace(1, 3, 61)\n", "prior_slope = Pmf(1, beta1s, name='slope')\n", "prior_slope.index.name = 'Slope'" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sigmas = np.linspace(1, 6, 51)\n", "ps = sigmas**-2\n", "prior_sigma = Pmf(ps, sigmas, name='sigma')\n", "prior_sigma.index.name = 'Sigma'\n", "prior_sigma.normalize()\n", "\n", "prior_sigma.plot()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from utils import make_joint\n", "\n", "def make_joint3(pmf1, pmf2, pmf3):\n", " \"\"\"Make a joint distribution with three parameters.\n", " \n", " pmf1: Pmf object\n", " pmf2: Pmf object\n", " pmf3: Pmf object\n", " \n", " returns: Pmf representing a joint distribution\n", " \"\"\"\n", " joint2 = make_joint(pmf2, pmf1).stack()\n", " joint3 = make_joint(pmf3, joint2).stack()\n", " return Pmf(joint3)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "prior3 = make_joint3(prior_slope, prior_inter, prior_sigma)\n", "prior3.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "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": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "data = pd.DataFrame(dict(x=xs, y=ys))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from utils import normalize\n", "\n", "posterior = update_optimized(prior3.unstack(), data)\n", "normalize(posterior)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from utils import marginal\n", "\n", "posterior_sigma_grid = marginal(posterior, 0)\n", "posterior_sigma_grid.plot(label='grid')\n", "\n", "decorate(title='Posterior distribution of sigma')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "joint_posterior = marginal(posterior, 1).unstack()\n", "plot_contour(joint_posterior)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "posterior_beta0_grid = marginal(joint_posterior, 0)\n", "posterior_beta1_grid = marginal(joint_posterior, 1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "posterior_beta0_grid.make_cdf().plot(label=r'$\\beta_0$')\n", "posterior_beta1_grid.make_cdf().plot(label=r'$\\beta_1$')\n", "\n", "decorate(title='Posterior distributions of parameters')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Posterior distribution of sigma" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "According to Gelman et al, the posterior distribution of $\\sigma^2$ is scaled inverse chi2 with $\\nu=n-k$ and scale $s^2$.\n", "\n", "According to [Wikipedia](https://en.wikipedia.org/wiki/Scaled_inverse_chi-squared_distribution), that's equivalent to inverse gamma with parameters $\\nu/2$ and $\\nu s^2 / 2$." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "nu = n-k\n", "nu/2, nu*s2/2" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from scipy.stats import invgamma\n", "\n", "dist_sigma2 = invgamma(nu/2, scale=nu*s2/2)\n", "dist_sigma2.mean()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sigma2s = np.linspace(0.01, 30, 101)\n", "ps = dist_sigma2.pdf(sigma2s)\n", "posterior_sigma2_invgamma = Pmf(ps, sigma2s)\n", "posterior_sigma2_invgamma.normalize()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "posterior_sigma2_invgamma.plot()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sigmas = np.sqrt(sigma2s)\n", "posterior_sigma_invgamma = Pmf(ps, sigmas)\n", "posterior_sigma_invgamma.normalize()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "posterior_sigma_invgamma.mean(), posterior_sigma_grid.mean()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "posterior_sigma_grid.make_cdf().plot(color='gray', label='grid')\n", "posterior_sigma_invgamma.make_cdf().plot(label='invgamma')\n", "\n", "decorate(title='Posterior distribution of sigma')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Posterior distribution of sigma, updatable version\n", "\n", "Per the Wikipedia page: https://en.wikipedia.org/wiki/Bayesian_linear_regression" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Lambda_0 = np.zeros((k, k))\n", "Lambda_n = Lambda_0 + X.T @ X\n", "Lambda_n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from scipy.linalg import inv\n", "\n", "mu_0 = np.zeros(k)\n", "mu_n = inv(Lambda_n) @ (Lambda_0 @ mu_0 + X.T @ X @ beta_hat)\n", "mu_n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "a_0 = 0\n", "a_n = a_0 + n / 2\n", "a_n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "b_0 = 0\n", "b_n = b_0 + (ys.T @ ys + \n", " mu_0.T @ Lambda_0 @ mu_0 - \n", " mu_n.T @ Lambda_n @ mu_n) / 2\n", "b_n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "a_n, nu/2" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "b_n, nu * s2 / 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Sampling the posterior of the parameters" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sample_sigma2 = dist_sigma2.rvs(1000)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sample_sigma = np.sqrt(sample_sigma2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from scipy.linalg import inv\n", "\n", "V_beta = inv(X.T @ X)\n", "V_beta" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sample_beta = [multivariate_normal(beta_hat, V_beta * sigma2).rvs()\n", " for sigma2 in sample_sigma2]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "np.mean(sample_beta, axis=0)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "beta_hat" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "np.std(sample_beta, axis=0)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "results.bse" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sample_beta0, sample_beta1 = np.transpose(sample_beta)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Cdf.from_seq(sample_beta0).plot(label=r'$\\beta_0$')\n", "Cdf.from_seq(sample_beta1).plot(label=r'$\\beta_1$')\n", "\n", "decorate(title='Posterior distributions of the parameters')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Posterior using multivariate Student t" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "x = beta_hat\n", "mean = beta_hat\n", "df = (n - k)\n", "shape = (V_beta * s2)\n", "multistudent_pdf(x, mean, shape, df)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "low, high = sample_beta0.min(), sample_beta0.max()\n", "low, high" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "beta0s = np.linspace(0.9*low, 1.1*high, 101)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "low, high = sample_beta1.min(), sample_beta1.max()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "beta1s = np.linspace(0.9*low, 1.1*high, 91)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "beta0_mesh, beta1_mesh = np.meshgrid(beta0s, beta1s)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "beta_mesh = np.dstack(np.meshgrid(beta0s, beta1s))\n", "beta_mesh.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ps = multistudent_pdf(beta_mesh, mean, shape, df)\n", "ps.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "joint = pd.DataFrame(ps, columns=beta0s, index=beta1s)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from utils import normalize\n", "\n", "normalize(joint)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from utils import plot_contour\n", "\n", "plot_contour(joint)\n", "decorate(xlabel=r'$\\beta_0$',\n", " ylabel=r'$\\beta_1$')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "marginal_beta0_student = marginal(joint, 0)\n", "marginal_beta1_student = marginal(joint, 1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from utils import marginal\n", "\n", "posterior_beta0_grid.make_cdf().plot(color='gray', label=r'grid $\\beta_0$')\n", "posterior_beta1_grid.make_cdf().plot(color='gray', label=r'grid $\\beta_1$')\n", "\n", "marginal_beta0_student.make_cdf().plot(label=r'student $\\beta_0$', color='gray')\n", "marginal_beta1_student.make_cdf().plot(label=r'student $\\beta_0$', color='gray')\n", "\n", "Cdf.from_seq(sample_beta0).plot(label=r'sample $\\beta_0$')\n", "Cdf.from_seq(sample_beta1).plot(label=r'sample $\\beta_1$')\n", "\n", "decorate()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Sampling the predictive distribution" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "t = [X @ beta + norm(0, sigma).rvs(n)\n", " for beta, sigma in zip(sample_beta, sample_sigma)]\n", "predictions = np.array(t)\n", "predictions.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "low, median, high = np.percentile(predictions, [5, 50, 95], axis=0)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.plot(xs, ys, 'o')\n", "plt.plot(xs, median)\n", "plt.fill_between(xs, low, high, color='C1', alpha=0.3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Modeling the predictive distribution" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "xnew = [1, 2, 3]\n", "Xnew = sm.add_constant(xnew)\n", "Xnew" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "t = [Xnew @ beta + norm(0, sigma).rvs(len(xnew))\n", " for beta, sigma in zip(sample_beta, sample_sigma)]\n", "predictions = np.array(t)\n", "predictions.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "x0, x1, x2 = predictions.T\n", "\n", "Cdf.from_seq(x0).plot()\n", "Cdf.from_seq(x1).plot()\n", "Cdf.from_seq(x2).plot()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "mu_new = Xnew @ beta_hat\n", "mu_new" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "cov_new = s2 * (np.eye(len(xnew)) + Xnew @ V_beta @ Xnew.T)\n", "cov_new" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "x = mu_new\n", "mean = mu_new\n", "df = (n - k)\n", "shape = cov_new\n", "multistudent_pdf(x, mean, shape, df)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "y1s = np.linspace(0, 20, 51)\n", "y0s = np.linspace(0, 20, 61)\n", "y2s = np.linspace(0, 20, 71)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "mesh = np.stack(np.meshgrid(y0s, y1s, y2s), axis=-1)\n", "mesh.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ps = multistudent_pdf(mesh, mean, shape, df)\n", "ps.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ps /= ps.sum()\n", "ps.sum()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "p1s = ps.sum(axis=1).sum(axis=1)\n", "p1s.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "p0s = ps.sum(axis=0).sum(axis=1)\n", "p0s.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "p2s = ps.sum(axis=0).sum(axis=0)\n", "p2s.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "pmf_y0 = Pmf(p0s, y0s)\n", "pmf_y1 = Pmf(p1s, y1s)\n", "pmf_y2 = Pmf(p2s, y2s)\n", "\n", "pmf_y0.mean(), pmf_y1.mean(), pmf_y2.mean()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "pmf_y0.make_cdf().plot(color='gray')\n", "pmf_y1.make_cdf().plot(color='gray')\n", "pmf_y2.make_cdf().plot(color='gray')\n", "\n", "Cdf.from_seq(x0).plot()\n", "Cdf.from_seq(x1).plot()\n", "Cdf.from_seq(x2).plot()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "stop" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Leftovers" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Related discussion saved for the future\n", "\n", "https://stats.stackexchange.com/questions/78177/posterior-covariance-of-normal-inverse-wishart-not-converging-properly" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from scipy.stats import chi2\n", "\n", "\n", "class NormalInverseWishartDistribution(object):\n", " def __init__(self, mu, lmbda, nu, psi):\n", " self.mu = mu\n", " self.lmbda = float(lmbda)\n", " self.nu = nu\n", " self.psi = psi\n", " self.inv_psi = np.linalg.inv(psi)\n", "\n", " def sample(self):\n", " sigma = np.linalg.inv(self.wishartrand())\n", " return (np.random.multivariate_normal(self.mu, sigma / self.lmbda), sigma)\n", "\n", " def wishartrand(self):\n", " dim = self.inv_psi.shape[0]\n", " chol = np.linalg.cholesky(self.inv_psi)\n", " foo = np.zeros((dim,dim))\n", "\n", " for i in range(dim):\n", " for j in range(i+1):\n", " if i == j:\n", " foo[i,j] = np.sqrt(chi2.rvs(self.nu-(i+1)+1))\n", " else:\n", " foo[i,j] = np.random.normal(0,1)\n", " return np.dot(chol, np.dot(foo, np.dot(foo.T, chol.T)))\n", "\n", " def posterior(self, data):\n", " n = len(data)\n", " mean_data = np.mean(data, axis=0)\n", " sum_squares = np.sum([np.array(np.matrix(x - mean_data).T * np.matrix(x - mean_data)) for x in data], axis=0)\n", " mu_n = (self.lmbda * self.mu + n * mean_data) / (self.lmbda + n)\n", " lmbda_n = self.lmbda + n\n", " nu_n = self.nu + n\n", " dev = mean_data - self.mu\n", " psi_n = (self.psi + sum_squares + \n", " self.lmbda * n / (self.lmbda + n) * np.array(dev.T @ dev))\n", " return NormalInverseWishartDistribution(mu_n, lmbda_n, nu_n, psi_n)\n", "\n", " \n", "\n", "x = NormalInverseWishartDistribution(np.array([0,0])-3,1,3,np.eye(2))\n", "samples = [x.sample() for _ in range(100)]\n", "data = [np.random.multivariate_normal(mu,cov) for mu,cov in samples]\n", "y = NormalInverseWishartDistribution(np.array([0,0]),1,3,np.eye(2))\n", "z = y.posterior(data)\n", "\n", "print('mu_n: {0}'.format(z.mu))\n", "\n", "print('psi_n: {0}'.format(z.psi))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from scipy.linalg import inv\n", "from scipy.linalg import cholesky\n", "\n", "def wishartrand(nu, Lambda):\n", " d, _ = Lambda.shape\n", " chol = cholesky(Lambda)\n", " foo = np.empty((d, d))\n", "\n", " for i in range(d):\n", " for j in range(i+1):\n", " if i == j:\n", " foo[i,j] = np.sqrt(chi2.rvs(nu-(i+1)+1))\n", " else:\n", " foo[i,j] = np.random.normal(0, 1)\n", " \n", " return np.dot(chol, np.dot(foo, np.dot(foo.T, chol.T)))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sample = [wishartrand(nu_n, Lambda_n) for i in range(1000)]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "np.mean(sample, axis=0)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Lambda_n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.10.12" } }, "nbformat": 4, "nbformat_minor": 4 }