{ "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": "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\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": 72, "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": 73, "metadata": {}, "outputs": [], "source": [ "dist_cov = make_invwishart(nu_n, Lambda_n)" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 5.77766323, 4.71029497],\n", " [ 4.71029497, 12.38587614]])" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dist_cov.mean()" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 5.77766323, 4.71029497],\n", " [ 4.71029497, 12.38587614]])" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "S" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 5.75009385, 4.73096796],\n", " [ 4.73096796, 12.48177402]])" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_Sigma = dist_cov.rvs(1000)\n", "np.mean(sample_Sigma, axis=0)" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [], "source": [ "res = [unpack_cov(Sigma) for Sigma in sample_Sigma]" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.3607897260964137, 3.4767864662050987, 0.5480438257464233)" ] }, "execution_count": 78, "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": 79, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.4036770231837497, 3.519357348098385, 0.5568120515289984)" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "unpack_cov(S)" ] }, { "cell_type": "code", "execution_count": 80, "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": 81, "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": 82, "metadata": {}, "outputs": [], "source": [ "num = 51\n", "sigma_xs = np.linspace(0.01, 10, num)" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [], "source": [ "sigma_ys = np.linspace(0.01, 10, num)" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [], "source": [ "rhos = np.linspace(-0.3, 0.9, num)" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "sigma_x sigma_y rho \n", "0.01 0.01 -0.300 0\n", " -0.276 0\n", " -0.252 0\n", " -0.228 0\n", " -0.204 0\n", "dtype: int64" ] }, "execution_count": 85, "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": 86, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.006027909520828536" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dist_cov.pdf(S)" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4.700704063935837" ] }, "execution_count": 87, "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": 88, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.210173131819553, 3.236037871074533, 0.5138102647160548)" ] }, "execution_count": 88, "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": 89, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.4036770231837497, 3.519357348098385, 0.5568120515289984)" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "unpack_cov(S)" ] }, { "cell_type": "code", "execution_count": 90, "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": 91, "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": 92, "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": "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\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": "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dESnEjf1PNtxlJ+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": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdeXxU9b3/8ddnJvsKhJ0Qwr6FTRAQEFFksyhqaYHiWq1tvdb2drO2ru217b21G/3pbW3V1oqidUVBESnILiQsIQQIAQJEAgkhCSHrLN/fHzNwh5AVMjkzk8/z8ZhHzpzznTPvOTOZz5z1K8YYlFJKqUBjszqAUkopVR8tUEoppQKSFiillFIBSQuUUkqpgKQFSimlVEDSAqWUUiogaYFSQUVEzolIP6tzNIeITBORfJ/7e0Vk2mXM51oROdCq4ep/nlbJ28C8F4vIJz73jYgMaI15e+cXNJ8L1XxaoFS9RCRPRKq8//inRORlEYm7gvmler+Uwq4klzEmzhhz+ErmYRVjzHBjzLqm2tX98jbGbDDGDPZruHo0J29z31djzFJjzMzWyCUi60Tk/jrzD9rPhWqYFijVmJuNMXHAVcDVwGNWBbnSwmb149szXXbqcmmBUk0yxnwBfASkAYhITxFZLiJnRCRXRL5xvq2IjBeRdBE5613z+p130nrv31LvWtk13vZfF5F9IlIiIqtEpI/PvIyI/IeIHAQO+owb4B1OFJFXRKRIRI6KyGMiYvNOu0dENonI70XkDPBU3dclIk+JyFsi8oaIlIvIDhEZ5TM9T0QeEZFMoEJEwryv/W3vcx4RkYd92keLyN+9ryUbT1Gnzvxu9A7bReSnInLI+9wZItJbRM4vp93e5bTAd9ObiPxERN6qM98/isgSn2XyoogUiMgXIvJfImKv731tYd5mv6/1LXvvuI11ItwkIodF5LSI/MbnvXtKRF71yXFhLU1EngGuBf6f9/n+n7dNSz4XG0XkWe/rPiIic3ye6x5vpnLvtMX1LTvVRowxetPbJTcgD7jRO9wb2Av8wnv/M+B5IAoYDRQB073TtgB3eofjgIne4VTAAGE+z3ErkAsMBcLwrKFt9plugNVAJyDaZ9wA7/ArwPtAvHf+OcB93mn3AE7gO955R9fzGp8CHMB8IBz4IXAECPdZBru8rz8azw+6DOAJIALoBxwGZnnb/xrY4M3bG8gC8htYpj8C9gCDAQFGAUl1X6P3/rTz8wH6AJVAgve+HSjwWc7vAX8BYoGuwDbgmw28xy3J25L39ZJl7x23sc57u9b73Cne9+5+n/flVZ+2Fz0HsO582zrza+7nwgF8w7vsvg2c8L4HscBZYLC3bQ9guNX/i+35ZnkAvQXmzfvldA4oBY7iKUjR3i8yFxDv0/ZXwN+9w+uBp4HOdeZX3xfZR+e/OLz3bd4v3z7e+wa4oc58DDDA++VSAwzzmfZNYJ13+B7gWBOv8Slga53nLwCu9VkGX/eZPqHuPIFHgZe9w4eB2T7THqDhL/wDwLwGcjVYoLz3NwJ3eYdnAIe8w928yyTap+0iYG0Dz9OSvC15Xy9Z9tRfoHyf+0Fgjc/7clkFqpmfi1yfaTHex3bHU6BKgS9Tzw8avbX9TTfxqcbcaozpYIzpY4x50BhTBfQEzhhjyn3aHQV6eYfvAwYB+0Vku4jMbWT+fYA/ikipiJQCZ/D8ku3l0+Z4A4/tjGct5mgDORp7rK8LbYwxbiAfz2usbx59gJ7n83oz/xRPYcD7ON/2vtnq6g0caka++ryGp/AAfM17/3y+cKDAJ99f8KxJ1acleVvyvkILl733uXs21LAFmvO5OHl+wBhT6R2MM8ZUAAuAb+FZhitEZEgrZFKXSQuUaqkTQCcRifcZlwJ8AWCMOWiMWYTnS/G/gbdEJBbPr9S6juPZ/NTB5xZtjNns06ahy+2fxrOppo/PuAs5mnisr97nB7z7KZK9r7G+eRwHjtTJG2+Muck7vcB3ft48DTkO9G9Gvvr8C5gmIsnAbfxfgTqOZ+2hs0++BGPM8Abm0+y8LXxfaWS8r7rPfX65V+BZszmvewvm3ZzPRYOMMauMMTPwbN7bD/y1OY9T/qEFSrWIMeY4sBn4lYhEichIPL+ulwKIyB0i0sW7NlLqfZgLz34qN579Nuf9GXhURIZ7H5soIl9pZg4X8CbwjIjEi+fgiu8Drzb+yEuMFZHbxXOk2ffwfMFvbaDtNuCs98CJaO+BDmkicv7ggje9r6ejt3h8p5Hn/RvwCxEZKB4jRSTJO+0UFy+nixhjivBs5noZT8Hc5x1fAHwC/FZEEkTEJiL9ReS6BmbV7LwtfF+b60fe5+4NfBd4wzt+FzBVRFJEJBHPZlRfDS6fK/lciEg3EbnFW3hr8Gzidl3G61KtRAuUuhyL8OwXOAG8CzxpjFntnTYb2Csi54A/AguNMdXeTSnPAJu8m58mGmPexfNrfJmInMWzk34OzfcdPL+2D+PZL/Ma8FILX8v7eDbrlAB3ArcbYxz1NfR++d2M58CQI3h+rf8NSPQ2eRrP5qQjeArFPxt53t/h+SL9BM+O+Rfx7OMDzz6Yf3iX01cbePxrwI3839rTeXfh2cSV7X1Nb+FZG6hPS/I2+31tZB51vY/noJNdwAo8ywDvZ+kNINM7/cM6j/sjMN97FN6SeuZ7uZ8LG/ADPJ/rM8B1ePaNKYuIMdphoWqfROQpPAcj3GF1FqXUpXQNSimlVEDSAqWUUiog6SY+pZRSAUnXoJRSSgWkoLuIY+fOnU1qaqrVMZRSSrWSjIyM08aYLnXHB12BSk1NJT093eoYSimlWomI1HsVE93Ep5RSKiBpgVJKKRWQtEAppZQKSEG3D6o+DoeD/Px8qqurrY4ScqKiokhOTiY8PNzqKEqpdiYkClR+fj7x8fGkpqYiIlbHCRnGGIqLi8nPz6dv375Wx1FKtTN+28QnIi+JSKGIZDUwXURkiXi6DM8Ukasu97mqq6tJSkrS4tTKRISkpCRdM1VKWcKf+6D+jucKyA2ZAwz03h4A/vdKnkyLk3/oclVKWcVvm/iMMetFJLWRJvOAV4znWktbRaSDiPTw9mmjVNBzuQ3VDpfn5nRT7XBR43DjNgan2+DyuTlcLmpqHdQ6nNQ6nDicTmqdLpxOFw6XG6fLRbgNpqbG4Xa7cbvdGGMu/PW9DRo0iNjYWKtffshxuVxUVlZSWVlJRUUFVVVVuFwuRo4c6WlgDNSchaoSqDkHGM8437/n22G8d5tqU9/fBh53fn6X/fi6bRqZj++0lGsg6XL73myclfugenFxl8/53nGXFCgReQDPWhYpKY11UqpU26t2uMj6oox9J8vZX3CWfQVnyTl1jnM1zlZ9nlip4YuoPU22+/rXv64F6jJUVZyjpPALzp4+wbkzp6g9cxxbaR7uylLc1eWIo4IIHERQSwQOonAQJQ74LNZTlKpKwLTD/g1v/d+QLFD1bTuq98q1xpgXgBcAxo0bp1e3VZbLO13B6uxTrMspZHteCbVONwDRdkOX8Fr6mHIiwmqw4yZM3NhxE2EXYqMiiI6KJCoygqjISKIiwomMCCciPJzIiDAiwsOJCLMTHh7m+RsWRniYnfAwOxFhNronTMBms2Gz2RCRC399b3FxcRYvnQBzMgt2vw6VxVB7DnfNOZwVpTiryjA157A5KglzVxONk2igZwOzcUs4rvAYTHgMhMcikZ2QqHiIS4LoThDd0XOL6QQRsSA2QEDE5y/1jBOfb8P6pnn/Qgun0fTjGs1Ud1rd+XinxZzvCLr1WVmg8oHePveT8fRkqVooLi6O/Px8XnvtNR588P86AJ00aRKbN2++qG1paekl7VTTjhVX8kHmCTKOlnDwVDnHS6oA6BrpZJCcoVtEGZ2kkq5xEXTv3o3OnbuSlJREhw4d6NChAwkJCURGRuo+vbZUcRp2/hOz5ueIcVMV2YVql50Kp1BLOLWE47R1wR6dSFhsIpFxnYhKSCIqsTMxiV0IS+gGSQMgKhEiYrHZw/XE0TZmZYFaDjwkIsuACUCZ7n+6fKWlpTz//PMXFZ66xamhdqpxj7yVyRvpnq3RPWKFeNdZRoedZYC9mEG9kkhNTSUl5Rp69epFfHy8xWnbqZpyKDkKWW9jTmXhKsolrPQwAMV05B1uotDVk549e5KcnEyvXr3o0aMHHTt21B8NAcxvBUpEXgemAZ1FJB94EggHMMb8GVgJ3ATkApXAvf7K0lauv/56fvrTnzJjxgwee+wxzp49y5IlSxp9TF5eHrNnz2bKlCls3bqVUaNGce+99/Lkk09SWFjI0qVL6dq1K3PnziUry3PE/rPPPsu5c+d46qmnLsznJz/5CYcOHWL06NHMmDGD3/zmN8TFxXHu3LmLnq++dqp+1Q4Xv1q5jzfSjzMqsZoB1QdJNLX0H9ifYcOu1oMRrORywu7XYNtfofQYVJdemFRi68JJdyKljKW08ziih89hZt++JCcnExYWEqd+thv+PIpvURPTDfAfrf28H3/8MSdPnmzVeXbv3p3Zsxs7Yt7j6aef5oknnqCwsJCdO3eyfPnyZs0/NzeXf/3rX7zwwgtcffXVvPbaa2zcuJHly5fzy1/+kj/84Q9NzuPXv/41WVlZ7Nq1q1XatVcOl5uVewr459aj7DpWgtMNfWxnmBpVzIRrpzBmzBgtSlZy1sDmP0H6y3A2HxPdiaJuUzl8xkl+OZy09aRDvzEMGzaMkYMG6f64IKc/J1rR1KlTMcbwu9/9jnXr1mG326moqODBBx8kIiKCadOmsXjx4kse17dvX0aMGAHA8OHDmT59OiLCiBEjyMvLa+NX0T653IaXNh7hD5/mUFHrwoZhkL2IYUku7pk1nrS0NGw23QNhibMFcGAl5K6BnI/AuHH2Gk9m94V8kmej5piTbt26MWbKGOakpekPiBAScgWqOWs6/rJnzx4KCgro3LnzhX0R77zzDvPnz+fmm29mwYIF9RaoyMjIC8M2m+3CfZvNhtPpJCwsDLfbfaGNXtmhdZ0sq+Y7r+9ge14JHSOFMRFHGRRTyZzp1zF27FgtTFY5WwCrn4C974LbAYkpVKctIqOyF2uOuBCB4cOHMmHCBHr27Kn7kkJQyBUoqxQUFLB48WLef/99Hn74YVatWsWsWbPIz8+/sHZkt9sva97dunWjsLCQ4uJi4uLi+PDDDy8pxPHx8ZSXlzc5r+a2ay+On6nktuc3UVrp4KYupXQpz2X06JHMmjWLmJgYq+O1X6cPwkuzofI0jL2XyrSv8e+sU+zctQubDcaPH8+kSZNISEiwOqnyIy1QraCyspLbb7+d3/72twwdOpTHH3+cRx55hFmzZpGcnEx+fj6jR4++aC2oJcLDw3niiSeYMGECffv2ZciQIZe0SUpKYvLkyaSlpTFnzpwGD35obrv2oKrWxTf/mUFJRS03xeWR7DzH3K/MZ/jw4VZHa7+MgZxV8OF/gtuBa9EbbD0dz/pla3A6nYwdO5apU6fqvqV2QowJrvNex40bZ+p2+b5v3z6GDh1qUaLGVVRU8NBDDxEVFcWUKVPq3cQX6AJ5+V6u8moH8/93CwdOlXNN+DGu7WFYuHAhnTp1sjpa+2UMLH8Idr4KiSmcmvIL3kkvoLCwkEGDBjFz5kySkvx3UqiyjohkGGPG1R2va1B+Fhsby8svv2x1DOXjUNE5nlmxjwOnypkecZAbBnfhK1/5ChEREVZHa98y/g47X8U97j7WhN3I5pXbSUhIYOHChQwePNjqdMoCWqBUu1JUXsNtz22ixuHkqrB8bhrVm1tvvfWy9w+qVlCWD+9+C45toTZ5Mi8e609h0XbGjh3LjBkzLjqISLUvWqBUu1HtcPGtVzOoqnXypfAsrhs9iFtvvVWP/rJS0QF4bgJgKOo/n1ePdsMZWcnixYsZMGCA1emUxbRAqXbjL58dJuNoCdeFH2bS8L7MmzdPi5NVHNWw9XlY+wzGHk76gB+wMqeG1NRUbr/9dr1klAK0QKl2Yu2BQn7/aQ497eVM6xfP7bffruc3WaVgN7w0BxwVuHuOZZVcx7acGiZOnMiMGTP0fVEXaIFSIc8Yw/NrcgjDzZe7FLJgwf16TTarlOTBX6dDZDxV1z/NP3ZWU3SmlHnzbmb06NFWp1MBRn+qqJCX9UUp24+VMSSimDu/tlBPwLWK2wXLvwMilN62lL9sq6C0vILFixdrcVL10p+RKqQVnq3mnr9tIQwXP547iq5du1odqf3a/Cc4sp7yKY/x1/c3AXD33XfTo0cPi4OpQKUFSoW0p9/dQXG1YWE/w9TxY6yO034dWgufPokzMZW/7HBjDwvn7rvv1hNvVaN0E58KWf/OLmDFvhIGR5Xz83vmWB2n/TqVDW/ejbPjAP5WezM2LU6qmbRAhYC4uLgLPeX6mjRp0iVt62sXqt5Y5+nz6reLxulVIqzirIUV38fUnOUV502U2xK56667tDipZtECFSLqKzyNdfke6nbsP8L649UMSjSkDdYTPi1hDLxxBxzbwqbYORQ6Yrnzzjvp3Lmz1clUkNAC1Yquv/56Vq9eDcBjjz3Gww8/3ORj8vLyGDJkCPfffz9paWksXryYTz/9lMmTJzNw4EC2bdtGXl4eaWlpFx7z7LPPXtTdO1zclfuPfvQjgHqv+Fxfu1BjjOEnb2ZQZcJ54vZLrj+p2srOf8LBVWzreCvraoazaNEiunfvbnUqFURC7iAJ7fJdu3x/bvlmciqjWZCWwJTB+oVoCWct5tOnKI4ZyEclffny/Fvp06eP1alUkNE1qFbk2+X7smXLsNvtHD58mPvuu4/58+c3+LjzXb7bbDbt8v0KVVdX8/K2kySFO/mvhZfug1Nt5LNfI5XFfFo5lOtvuOGiLQBKNVfIrUEFWpfv/fr148UXX2y0QGmX761n1dr1FLui+MbVPQgP0yuUW8JRjSNjKV/Qi7C0eVx77bVWJ1JBStegWolvl++xsbGsWrWq1ebt2+V7TU0NH3744SVttMt3OHv2LO9+ngvArNGp1oZpr2rOUbvsLsIrT3IocYpekFddES1QraC+Lt/rHsRwJXy7fJ87d26TXb43dvBDc9sFow9Wf8bW6p70TIzkqpSOVsdpf2rOYZ6bQMShVeywj2HM3b8mPDzc6lQqiGmX735WXFzMz372M1avXs3999/Po48+anWkFgvk5XtecXExC373Ibmuzvxp0RhuHtXT6kjtz5t3Q/Z7vMlcRi74GUOGDrM6kQoS2uW7RZKSkvjzn/9sdYyQ99KHG8h1debuCclanNqasxbevAtyPiKdkcRPuEOLk2oVuolPBb2CwtO8tA86RMJDN166+VP52ZqnIecjtodNZGe3rzJjxgyrE6kQoQVKBb2XV26hinCemDuULvGRTT9AtZ7TBzFbnyc/bhSfyFRunb9Q+9pSrUYLlApqe4+e4o0DtcSFGWaPSrE6TvtSXQZv34fLHs2ycxOZPn06Xbp0sTqVCiH6U0cFtSfezuCsieRPtw0jJkI/zm2m4jT88zZMYTYrbXPo0nc4EyZMsDqVCjG6BqWCVk1NDUeLKxmY4Gbu2H5Wx2lf3rwLcyqL9d2+TpZtGLfccoue76RanRYoFbTWf76DYlcU1wzWo/ba1OY/wdFNFKR9m3Un45g+fTodO+p5Z6r1+bVAichsETkgIrki8pN6pqeIyFoR2SkimSJykz/zqNDhcLp4aUMuBmHBNYOsjtN+7FwKnzyGK3k8S3MTSE5O5uqrr7Y6lQpRfitQImIHngPmAMOARSJS9+SIx4A3jTFjgIVA6HdUpFrFnX9Zz5byTgzvGsnQHvFWx2kfqstgxQ+g11hWdbyX6loHc+fOxWbTDTHKP/z5yRoP5BpjDhtjaoFlwLw6bQyQ4B1OBE74MY8KESUVtWw7XsGQqLO8851puu+jraz9JTirKBjzA7ZnHWTixIl069bN6lQqhPmzQPUCjvvcz/eO8/UUcIeI5AMrge/UNyMReUBE0kUkvaioyB9Z2436OjEMNq9vPogb4c6rexAZrkfutQljIOdjTPLVvLf9GImJiVx33XVWp1Ihzp8Fqr6ftXUv/LcI+LsxJhm4CfiniFySyRjzgjFmnDFmnJ5n0b653YZ30o+SKNXMu057y20z5SehJI/jsaMoLCxk1qxZREREWJ1KhTh//vzMB3r73E/m0k149wGzAYwxW0QkCugMFF7ukz79wV6yT5y93IfXa1jPBJ68eXiT7a6//np++tOfMmPGDB577DHOnj3LkiVLGn1MRUUFX/3qV8nPz8flcvH444+zYMECbr31Vo4fP051dTXf/e53eeCBB8jLy2P27NlMmTKFrVu3MmrUKO69916efPJJCgsLWbp0KePHj7/QbsKECezcuZNBgwbxyiuvEBMTc9Fzv/rqqyxZsoTa2lomTJjA888/j90euH0oGWP42buZ5JYZ5vW2hcTaYNDIXQ3A2jwn/fr1q/eK+kq1Nn+uQW0HBopIXxGJwHMQRN0+0I8B0wFEZCgQBQTtNrynn36aZ555hqVLl7Jz505+//vfN/mYjz/+mJ49e7J7926ysrIudLj40ksvkZGRQXp6OkuWLKG4uBjwdA//3e9+l8zMTPbv33+he/hnn32WX/7ylxfme+DAAR544AEyMzNJSEjg+ecvPv5k3759vPHGG2zatIldu3Zht9tZunRpKy6N1rd89wle355PWlgBD88eaXWc9mX/CiojOnO0thOzZ8/W/X6qTfhtDcoY4xSRh4BVgB14yRizV0R+DqQbY5YDPwD+KiL/iWfz3z3mCvv/aM6ajr/4dvm+bt067HY7FRUVPPjgg0RERDBt2jQWL1580WNGjBjBD3/4Qx555BHmzp17offRJUuW8O677wJw/PhxDh48SPfu3S90Dw802j187969mTx5MgB33HEHS5Ys4Yc//OGF6WvWrCEjI+PCIcJVVVV07drVb8umNXyw+wSxdjczu1bRr5+emNtm8jZhctewx53G1RPG6+WMVJvx6x5mY8xKPAc/+I57wmc4G5jszwxtqb4u39955x3mz5/PzTffzIIFCy4pUIMGDSIjI4OVK1fy6KOPMnPmTKZOncqnn37Kli1biImJYdq0aRe6eW+qe/jz6v7CrXvfGMPdd9/Nr371q9ZbAH7kcLlZd6CIwVLImDGj9Rd8W/rgYZxG2B05gTv0wAjVhvQEhlbSUJfv+fn59O7t2RVX3/6dEydOEBMTwx133MEPf/hDduzYQVlZGR07diQmJob9+/ezdevWFuc5duwYW7ZsAeD1119nypQpF02fPn06b731FoWFnt19Z86c4ejRoy1+nraSW3gOp9vQ0V7NqFGjrI7TflSchuJc1pvxjJh26yX7MZXyJy1QraCxLt+Tk5PJz88HwO12X/LYPXv2MH78eEaPHs0zzzzDY489xuzZs3E6nYwcOZLHH3+ciRMntjjT0KFD+cc//sHIkSM5c+YM3/72ty+aPmzYMP7rv/6LmTNnMnLkSGbMmEFBQUHLX3wbeX3bMey4mdKvAwkJCU0/QLUKc3wbACVxAxk/frzFaVR7o12++1lFRQUPPfQQUVFRTJky5ZJNfP6Ql5fH3LlzycrKapX5BcLyveF/PqWqtIi/fm0EaWlplmZpT4r/fgfxeR+Tc+sq0kaPtTqOClHa5btFYmNjefnll62OEdTySyo5fKaGCdGVenhzG3Id+ITEvJUcjh7N8FFXWR1HtUNaoEJQampqq609BYJVWZ7T564b1FV7a21Djvceooo4Iuf8XA9KUZbQfVAqoLndhpfWH6KLnONLk/Tcp7biyN9NVNUpDiTNJGVEyBxoq4KMFigV0DK/KOOLciej48+RkqJdureVkg+fxIGd3rMe0rUnZRktUCqgvZtxDIBZI3vrF2UbqTl9lM4n13G4w7X0GjTa6jiqHdMCpQLaxgMFdLOVc+3Veu5TWyl6/3EAOsz+qcVJVHunBUoFrPJqB0dLHSTHmoC/DFOoqC4voevxlRxNGE+3IROsjqPaOS1QKmCt2XMcpxGmD+mqm/fayP41S4nAQeKke6yOopQWKBW4dh307H+6cdwwi5O0DzU1NVRmrcAgdBp1k9VxlNICpQLXnqNFRIqbgSndrY7SLmRsWc9o5w6cSUMguoPVcZTSAtXeBEsnf6VlZWSXhdG/U7hu3msDDoeD2I3PEEM14bN/YXUcpQAtUCpArd2eRRURfHlcH6ujtAsZ6en0deZQ1XsqDLjR6jhKAaF4qaOPfgIn97TuPLuPgDm/brKZdvneerZm5wEduKq/bt7zN5fLRdGGl0igAkbdDrrGqgKErkG1Iu3yvXWUl5eTW3gOgH6dg2OTZDDL3L2bCZVrqI3vDSPmWx1HqQtCbw2qGWs6/lJfl++HDx/mmWeeoaysjLfeeuuSx2iX75c6cOAABe4E+iVFkxgTbnWckOZ2u9mx8RPGUIy55j8hMt7qSEpdEHoFykL1dfner18/XnzxRebPr/+XqXb5fqnM7P2ccidyz1DdvOdv+/fvJ+XMRgCkp3apoQKLbuJrJQ11+d4U7fL9YlVVVXx2qBQXNq4b1MXqOCHNGMPnG/7NNbIL030k9JlkdSSlLqIFqhU01uV7U7TL94vl5OSQVduVxCg7kwd0tjpOSDt69CjxBZuJM+XIxG/rwREq4GiX735WXFzMz372M1avXs3999/Po48+6vfnDOYu3//66ps8kxXDg9MG8OPZ2nuuP722dCnTDj1Djxgn8p0dEKkHpChraJfvFklKSuLPf/6z1TGCgsPh4IOcCiCWL49NtjpOSCssLCTi4Ap68gVc+z9anFRA0k18IShYu3xfv+sAmbVdmTkwgf5d9AvTnz7f9BlT+RwT3RGu/obVcZSql65BqYDx1rYjgI3Hbx1jdZSQdu7cOTpn/oWunIbb3gSb/k5VgUk/mSogGGPYcsLBoAQXvZN07cmfdmxZxyizh5r+s2HQLKvjKNWgkClQwXawR7Boq+Wad+w4Za4IxqR0bJPna68cDgdnt79BDNVETvkPq+Mo1aiQKFBRUVEUFxdrkWplxhiKi4uJiory+3Mt37ofgzBpWIrfn6s9y8zMJK12B87YnpCi5+pOq+0AACAASURBVD2pwBYS+6CSk5PJz8+nqKjI6ighJyoqiuRk/x9R9/6+MmLsUcxM06P3/MUYQ9amj7mLL2D098AeEv/+KoSFxCc0PDycvn37Wh1DXaZ/7znK4eoYFg2LIToiMK6mHooOHTpEypkNCAaG3Wx1HKWaFBKb+FRwW7rpIOE4eWhWmtVRQtr2LRs9h5YPnAm9xlodR6km+bVAichsETkgIrki8pMG2nxVRLJFZK+IvObPPCow7TtZQa/IWnp102vv+cvp06cZeOhF7LiRsfdaHUepZvHbJj4RsQPPATOAfGC7iCw3xmT7tBkIPApMNsaUiEhg9Peg2kxlVTWnqm1c31sPLfenzM+WcwOZOAd9ibAhN1kdR6lm8eca1Hgg1xhz2BhTCywD5tVp8w3gOWNMCYAxptCPeVQA+tfGvbiwMXFQD6ujhKzq6mqi9i7DjY2wuc9aHUepZvNngeoFHPe5n+8d52sQMEhENonIVhGZXd+MROQBEUkXkXQ9Ui+0LN99gmhxcMd1w62OErIyt65jtHs3tak3QEJPq+Mo1Wz+LFD1Xbu/7olKYcBAYBqwCPibiHS45EHGvGCMGWeMGdeli+6nCBXGGA6VOOiXaCMqQnvO9Qe3203Ylj8QRS1Rc35udRylWsSfBSof6O1zPxk4UU+b940xDmPMEeAAnoKl2oFj+V9Q5opgeK9LfpOoVpK/cRlX1WyhovsE6KZrqSq4+LNAbQcGikhfEYkAFgLL67R5D7geQEQ649nkd9iPmVQA2Zx5EIMwun/dLb+qVRhDzKZfU2rrSOyiF61Oo1SL+a1AGWOcwEPAKmAf8KYxZq+I/FxEbvE2WwUUi0g2sBb4kTGm2F+ZVGDZmuNZob6qn2629Yfy9c/TueYopwcswJaoPwJU8PHrlSSMMSuBlXXGPeEzbIDve2+qHamoqOBQcRV26cAA7fvJLyp2vouDDvS45TGroyh1WfRKEsoSubm5nHbHktopijC7fgxbW035GRJLM6noOIzYuHir4yh1WfSbQVli/4GDFLrjmDq4u9VRQtKpFb8imhpiJtxtdRSlLpsWKNXm3G43K/afwY2NCf06WR0n5JiSo/Ta/yKFESkkTVhgdRylLpsWKNXm8vPz2V3ViUFJEcwarmtQra0o/V3suCiZ8hRIfacjKhUctECpNrczO4cyE828q1IQ/QJtdRV7PsaJnf4Tv2R1FKWuiBYo1ebSD3iugDWkp56g29rKSkvpfnYnJZ2uIizC/z0hK+VPWqBUmyovL2d/UQ0Aab0SLU4TevZsXkU01cSN0g4JVfBrtECJyN99hvVwIHXFcnNzOezqRJ+OkXSNj7Q6TkhxOp1U7noXgOjBN1icRqkr19Qa1Cif4e/6M4hqHzL351JiYrh2cDfd/9TKsrOzGVi7h9qEVOimvROr4NdUgap79XGlLpvb7WZLbhFuhJvStP+n1rZ3y2r6cILwtHl69J4KCU1d6ihZRJbg6Trj/PAFxpiH/ZZMhZz8/HxO1Xg+cqN66wESrelk3n4mFryEDTeM+LLVcZRqFU0VqB/5DKf7M4gKfTk5OZxwJ9A3KYbYSL9eBrLdqVjxBP3Jxzn+QcJ6jGr6AUoFgUa/JYwx/2irICr0vbOrgFPuTvxiSl+ro4SUqqoqYot2UhQ/nC43/crqOEq1miYPMxeRu0Vkh4hUeG/pInJXW4RToePcuXPsPmOna4xwx8Q+VscJKfs3raQLp4nuN9HqKEq1qkbXoLyF6Ht4usPYgWdf1FXAb0QEY8wr/o+oQsGOvQcocMezaGhXPXqvFRljiN72R0CIu/HHVsdRqlU1tQb1IHCbMWatMabMGFNqjPk38GXvNKWaZdm247ixsXjyQKujhJQjOXsZWLuHs72nQ7xe11CFlqYKVIIxJq/uSO+4BH8EUqGnvKqWNSeEoR3cDOupV49oTafWvYQdNwnXPmB1FKVaXVMFquoypyl1wb8276fGhLForJ771JpKS0vpXbCSqsgu2AfolSNU6GnqWN+hIpJZz3gB+vkhjwpBH+7+ghipZf7k4VZHCSm7t37GtZykdsx3wWa3Oo5Sra6pAjUK6AYcrzO+D3DCL4lUyMkrqSU11k1MTLTVUUKG0+nEsWMpNgxRI2+1Oo5SftHUJr7fA2eNMUd9b0Cld5pSjdp/vIgzjjAGdNddlq0pOzubEbUZVCelQc8xVsdRyi+aKlCpxphLNvEZY9KBVL8kUiHl5XX7EAx3TB5gdZSQkrN5Bd04TeTwOVZHUcpvmtrE11iPZ7q9RjUpp6CEeJubq4ekWh0lZBQUFND15FoMNmTsvVbHUcpvmlqD2i4i36g7UkTuAzL8E0mFCpfLxeFSF93iwvTk3Fa0bds2BkoepucYSOxldRyl/KapNajvAe+KyGL+ryCNAyKA2/wZTAW/TXsOUeaO5M5hSVZHCRmVlZWcyVxND3MKhj9kdRyl/Kqpi8WeAiaJyPXA+R7QVnivJqFUoz7eeQSAWycMtjhJ6Ni1axeDXPs8d0Z+1dowSvlZs/o8MMasBdb6OYsKMduOldMxPIIBPTpaHSUkuN1u8re8xVfIgN4T9dJGKuQ1eTVzpS5HcUkpR6siGNNDj6VpLQdzcphQ/jHOqCT42htWx1HK77RAKb9Yt/MADuxMHtLT6igho2Ddi/ThC+zTfgzR2iOxCn1aoJRfbNyXD8B1w1MsThIaTp8+zeCT71IT0QnbuHusjqNUm9ACpVqdy+Ui+2QlMWGG/l3jrI4TEvav+xc9KILx34CwSKvjKNUm/FqgRGS2iBwQkVwR+Ukj7eaLiBGRcf7Mo9pGXl4e+c5YRveM0/OfWkFNTQ1J2S/jsEUTOelbVsdRqs34rUCJiB14DpgDDAMWiciwetrFAw8Dn/sri2pbH23PocJEMme0bt5rDbt27qS3+ziOfjMgppPVcZRqM/5cgxoP5BpjDhtjaoFlwLx62v0C+B+g2o9ZVBtal3sGuxhuG6sF6koZYzi6+V3iqCRm+Cyr4yjVpvxZoHpxcTcd+d5xF4jIGKC3MebDxmYkIg+ISLqIpBcVFbV+UtVqiouLOVIRzqCkCOIim3WanWpEbm4uvc9uw2CDIXOtjqNUm/Jngapv54O5MFHEhqfLjh80NSNjzAvGmHHGmHFdunRpxYiqta3N2EexiWV8/65WRwkJmZs+4Wp2Y4bdooeWq3bHnwUqH+jtcz+Zizs5jMdz+aR1IpIHTASW64ESwW1ttuctvmuKdq9xpU6fPo0tbz1huLBN+KbVcZRqc/4sUNuBgSLSV0QigIXA8vMTjTFlxpjOxphUY0wqsBW4xdvXlApC1dXVbCuEHjHQr3Os1XGC3ueff84o2Yc7MQVSrrE6jlJtzm8FyhjjBB4CVgH7gDeNMXtF5Ocicou/nldZJz0rhyJ3LDelddXDy69QVVUVh3ZtpJ85im3EfNDlqdohv+7FNsasBFbWGfdEA22n+TOL8r93tx8Gwrl5nG7eu1IZGRmMcnh7uBmsveaq9kmvJKFahcvlYueJSjpEGEb11p35V8LlcrHj801Mkp0w9BboPd7qSEpZQguUahXHjh3jC0cM43rH6+a9K5SdnU2P8t2Em1q46i6r4yhlGS1QqlVs2n2AGsKZOqx3041Vg4wxbN26lUFRZzD2COh3vdWRlLKMFih1xYwxbN7vObx8bF/t3v1KHDt2jKIv8hhqcpA+k8GuJzur9ks//eqKnT59mv3lYUTaYVC3eKvjBLWstW/zH/JPwmvLYdJ3rI6jlKV0DUpdsYw9+zjs6sRto3sQbteP1OU6XVTE+Lw/ER0GsvgtGDDd6khKWUq/TdQVW7cnDxBmjujVVFPViF2fLacLZzDX/kCLk1JogVJXqKysjPRCQ0wYTOrf2eo4QevcuXN03PsPDELk0NlWx1EqIGiBUldk//79fOFK5NoBSUSF262OE7S2btlEmsmmduiXoctgq+MoFRC0QKkrsnXPQaoIZ8qQHlZHCVo1NTXUfv53InEQOUyvGqHUeVqg1GWrqqpix7ESAK5K0atHXK6MjAz6OQ/giuoEw261Oo5SAUMLlLps+/fvp9AVS3S4jcF6ePllcTqd7Ny8hsEcxj5qgZ73pJQPLVDqsu3dm80pOjKqdwfC9PDyy7Jr1y7GnFuLYGDEV6yOo1RA0W8VdVmqqqrYmFvEGVcE04d0szpOUHK73WStX85EdmLS5kPyWKsjKRVQdHuCuiwHDhwgu7YzkWHCogkpVscJSllZWQw8uwkbbpj+uNVxlAo4ugalLsvevdkUmgRuGdWLuEj9ndNSbreb7LVvMpl0zOA50DHV6khKBRwtUKrFqqur2XLwJNXGzoR+enHYy5Gdnc2Aks9w2yKQuX+wOo5SAUkLlGqx/fv3k+PoRGSYMCetu9Vxgo4xhk2frWGE5CBpt0K8LkOl6qMFSrXYzswsDrmSmNy/M7G6ea/F9u3bx4CiT4g01cgY7ZBQqYZogVItUlFRwccHy3FhY/HEPlbHCTput5t169YxJDwf02MU9L3W6khKBSwtUKpF9u7dy3FXIh2jw7hhSFer4wSd7OxsXIU59HQcRQbpRWGVaowWKNUin+/aywl3Indck4qIWB0nqJxfe7ohai/YI+Dqb1gdSamApjsQVLOVlpay7lgtAHNH9rQ4TfDJzMyk+vQxhtp2IWO+BnFdrI6kVEDTNSjVbJmZmRx1dWBo91gGd9dr77WE0+n0rD3FH0LcDrhGu3NXqilaoFSzGGPYtCOL0yaOW0b3tjpO0ElPT6ey9DSjarYjQ74EnQdYHUmpgKcFSjVLfn4+WcUGgGmDddNUS9TU1LBhwwbmdDiMvbYMJj1sdSSlgoIWKNUsu3fvZp+rGz0SIxmim/daZNOmTVRWVDCyegv0nw4pE6yOpFRQ0AKlmuR0Ovl411HOuKP55tT+evReC5w9e5YtW7Zwbf847NVnYORXrY6kVNDQo/hUk/bv38+miq50jQ3jK+N0/1NLrF27lgh3FddWrfWM6DPZ2kBKBRFdg1JN+jx9ByUmhoUTUvXSRi1QUFDArl27+FpSFuEntsNNz0IHLfBKNZcWKNWo4uJidh4pBGBojwSL0wQPYwwff/wxfSNL6Xl6I4xcCOP1xFylWsKvBUpEZovIARHJFZGf1DP9+yKSLSKZIrJGRPTibgFmx44d5Lo8XWqMSelocZrgkZ2dTcHRQyyQlUh8d5j9K6sjKRV0/FagRMQOPAfMAYYBi0RkWJ1mO4FxxpiRwFvA//grj2o5l8vFph17yHF2Yf7YZLonRlkdKSjU1tbyySef8KWYnURWnYQv/Q5iOlkdS6mg4881qPFArjHmsDGmFlgGzPNtYIxZa4yp9N7dCiT7MY9qoX379pFenohBuGdSqtVxgsaGDRuoKitmhHM39JkCg2ZaHUmpoOTPAtULOO5zP987riH3AR/VN0FEHhCRdBFJLyoqasWIqjGff76NPHdnpgzsTFqvRKvjBIXi4mIyNq1lcafd2GrLYdojVkdSKmj5s0DVd7KMqbehyB3AOOA39U03xrxgjBlnjBnXpYtexaAtnDhxgr3HCjnnDmPKgM5WxwkKxhg+/PBDFpr36XNmPYy7D1K1vyelLpc/jxnOB3yPqU0GTtRtJCI3Aj8DrjPG1Pgxj2qBbdu2cVo6ADB9qPb71By7d+8m7MhaUjgGEx/UAyOUukL+XIPaDgwUkb4iEgEsBJb7NhCRMcBfgFuMMYV+zKJaoKKigj17sjgZ2ZteHaLp3yXO6kgBr6KignWrPmCefS2mYypc/1OrIykV9PxWoIwxTuAhYBWwD3jTGLNXRH4uIrd4m/0GiAP+JSK7RGR5A7NTbWjbtm0cdcSRUwZ3XtNHL23UDB+tXMnM6uXEusqQL78IkXq9QqWulF8vC2CMWQmsrDPuCZ/hG/35/Krlamtr2bZtG2fiBhNRZtOj95ohOzsbx94PGEaO50rlyeOsjqRUSNDr1qiLZGRkcKbKxY7qcO66pjdR4XarIwW0iooK8t77JYv4AJOYjEz9kdWRlAoZeqkjdYHL5WLLli2UJfQH4K5r9MIejTHGcOAf32N27Ye4ozogi9+GKL0clFKtRdeg1AW7d++mvLycim7d6ZPkZkBX3Y/SmCMrfs9VhW/iskdh//ZmSGzsND+lVEvpGpQCPH0+rV+/nh49enK83K1H7jXhdOEp4jOeo8LeAdv3s7U4KeUHWqAUADt37qSsrIyeI64hr7iSG4bouU8NcTgcHP/7/XQxp7Fd90MkNsnqSEqFJC1QCofDwYYNG0hJSSGzxHNQxPVaoBr06Yp3GFL5OTUdBhA95UGr4ygVsrRAKbZt20Z5eTmTrr2Of2zO48ahXenVIdrqWAFp586dROx6hWhqiLz9ObDpUY5K+YsWqHauoqKCDRs2MHDgQHaVhFHjdLN4gh69V58TJ06w8sMPmGTfjek/HVImWh1JqZCmBaqdW7t2LQ6HA1fyVTzy9h66JURyTX/dp1JXeXk5y5Yto09MJdGucmTYvKYfpJS6Ilqg2rFTp06xY8cOug0Zy+MrD9E9IYp3HpysJ+fW4XA4eP3116mtqmBB9EbPyH7TrIykVLugBaqdMsawYsUKoqKi+PcZz1XLl35jgu57qsPtdvP2229z5sQRvp28j/DCPXD9z6CjbgZVyt+0QLVTGRkZHD9+nKETb2DrkRIeun6AnvtUhzGGlStXErX/HX4sfyHxyAq46m7Qyxkp1Sb0ShLtUHl5OZ9++il9Uvvyt8xqOsSE87UJKVbHCjhr167Fmf4K81iNJF8NNzzm6YBQr+6uVJvQNah2xhjDBx98gNPpIicmjd35ZTw4rT89ddPeRTZs2MCu9SuZa1vr2Zy34FXoO1WLk1JtSNeg2pnt27dzICeX9LiJ7M0o4Kvjkrl/Sj+rYwWUDRs2sG7Nah6KXo29VpCFr0GcnrisVFvTAtWOFBYWsvKTNWywj+LwaQcP3zCA/5wxSDsk9DLGsG7dOtavX89dnXbR8Uwe3PgUdBtmcTKl2ictUO1EdXU1b775JpscfThcE8bUQV20OPlwu9189NFHpKenM7Ov0PfwZ9BzjKcDQqWUJbRAtQPGGN59910OFVdxsCaRb17Xj0fnDLU6VsCora3lvffeY9++fcwe0ZXx+34BYdGw6A29lJFSFtIC1Q6sWbOGPQcOsck2lpgI4ZtT+1sdKWCcPXuWZcuWceZEHvf1LyE5+3mISYI73oH4blbHU6pd0wIV4rZs2cKGjZvIjB5LYYmb//7yCDrFRlgdKyDk5eXx3r9eZ0T159wXsQP7oTJI+zLM+IX276RUANACFcJ27drFqlWfcDhhFFmFwo9mDWbB1Xq+k9vtZuPGjexYu5x75G06uM9A3xs95zn1HGN1PKWUlxaoEJWRkcHbH3zEnogR7CkMZ9H4FB6cppv2SktLee+99zB5m/hm2CdEucrha2/CoFlWR1NK1aEFKsQYY9i8eTOvrPqcdEZSfNbOXdf04cmbh7frI/bcbjfp6el8+umnjHPvYCarMUQjdy+H1ClWx1NK1UMLVAhxOp18+OEK/pl+kgznYLrERfKXBWnMGt7d6miWOnHiBCtWrODEiRN8JXE3w0rXgD0CeWAtdNWjGZUKVFqgQsSZM2d4++13eD0vgsOuZMb37cRf7xpHYnS41dEsU1ZWxtq1a9m9axcp0ZV8r/teEgs2Qp/J8LU3IDLe6ohKqUZogQpyxhjWf76D36zcQ76zI6XuKO6c2Icnbx5GmL19XmqxvLycjRs3kpGRwUB3Lo9ErCeqqhiqBK55CG58Guz60Vcq0Ol/aRArLCzkwxUreS4nhmLThUl9O3DDsB7cPSm1XRanoqIitmzZQmZmJnGuUu7tkEmvks/BGQYTvgXjH4AkPVBEqWChBSoIlZSUsHrtZ6zbfYg8ulJsYvnFvOHceU2q1dHanNPpZP/+/ezYsYMjR44QFhbGjH42xh9ZipQ5YOqPYfLDujlPqSCkBSpIGGM4fvw4m7Zu4+OsArY7elNphgBw86iefG1C++nh1e12c+zYMbKyssjOzqa6soKJ0Xnc3PEoibUnseUUeK4Gcddy6H211XGVUpdJC1SAKyoqYt++faTv2sOe007SnSmUu/vRv3MM/zlzMGP7dKRHYuj35VRdXc3hw4c5ePAgOTk5dKw4RG97EYtjS+ga8wXhlSfBEQ1D53qOzBt+G3TSbkSUCmZaoAJMeXk5Ow8cYc2e4xwuKOZ0hZMKE8EpUqhx20hNimHJLcOZOrALdlvontd07tw58vPzOXbsGEePHqWgoIBodwU9IiqZH5tH34r14ALc3SF1Igy9GYbeAmF6GSelQoVfC5SIzAb+CNiBvxljfl1neiTwCjAWKAYWGGPy/JkpELjdbnYcLmR11hccLjzLqbPVlFbWUl7jotplo4rzh4YnERsudE+M5saeidw8sifXD+lCZFjoXGHb6XRSUlJCYWEhhYWFnDp1ioKCAsrLSgnDSbTdzcyYvfQP30dUTSHU4rkNmwez/xviu2svt0qFKL8VKBGxA88BM4B8YLuILDfGZPs0uw8oMcYMEJGFwH8DC/yV6XIYY3C73RhjcLlcuN1uHE4XuYXlHC6qoLLWQXWtk6paJ9XeW1Wtk2qH9/6Fvy5qHC6qHS4Ka8OpMJ5f+tE4iBYH8RFCSkIESQkxDOzRkRtH9WF4rw7ERLThSq6jCiqKwLjB7QJjwLh87rs9993u/xuuO824L0w3bieO2lqqK8upriinpuKsZ7jyHDWV5dRUlOOoqSTWVNCNIrpTSazUEI4DO05PJhdQDgyZCykTIWkgdB0CHVPbbrkopSzhz2+/8UCuMeYwgIgsA+YBvgVqHvCUd/gt4P+JiBhjjL9CvfPOO+Tm5nL+KYwxF26+988XpfrscXQn3Znc6PPYcGPHYMdNmA3CbBBuDyPSHsHAznYm9o7l+sFd6N+rKx07dsRuD4C1oryNsHR+q81OgAjvLaGRdm5bOI6uowjv1BtbbGeIiIHwGAiP9vxNGgD9r2+1XEqp4ODPAtULOO5zPx+Y0FAbY4xTRMqAJOC0byMReQB4ACAl5cquxp2SkkJUVNT5+V64Pt35Yd+bzWa78Pf8sN1uZ2SFm2vK3PTtGElMRBjRkWHEREYQHRlObHQksVERxERHExkZSVhYWPBcA6/rMLjl/3k66RMbiN2z+eyi+zaf+7bGp4mNrOxsIqLjiI5LJC6hI3GJHQmPigV7ONjCwR6OzWYn0urXrpQKOP4sUPV9K9ddJWlOG4wxLwAvAIwbN+6K1q7GjRt3JQ8PbYm94Ko7W3WWaT1Ht+r8lFLthz8vN5AP9Pa5nwycaKiNiIQBicAZP2ZSSikVJPxZoLYDA0Wkr4hEAAuB5XXaLAfu9g7PB/7tz/1PSimlgoffNvF59yk9BKzCc5j5S8aYvSLycyDdGLMceBH4p4jk4llzWuivPEoppYKLX49hNsasBFbWGfeEz3A18BV/ZlBKKRWc2t8lr5VSSgUFLVBKKaUCkhYopZRSAUkLlFJKqYAkwXZUt4gUAUevcDadqXO1iiChudtWMOYOxsygudtaoOXuY4zpUndk0BWo1iAi6caYoLukhOZuW8GYOxgzg+Zua8GSWzfxKaWUCkhaoJRSSgWk9lqgXrA6wGXS3G0rGHMHY2bQ3G0tKHK3y31QSimlAl97XYNSSikV4LRAKaWUCkjtrkCJyGwROSAiuSLyE6vzNJeI5InIHhHZJSLpVudpiIi8JCKFIpLlM66TiKwWkYPevx2tzFhXA5mfEpEvvMt7l4jcZGXG+ohIbxFZKyL7RGSviHzXOz7Ql3dDuQN6mYtIlIhsE5Hd3txPe8f3FZHPvcv7DW/3QgGhkcx/F5EjPss6IHsWbVf7oETEDuQAM/B0lrgdWGSMybY0WDOISB4wzhgTSCfXXUJEpgLngFeMMWnecf8DnDHG/Nr7o6CjMeYRK3P6aiDzU8A5Y8yzVmZrjIj0AHoYY3aISDyQAdwK3ENgL++Gcn+VAF7mIiJArDHmnIiEAxuB7wLfB94xxiwTkT8Du40x/2tl1vMayfwt4ENjzFuWBmxCe1uDGg/kGmMOG2NqgWXAPIszhRRjzHou7RV5HvAP7/A/8HwZBYwGMgc8Y0yBMWaHd7gc2Af0IvCXd0O5A5rxOOe9G+69GeAG4PwXfUAt70YyB4X2VqB6Acd97ucTBP8YXgb4REQyROQBq8O0UDdjTAF4vpyArhbnaa6HRCTTuwkwoDaT1SUiqcAY4HOCaHnXyQ0BvsxFxC4iu4BCYDVwCCg1xji9TQLuO6VuZmPM+WX9jHdZ/15EIi2M2KD2VqCknnHB8mtisjHmKmAO8B/ezVLKf/4X6A+MBgqA31obp2EiEge8DXzPGHPW6jzNVU/ugF/mxhiXMWY0kIxni8zQ+pq1barG1c0sImnAo8AQ4GqgExAwm4B9tbcClQ/09rmfDJywKEuLGGNOeP8WAu/i+ecIFqe8+x3O738otDhPk4wxp7z/2G7grwTo8vbuV3gbWGqMecc7OuCXd325g2WZAxhjSoF1wESgg4ic7508YL9TfDLP9m5mNcaYGuBlAnRZt7cCtR0Y6D3qJgJYCCy3OFOTRCTWuzMZEYkFZgJZjT8qoCwH7vYO3w28b2GWZjn/Be91GwG4vL07wF8E9hljfuczKaCXd0O5A32Zi0gXEengHY4GbsSz/2wtMN/bLKCWdwOZ9/v8gBE8+8wCalmf166O4gPwHrr6B8AOvGSMecbiSE0SkX541poAwoDXAjW3iLwOTMNzOf9TwJPAe8Cb8P/bu5+QqKIojuPfk5sMchdCVNTCqARxUYuiP4K4bKFlEEkYBBnUzlV/EFqG0EbQTSVFFCVRGLUqgghaZBpim6CmojYVERG1ydPi3rFH+L8nc8d+n9W8ex/v3XkwnHn3z7msMzYcQgAAAq9JREFUAd4Cre6ezKSEKdrcQOhqcqAAHCmO66TCzLYDj4BRYDwWnyCM56T8vKdq934SfuZmVkeYBFFB+HN/3d3PxN/nNUJX2TDQFt9MSm6aNj8AVhCGPUaAjsxkimT8dwFKRETKw//WxSciImVCAUpERJKkACUiIklSgBIRkSQpQImISJIUoERyYmarzOx2zGr9ysx68k4hY2YNZrYtc9xhZgfj53YzW5nn/URKSQFKJAdxweNN4Ja71wA1QCVwNudbNQATAcrd+9z9UjxsBxSgZNHQOiiRHJhZI9Dl7jszZVXAG+A0sMHdj8XyO0C3uz80s15CPrRKYMDdu+I5BcICy92EDNStwE/gCfAL+AgcBxoJW4UUgH7gPfADOAkcdvfmeL0m4Ki7tyzYQxDJmd6gRPJRS9jXaEJMgFogZP+Yykl33wzUAbviyv+iTzFBcC/Q6e4FoA845+717v4oc68B4ClwICYGvQtsNLMV8ZRDhJxrImVDAUokH8bkWawny6Cftc/MnhFS5NQCmzJ1xeSvQ8DauTTGQ9fIZaAt5mLbCtybyzVESm26f3YiMntjwJ5sQeziqwY+A+szVUtj/TqgE9ji7l/MrL9YFxXzuf1ifr/Vi8AgoWvwRmbPIpGyoDcokXzcB5ZlZtRVEPYz6gFeA/VmtsTMVvNna4Mq4Dvw1cyqCXt9zeQbsHw2dXGLlg/AKcL4lEhZUYASyUHsUmsG9prZS8Jb03jMOv+YEKRGgW6guN35c0LX3hhwIZ43k0Gg2cxGzGzHX3X9QF+sq4xlV4B37v7iX76fSCloFp/IAohrla4CLe4+NNP5C9iOHmDY3c+Xqg0i86UAJbJImdkQoQuxKZX9iUTmQgFKRESSpDEoERFJkgKUiIgkSQFKRESSpAAlIiJJUoASEZEk/QajRmKSd0y2KAAAAABJRU5ErkJggg==\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", "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.7.7" } }, "nbformat": 4, "nbformat_minor": 4 }