{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Probabilistic Programming\n", "=====\n", "and Bayesian Methods for Hackers \n", "========\n", "\n", "##### Version 0.1\n", "\n", "Original content created by Cam Davidson-Pilon\n", "\n", "Ported to [Pyro](http://pyro.ai/) by Carlos Souza (souza@gatech.edu), with the help from [Pyro community](https://forum.pyro.ai/).\n", "___\n", "\n", "\n", "Welcome to *Bayesian Methods for Hackers*. The full Github repository is available at [github/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers](https://github.com/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers). The other chapters can be found on the project's [homepage](https://camdavidsonpilon.github.io/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/). We hope you enjoy the book, and we encourage any contributions!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Chapter 1\n", "======\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Philosophy of Bayesian Inference\n", "------\n", " \n", "> You are a skilled programmer, but bugs still slip into your code. After a particularly difficult implementation of an algorithm, you decide to test your code on a trivial example. It passes. You test the code on a harder problem. It passes once again. And it passes the next, *even more difficult*, test too! You are starting to believe that there may be no bugs in this code...\n", "\n", "If you think this way, then congratulations, you already are thinking Bayesian! Bayesian inference is simply updating your beliefs after considering new evidence. A Bayesian can rarely be certain about a result, but he or she can be very confident. Just like in the example above, we can never be 100% sure that our code is bug-free unless we test it on every possible problem; something rarely possible in practice. Instead, we can test it on a large number of problems, and if it succeeds we can feel more *confident* about our code, but still not certain. Bayesian inference works identically: we update our beliefs about an outcome; rarely can we be absolutely sure unless we rule out all other alternatives. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "### The Bayesian state of mind\n", "\n", "\n", "Bayesian inference differs from more traditional statistical inference by preserving *uncertainty*. At first, this sounds like a bad statistical technique. Isn't statistics all about deriving *certainty* from randomness? To reconcile this, we need to start thinking like Bayesians. \n", "\n", "The Bayesian world-view interprets probability as measure of *believability in an event*, that is, how confident we are in an event occurring. In fact, we will see in a moment that this is the natural interpretation of probability. \n", "\n", "For this to be clearer, we consider an alternative interpretation of probability: *Frequentist*, known as the more *classical* version of statistics, assume that probability is the long-run frequency of events (hence the bestowed title). For example, the *probability of plane accidents* under a frequentist philosophy is interpreted as the *long-term frequency of plane accidents*. This makes logical sense for many probabilities of events, but becomes more difficult to understand when events have no long-term frequency of occurrences. Consider: we often assign probabilities to outcomes of presidential elections, but the election itself only happens once! Frequentists get around this by invoking alternative realities and saying across all these realities, the frequency of occurrences defines the probability. \n", "\n", "Bayesians, on the other hand, have a more intuitive approach. Bayesians interpret a probability as measure of *belief*, or confidence, of an event occurring. Simply, a probability is a summary of an opinion. An individual who assigns a belief of 0 to an event has no confidence that the event will occur; conversely, assigning a belief of 1 implies that the individual is absolutely certain of an event occurring. Beliefs between 0 and 1 allow for weightings of other outcomes. This definition agrees with the probability of a plane accident example, for having observed the frequency of plane accidents, an individual's belief should be equal to that frequency, excluding any outside information. Similarly, under this definition of probability being equal to beliefs, it is meaningful to speak about probabilities (beliefs) of presidential election outcomes: how confident are you candidate *A* will win?\n", "\n", "Notice in the paragraph above, I assigned the belief (probability) measure to an *individual*, not to Nature. This is very interesting, as this definition leaves room for conflicting beliefs between individuals. Again, this is appropriate for what naturally occurs: different individuals have different beliefs of events occurring, because they possess different *information* about the world. The existence of different beliefs does not imply that anyone is wrong. Consider the following examples demonstrating the relationship between individual beliefs and probabilities:\n", "\n", "- I flip a coin, and we both guess the result. We would both agree, assuming the coin is fair, that the probability of Heads is 1/2. Assume, then, that I peek at the coin. Now I know for certain what the result is: I assign probability 1.0 to either Heads or Tails (whichever it is). Now what is *your* belief that the coin is Heads? My knowledge of the outcome has not changed the coin's results. Thus we assign different probabilities to the result. \n", "\n", "- Your code either has a bug in it or not, but we do not know for certain which is true, though we have a belief about the presence or absence of a bug. \n", "\n", "- A medical patient is exhibiting symptoms $x$, $y$ and $z$. There are a number of diseases that could be causing all of them, but only a single disease is present. A doctor has beliefs about which disease, but a second doctor may have slightly different beliefs. \n", "\n", "\n", "This philosophy of treating beliefs as probability is natural to humans. We employ it constantly as we interact with the world and only see partial truths, but gather evidence to form beliefs. Alternatively, you have to be *trained* to think like a frequentist. \n", "\n", "To align ourselves with traditional probability notation, we denote our belief about event $A$ as $P(A)$. We call this quantity the *prior probability*.\n", "\n", "John Maynard Keynes, a great economist and thinker, said \"When the facts change, I change my mind. What do you do, sir?\" This quote reflects the way a Bayesian updates his or her beliefs after seeing evidence. Even — especially — if the evidence is counter to what was initially believed, the evidence cannot be ignored. We denote our updated belief as $P(A |X )$, interpreted as the probability of $A$ given the evidence $X$. We call the updated belief the *posterior probability* so as to contrast it with the prior probability. For example, consider the posterior probabilities (read: posterior beliefs) of the above examples, after observing some evidence $X$:\n", "\n", "1\\. $P(A): \\;\\;$ the coin has a 50 percent chance of being Heads. $P(A | X):\\;\\;$ You look at the coin, observe a Heads has landed, denote this information $X$, and trivially assign probability 1.0 to Heads and 0.0 to Tails.\n", "\n", "2\\. $P(A): \\;\\;$ This big, complex code likely has a bug in it. $P(A | X): \\;\\;$ The code passed all $X$ tests; there still might be a bug, but its presence is less likely now.\n", "\n", "3\\. $P(A):\\;\\;$ The patient could have any number of diseases. $P(A | X):\\;\\;$ Performing a blood test generated evidence $X$, ruling out some of the possible diseases from consideration.\n", "\n", "\n", "It's clear that in each example we did not completely discard the prior belief after seeing new evidence $X$, but we *re-weighted the prior* to incorporate the new evidence (i.e. we put more weight, or confidence, on some beliefs versus others). \n", "\n", "By introducing prior uncertainty about events, we are already admitting that any guess we make is potentially very wrong. After observing data, evidence, or other information, we update our beliefs, and our guess becomes *less wrong*. This is the alternative side of the prediction coin, where typically we try to be *more right*. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Our Bayesian framework\n", "\n", "We are interested in beliefs, which can be interpreted as probabilities by thinking Bayesian. We have a *prior* belief in event $A$, beliefs formed by previous information, e.g., our prior belief about bugs being in our code before performing tests.\n", "\n", "Secondly, we observe our evidence. To continue our buggy-code example: if our code passes $X$ tests, we want to update our belief to incorporate this. We call this new belief the *posterior* probability. Updating our belief is done via the following equation, known as Bayes' Theorem, after its discoverer Thomas Bayes:\n", "\n", "\\begin{align}\n", " P( A | X ) = & \\frac{ P(X | A) P(A) } {P(X) } \\\\\\\\[5pt]\n", "& \\propto P(X | A) P(A)\\;\\; (\\propto \\text{is proportional to })\n", "\\end{align}\n", "\n", "The above formula is not unique to Bayesian inference: it is a mathematical fact with uses outside Bayesian inference. Bayesian inference merely uses it to connect prior probabilities $P(A)$ with an updated posterior probabilities $P(A | X )$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Example: Mandatory coin-flip example\n", "\n", "Every statistics text must contain a coin-flipping example, I'll use it here to get it out of the way. Suppose, naively, that you are unsure about the probability of heads in a coin flip (spoiler alert: it's 50%). You believe there is some true underlying ratio, call it $p$, but have no prior opinion on what $p$ might be. \n", "\n", "We begin to flip a coin, and record the observations: either $H$ or $T$. This is our observed data. An interesting question to ask is how our inference changes as we observe more and more data? More specifically, what do our posterior probabilities look like when we have little data, versus when we have lots of data. \n", "\n", "Below we plot a sequence of updating posterior probabilities as we observe increasing amounts of data (coin flips)." ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import torch\n", "import pyro\n", "import pyro.distributions as dist\n", "from pyro.infer import MCMC, NUTS, HMC\n", "from IPython.core.pylabtools import figsize\n", "import numpy as np\n", "from matplotlib import pyplot as plt" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "n_trials = [0, 1, 2, 3, 4, 5, 8, 15, 50, 500]\n", "x = np.linspace(0, 1, 100)\n", "data = pyro.sample('coin_toss', pyro.distributions.Bernoulli(0.5), [n_trials[-1]])" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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L51zzuXn57vOnTu7tWvXOuecu+aaa9zjjz9e7nYkJye7rVu3lpn23HPPuQceeMA551xBQYHr37+/27Bhg5s+fbp78MEHnXPOFRYWutzc3Ar3dbiPdW2bNGlSuEMQqTHAMncc/++r8giWG0QausaaE8KdyxvaedsPP/zgevfu7WJjY91TTz0VdJtOOeUUl52d7Zxzbtu2ba5Lly5u586d7siRI2748OHurbfecsuWLXPnnntu6XtKtqNDhw6uoKCgzLTyYrvlllvc7NmznXPOHTp0qHQbyxPsWFc3NzS6FojFixdzySWXEBcXR3x8PJdeemnpN+ldunRh0KBBAFx99dUsXryYxMREYmJimDhxIm+++SYtWrQAYP78+dxyyy2kpqYyZswYcnNz2b9/PwBjxowhNjYWgJ///Oe8/vrrALz22mtcfvnlAMybN49HHnmE1NRUhg0bRkFBAT/88EPQmLdv384111zDiy++SLNmFR+StWvXcuqpp9K9e3cArr32WhYtWlTudgwaNIgJEybw/PPPU1RUVBrbrFmzSE1NZcCAAezevZvMzEzS09N58cUXmTp1Kt988w0JCQnVOwiNhO46KiIiJZQTakdDO2/r0qULK1euZN26dbz88svs2LGjwu378ssvGTZsGG3btiUyMpJx48axaNEiunXrxoYNG/jVr37FBx98QGJiIgApKSmMGzeO2bNnExkZWWFsZ599Nn/605/485//zObNm0u3sS40ugLCK6aCCxyBbmZERkaydOlSxo4dy9y5cznvvPMAKC4uZsmSJaxYsYIVK1awbdu20hPquLi40mV06tSJE088kZUrVzJnzpzS5ibnHP/85z9L3//DDz9w5plnHhNTbm4uo0eP5sEHH2TgwIHV3r7ytuPZZ5/lwQcfZMuWLaSmprJ7926cczz55JOlsW3cuJGRI0cyZMgQFi1aRKdOnbjmmmuYNWtWpfE0Zo35ihsiIlI1ygm1o6Gdt5Xo2LEjvXr1qrS7d3nb16pVK77++muGDRvG008/zcSJEwF47733uPnmm8nIyKB///4UFhaWG9svfvEL3n77bWJjYxk1ahQff/xxhbHUpEZXQAwZMoS5c+dy8OBBDhw4wFtvvcU555wDwA8//MCSJUsArz/a4MGDycvLIycnhwsuuIAZM2awYsUKAEaOHMlTTz1VutyS6cFceeWVPProo+Tk5NC7d28ARo0axZNPPln6wfnqq6+Oed/hw4e55JJLGD9+fGkFHExCQkJpFd2jRw82bdrEunXrAHjllVcYOnRouduxfv16BgwYwP3330+bNm3YsmULo0aN4plnnuHIkSMAfP/99xw4cIDNmzfTrl07Jk2axA033MDy5csBGD9+PEuXLq1s1zc6JdsvIiKinFA7GtJ529atW8nPzwdg7969fPbZZ5xxxhnHzOd/3jZgwAA++eQTdu3aRVFREa+++ipDhw5l165dFBcXM3bsWB544AGWL19OcXExW7ZsYfjw4Tz66KPs27ePvLy8cmPbsGED3bp149Zbb2XMmDGsXLkSgBEjRrBt27ZQD0G11PidqMOtX79+TJgwgbPOOguAiRMn0rdvXzZt2sSZZ57Jyy+/zI033khSUhJTpkwhJyeHiy++mIKCApxzZQax3HzzzaSkpFBYWMiQIUPKvVzXZZddxq9//Wvuvvvu0ml33303t912GykpKTjn6Nq1K++++26Z97322mssWrSI3bt389JLLwHeFZdSU1PLzDdhwgRuuukmYmNjWbJkCS+++CKXX345hYWFpKenc9NNN7Fnz56g23HnnXeSmZmJc44RI0bQp08fUlJS2LRpE/369cM5R9u2bZk7dy4LFy5k2rRpREVFER8fX9oCsXLlSjp06HD8B0dERETET0M6b/vuu+/4r//6L8wM5xx33HFHaQHib/LkyZx//vl06NCBBQsW8PDDDzN8+HCcc1xwwQVcfPHFfP3111x33XWlA7EffvhhioqKuPrqq8nJycE5x29+8xtOOOGEcmObM2cOs2fPJioqivbt23PPPfdQXFzMunXraN26dY0cn/JYRU1HlUlLS3PLli0rMy07O5u2bdseb1xST+Tm5nLDDTeU9hf019iPdceOHXX5XGk0zCzDOZdWF+sKlhtEGrrGmhMaey5var799lteeOEFHnvssWNeC3asq5sbGl0XJqlZiYmJQYuHpqAxJgoREake5QRpCJKTk4MWDzWtVrsw3ffOKlZn5dboMnt2TOTei3rV6DJFgpk6dSpTp04NdxgiIlIPNIWcoPM2CVWVWyDMbLKZLTOzZYE3PRNpTO67775whyBSI7bsqf07oio3SGOnnCByVJVbIJxzM4GZ4PVzrWjecFecBw8e5PLLL2f9+vVERERw0UUX8cgj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O1cppdQXvvAF9Ytf/GLwNefOnatCodA72ppKpdS6detUfX29euKJJ9RnP/vZs36m6dOnq46ODqWUUk1NTWratGmqvb1dJRIJtWHDBvXMM8+oXbt2qWuuuWbwOQOfo7i4WEWj0Xf87Fxte+CBB9STTz6plFIqFosNfsZzOdt3DexSF3G8P5+LxAYxGU3G2CBxYfhxQSmljEajWrlypVqzZo165plnzvqZ1q1bp9566y2llFKRSESVlZWpY8eOKaWU+vjHP66+853vnPNzVFRUqMbGxnf87NFHH1Vf/epXlVJKRaNRtXLlSlVTU6O+9a1vqX/5l39RSimVTCZVMBgcsr9HMjbICIQQZ5DdRkfH1q1b+dCHPoTT6cTlcvHhD3948IzJtGnTuOKKKwC488472bp1K263G5vNxj333MN//dd/4XA4APjTn/7EAw88MDgHNRgM0tfXB8DGjRux2+0A/OVf/iVPP/00AE899RQf+chHAHj55Zf5xje+wbJly1i/fj3RaJT6+vp3tPVHP/oRN954I9OmTRv253vrrbdYv349+fn5mEwm7rjjDjZv3sysWbOoqanhr//6r/njH/+I2+0GoLKykjvuuIMnn3wSk8n0nm277LLL+NrXvsa//uu/UldXN/gZhRBjR2LDyJtIcQGgvr6eXbt28atf/YrPfe5znDx58j0/37Fjx5g5cybz5s0D4BOf+ASbN28+5+e44ooruPvuu/nxj39MKpUabNvPf/5zli1bxpo1a+jq6qK6uprVq1fzxBNP8NBDD3HgwAFycnIu/Iu4ALKRnBBnWLlyJVVVVdluxqSj3mMH1zOXl9M0DZPJxM6dO3nllVf4z//8T374wx/y6quvkk6n2b59+1l/iXY6nYO3S0tLyc3NZf/+/fzmN78ZHPZVSvG73/2O+fPnn7M927dvZ8uWLfzoRz8iFAoRj8dxuVx84xvfOO/P5/P52LdvHy+99BL//u//zlNPPcXjjz/O888/z+bNm3nuuef46le/yqFDh87ZtoULF7JmzRqef/55rrvuOn7yk59w1VVXnbMtQoiRJ7Fh5E2kuABQUlICwKxZs1i/fj179uxh9uzZ5/35zvU5HnnkEXbs2MHzzz/PsmXL2Lt3L0opfvCDH3Dddde963U2b97M888/z8c//nEefPBB7rrrrvds/0iSEQghzrB79+5sN2FSWrt2Lc8++yz9/f2Ew2GeeeYZrrzySkA/q7N9+3ZAryN43/veRygUIhAIcOONN/Ld736XvXv3AnDttdfywx/+cPB1B35+Nrfddhvf/OY3CQQCLFmyBIDrrruOH/zgB4MH9j179rzreb/85S+pr6+ntraWb33rW9x1111nTR5ycnIGz3KtWbOGN954g87OTlKpFL/+9a9Zt24dnZ2dpNNpbrnlFr761a+ye/du0uk0DQ0NbNiwgW9+85v09vYSCoXO2baamhpmzZrF3/zN37Bx40b2798PwNVXX01TU9N5fAtCiAslsWHkTaS40NPTM1i/0NnZybZt21i0aNG7Hnd6XFiwYAG1tbWcOHECgF/84hesW7funJ/j5MmTrFmzhq985Svk5eXR0NDAddddx3/8x3+QSCQAOH78OOFwmLq6OgoKCvjMZz7Dpz/96cF/n3fddRc7d+4cVv9fDBmBEEKMiRUrVnD33XdzySWXAHDPPfewfPlyamtrWbhwIT/72c+49957mTt3Lvfffz+BQICbb76ZaDSKUuodxcef/exnqaysJJlMsnbtWh555JGzvuett97K3/7t3/LFL35x8Gdf/OIX+dznPkdlZSVKKWbMmMF///d/X9Bn2rRpEzfccAPFxcW89tprfP3rX2fDhg0opbjxxhu5+eab2bdvH5/85CdJp9MAfP3rXyeVSnHnnXcSCARQSvF3f/d3eL3ec7btN7/5DU8++SRms5mioiK+9KUvkU6nOXHiBH6//4LaLoQQ2TaR4sKRI0e49957MRgMpNPpwSLoM919993cd9992O12tm/fzhNPPMFHPvIRkskkq1ev5r777qO7u/usn+PBBx+kuroapRRXX301S5cupbKyktraWlasWIFSivz8fJ599llef/11Hn74YcxmMy6Xi5///OcA7N+/n+Li4ov/coagvdfw0VBWrVqldu3aNYLNESL7SkpKJuUSbB0dHeTn52e7GWKEHDx4kMcff5xvf/vb77rvbN+1pmlVSqlVY9E2iQ1iMpqMsUHiwuQSDAb59Kc/PVjncaaRjA0yhUmIM0y2ACEmp4qKirMmD0KI0SGxQYx3brf7nMnDSJMpTEKc4aGHHuKhhx7KdjNG1T//4RCHm4Mj+pqLStx8+abFI/qaQggxXkz22CBxQZyP8x6B0DRtk6ZpuzRN29XR0TEabRIiq/75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3TY3N5f333+/v0IdMiQ3CPEfUkAIIQadcx0q8fHHH7Np0yb27NnDvn372L59O+vWrfvSdlJAiJPpjaE699xzDy+++OJJ//fQQw+Rm5tLbm4uOTk5X/q/FBBCiL4mBYQQot88/PDDjB8/nvHjx/Poo492/d3n8/Htb3+b7Oxsrr766q4P5T//+c8ZO3Ys2dnZ/Nd//RcA1dXVXHXVVUydOpWpU6eyadMmAJYuXcptt93GwoUL+da3vsX06dPZv39/12PMmzePnTt30tLSwne+8x2mTp3KxIkTefvtt78Up6ZptLe309HRgcfjwev1EhcX97lt/vznP1NeXs78+fOZP38+AC+99BJZWVmMHz+en/3sZ0Dn6kNLlixh/PjxZGVl8cgjj3Td/tPndt111wGcMrb9+/czbdo0cnJyyM7O5ujRo+f+YgxBA2X/A1iwYAFhYWFn/Bw7Ojq4//77eeWVV8jJyeGVV16hrq6OK6+8kuzsbGbMmMGePXsAWLduXVdPxsSJE2lubqaiooI5c+aQk5PD+PHj2bBhAwArVqxg5syZTJo0ia9//eu43e5TtpEQYghQSp311+TJk5UQg82tt94a7BD6RFVVVVAff8eOHWr8+PHK7Xar5uZmNXbsWLVr1y5VUFCgALVx40allFI33XSTeuihh1Rtba0aOXKkCgQCSiml6uvrlVJKXX/99WrDhg1KKaWKiorU6NGjlVJKPfDAA2rSpEmqtbVVKaXUww8/rO6//36llFLl5eVqxIgRSiml7r33XvXiiy923eeIESOU2+3+Urx33323Cg8PV06nU/33f//3SZ9Tamqqqq6uVkopVVZWplJSUlRVVZXyer1q/vz56s0331Q7duxQF1xwQddtPn0eCQkJqr29/XN/O1Vsd955p1q2bJlSSimPx9P1HE/lZK81sEOdw/H+TL5Olhtk/zuz/U8ppdasWaMuvfTSz/3t29/+tho5cqTKyspSd911V9c+9FnPPfec+v73v9/1+5133qmWLl2qlFJq1apVasKECUoppS677LKu593c3Ky8Xq/6wx/+oH79618rpZTy+XyqqalJVVdXq9mzZ3fF+bvf/U794he/OGUbnUqw94FzNVhzgxjazjY3SA+EEF8gVxvtGxs3buSrX/0qdrsdh8PB1772ta6zmykpKcyaNQuAG2+8kY0bN+J0OrFYLNxy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pgJCRERERER8pgJCRERERER8pgJCRERERER8pgJCRERERER8pgJCRERERER8pgJCRERERER8pgJCRERERER8pgJCRERERER8pgJCRERERER8pgJCRERERER8pgJCRERERER8pgJCRERERER8pgJCRERERER8pgJCRERERER8pgJCRERERER8pgJCRERERER8pgJCRERERER85mjOg9PS0mz37t39FIpI21Djshwuq+JgWRXVThfGc789ZpsoRxgZidEkx0SEIkRphwoKCg5Ya9ODcSzlBmnv9hRXcKC0krT4KLKSokMdjsgpNTU3NKuA6N69O4sXL27OLkTalA9X7eGuGcsx1U5GpseR1yWZQdmJxEY6sNZS7bQs317E/ML9HCytIiYlhslX5TO8e4dQhy5tnDFmW7COpdwg7dnKncVc8swCsixkJETx5f+eS1iYOnxIy9TU3NCsAkJE3Ky1PPvfzTzy4Tq6psYybmAGvTsmEBMRftK2o/ulc1bfNL7efIi5q77hmilf8tcfDGXCoMwQRC4iIv5S43Txv7NWkBAdwdBuKcxbt48Fmw4yuk9QLv6JBI1KYpFmqqpxce+bK3jkw3XkdE7k6tO6kpudXG/xUCvMGE7rlcovxvchNT6K214pYPrX24MYtYiI+NvLX2xj1a4Szu6XxrkD0wkPM7z6ld7bpe1RASHSDDVOFz96eTGvL97JGb3TuHxENpmJvvd3TYyJ5M7z+9ClQyz3vbWSv83bGMBoRUQkUHYXHeWJuevp2zGeET06EBcVwcBOiXxWuJ+j1TWhDk/Er/zehcnpdFJSUkJNjf5Y2iuHw0FiYiLh4af+BL6teOiDtfy3cD/nDerI2AEZDV51OJXoiHDuGNeb5+dv4dE560lPiOL7w7sEIFoREQmUB99fQ7XLcs6ADBKi3RNkjOzZgZU7i3l76W6uGdk14DHoHExOxd/nZn4vIEpKSoiKiiI5ORljjPcHSJtireXo0aOUlJSQkpIS6nAC6vVFO3hh4VZG9EhhTP+mFQ+1HOFh3HR2D57+zwZ+8/YqcrOT6J+Z6MdoRUQkUKpqXPxnzV7yuiTTp2N83f39sxKJiwrnjYKdQSkgdA4m9QnEuZnfuzDV1NQQExOjF247ZYwhJiamzX/6UbDtEL9+eyW9M+IZn5NJbGTzK3pHeBg3je5BWJjh5hcXU17VtttQ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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "figsize(11, 9)\n", "\n", "# For the already prepared, I'm using Binomial's conj. prior.\n", "for k, N in enumerate(n_trials):\n", " sx = plt.subplot(len(n_trials)/2, 2, k+1)\n", " plt.xlabel(\"$p$, probability of heads\") \\\n", " if k in [0, len(n_trials)-1] else None\n", " plt.setp(sx.get_yticklabels(), visible=False)\n", " heads = data[:N].sum()\n", " d = pyro.distributions.Beta(1 + heads, 1 + N - heads)\n", " y = torch.exp(d.log_prob(torch.tensor(x)))\n", " plt.plot(x, y, label=\"observe %d tosses,\\n %d heads\" % (N, heads))\n", " plt.fill_between(x, 0, y, color=\"#348ABD\", alpha=0.4)\n", " plt.vlines(0.5, 0, 4, color=\"k\", linestyles=\"--\", lw=1)\n", "\n", " leg = plt.legend()\n", " leg.get_frame().set_alpha(0.4)\n", " plt.autoscale(tight=True)\n", "\n", "\n", "plt.suptitle(\"Bayesian updating of posterior probabilities\",\n", " y=1.02,\n", " fontsize=14)\n", "\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior probabilities are represented by the curves, and our uncertainty is proportional to the width of the curve. As the plot above shows, as we start to observe data our posterior probabilities start to shift and move around. Eventually, as we observe more and more data (coin-flips), our probabilities will tighten closer and closer around the true value of $p=0.5$ (marked by a dashed line). \n", "\n", "Notice that the plots are not always *peaked* at 0.5. There is no reason it should be: recall we assumed we did not have a prior opinion of what $p$ is. In fact, if we observe quite extreme data, say 8 flips and only 1 observed heads, our distribution would look very biased *away* from lumping around 0.5 (with no prior opinion, how confident would you feel betting on a fair coin after observing 8 tails and 1 head?). As more data accumulates, we would see more and more probability being assigned at $p=0.5$, though never all of it.\n", "\n", "The next example is a simple demonstration of the mathematics of Bayesian inference. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Example: Bug, or just sweet, unintended feature?\n", "\n", "\n", "Let $A$ denote the event that our code has **no bugs** in it. Let $X$ denote the event that the code passes all debugging tests. For now, we will leave the prior probability of no bugs as a variable, i.e. $P(A) = p$. \n", "\n", "We are interested in $P(A|X)$, i.e. the probability of no bugs, given our debugging tests $X$. To use the formula above, we need to compute some quantities.\n", "\n", "What is $P(X | A)$, i.e., the probability that the code passes $X$ tests *given* there are no bugs? Well, it is equal to 1, for a code with no bugs will pass all tests. \n", "\n", "$P(X)$ is a little bit trickier: The event $X$ can be divided into two possibilities, event $X$ occurring even though our code *indeed has* bugs (denoted $\\sim A\\;$, spoken *not $A$*), or event $X$ without bugs ($A$). $P(X)$ can be represented as:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{align}\n", "P(X ) & = P(X \\text{ and } A) + P(X \\text{ and } \\sim A) \\\\\\\\[5pt]\n", " & = P(X|A)P(A) + P(X | \\sim A)P(\\sim A)\\\\\\\\[5pt]\n", "& = P(X|A)p + P(X | \\sim A)(1-p)\n", "\\end{align}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have already computed $P(X|A)$ above. On the other hand, $P(X | \\sim A)$ is subjective: our code can pass tests but still have a bug in it, though the probability there is a bug present is reduced. Note this is dependent on the number of tests performed, the degree of complication in the tests, etc. Let's be conservative and assign $P(X|\\sim A) = 0.5$. Then\n", "\n", "\\begin{align}\n", "P(A | X) & = \\frac{1\\cdot p}{ 1\\cdot p +0.5 (1-p) } \\\\\\\\\n", "& = \\frac{ 2 p}{1+p}\n", "\\end{align}\n", "This is the posterior probability. What does it look like as a function of our prior, $p \\in [0,1]$?" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "figsize(12.5, 4)\n", "p = torch.linspace(0, 1, 50)\n", "plt.plot(p, 2 * p / (1 + p), color=\"#348ABD\", lw=3)\n", "plt.scatter(0.2, 2*(0.2)/1.2, s=140, c=\"#348ABD\")\n", "plt.xlim(0, 1)\n", "plt.ylim(0, 1)\n", "plt.xlabel(\"Prior, $P(A) = p$\")\n", "plt.ylabel(\"Posterior, $P(A|X)$, with $P(A) = p$\")\n", "plt.title(\"Are there bugs in my code?\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see the biggest gains if we observe the $X$ tests passed when the prior probability, $p$, is low. Let's settle on a specific value for the prior. I'm a strong programmer (I think), so I'm going to give myself a realistic prior of 0.20, that is, there is a 20% chance that I write code bug-free. To be more realistic, this prior should be a function of how complicated and large the code is, but let's pin it at 0.20. Then my updated belief that my code is bug-free is 0.33. \n", "\n", "Recall that the prior is a probability: $p$ is the prior probability that there *are no bugs*, so $1-p$ is the prior probability that there *are bugs*.\n", "\n", "Similarly, our posterior is also a probability, with $P(A | X)$ the probability there is no bug *given we saw all tests pass*, hence $1-P(A|X)$ is the probability there is a bug *given all tests passed*. What does our posterior probability look like? Below is a chart of both the prior and the posterior probabilities. \n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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abU2EyZM4I477mDMmDFMnDiRe++9lwsvvJBbbrmFb33rW1Xt54knnsivfvUrli9fzs0338ygQYPW+zmTpJa09aCOOra2GpSTaqmWCfs8YPuy6X6sWfLyaWA4QGY+GBHdgT7AizWMqyZmzZrFz372M/bff39OOeUUrrjiCs466yygdN/vyZMnA3DnnXcCpTvbnHTSSfzhD39g4MCBnHDCCYwbN44vf/nLa6xT7ktf+hKnnXYaJ5xwApdffnnFWH7yk5/wpS99ieOOO44333yTFStWcNFFF/Hkk08ybdo0AO655x4efvhhnnzyyYq3N3z44YeZOXMmO+64I8OHD+fWW2/lyCOPrLi9/fbbj5EjR65K0Mu1tp99+vTh0Ucf5YorruCSSy7hqquuavVYS1JbaItBHXVs1QzKSfWglneJeQTYJSIGRERXYBQwsUmbZ4EPAETErkB3YEENY6qZ7bffnv333x+A0aNHr5ZsH3300Wu0nzVrFgMGDGDgwIEAnHjiidx3330trgNw//33c8wxxwBw/PHHV2yz77778u1vf5vvfOc7PPPMM2y++eYV2w0bNqzZe5EPGzaMnXbaic6dO3PMMcdUfPNQjdb284gjjgDgve99L3Pnzl2nbUiSJG3MapawZ2YDcDpwF/AUpbvBzIiIsRExsmj2VeCzEfE4cANwUmZWXfJST5reKrB8eosttlijfWu7WWmd5rbV1LHHHsvEiRPZfPPN+chHPsIf//jH9d5G43T5/GruZd7afnbr1g2Azp0709BgTakkSVJTNf2m08ycROlWjeXzzi97PBPYv1bb35AfdT377LM8+OCD7Lvvvtxwww0ccMABLbYfNGgQc+fOZfbs2ey8885ce+21HHTQQa1uZ//992f8+PGMHj2a6667rmKbOXPmsNNOO3HGGWcwZ84cpk+fzp577smiRYuq3p+HH36Yp59+mh133JEbb7yRMWPGAPD2t7+dp556ine9613cdttt9OrVC4BevXpV7H9d91OSJEklG8U3nTa1RdcuvK1ntzb72aJr6+9rdt11V6655hr22GMPXn75ZU477bQW23fv3p2rr76ao446it13351OnTpx6qmntrqdH/zgB1x++eXsvffe/POf/6zY5sYbb2S33XZjyJAh/OUvf+GEE05g6623Zv/992e33Xbja1/7Wqvb2XfffTn77LPZbbfdGDBgAJ/4xCcAuOiiixgxYgTvf//72WabbVa1HzVqFBdffDHvec97+Pvf/77e+ylJkqSS6GgVKEOHDs0pU6asNu+pp55i1113Bdrni5PK79CijqH8nJG06fjKrY+zYNEbvLj4DS86FTOef4239exG317dvA+76kJETM3MoU3n17Qkpj34BydJkqSNyUZZErOh9e/f39F1SZIk1YQJuyRJklTHTNglSZKkOmbCLkmSJNWxje6i03s/0fLtFNfHQbeNq1nfkiRJUiUb5Qj78kVLWDr/hTb7Wb5oyQaJ+/bbb2fmzJlrvd7EiRO56KKL2iyOgw8+mMZbZx522GG8+uqrzba97LLLeP3115td/pnPfGbVPvXs2XOt4pg2bRqTJv3re7faej8lSZI6go1uhB2gYdFiXp//Ypv112Nb2KzXFm3WX3Nuv/12RowYweDBg6tep6GhgZEjRzJy5Mi1WqdLl+qe+vKEuZLLLruM0aNH06NHjzWWrVixgquuuqrquJqaNm0aU6ZM4bDDDgNY6/2UJEnaGGyUCXujrYfuvt59LJzyRKtt5s6dy/Dhw9lnn3147LHHGDhwIL/4xS/o0aMHf/jDHzjrrLNoaGhg7733Zty4cXTr1o2zzz6biRMn0qVLFz784Q9zxBFHMHHiRO69914uvPBCbrnlFgC+8IUvsGDBAnr06MF///d/M2jQIE466STe+ta38thjj7HXXnux++67M2XKFH784x/zzDPPcMopp7BgwQL69u3L1VdfzQ477LDGOt/73vdWxb906VJOPvlkZs6cya677srSpUtXLevfvz9Tpkxh880351Of+hTz5s1jxYoVnHfeebzwwgvMnz+fQw45hD59+nD33XfTs2dPzjzzTO666y6+973vce6553LJJZcwdGjpOwC++tWvcvfdd/OWt7yF8ePH07dvXw4++OBVbV566SWGDh3KX//6V84//3yWLl3K5MmTOeecc1i6dGlV+9m7d2+mTJnCP/7xD7773e9y5JFHrvd5IEmS1F42ypKY9jBr1izGjBnD9OnT6d27N1dccQXLli3jpJNO4sYbb+SJJ56goaGBcePG8fLLL3PbbbcxY8YMpk+fzrnnnst+++3HyJEjufjii5k2bRrvfOc7GTNmDD/60Y+YOnUql1xyCZ///OdXbe+vf/0rv//971dLvAFOP/10TjjhBKZPn85xxx3HGWec0eo648aNo0ePHkyfPp1vfOMbTJ06dY39u/POO9l22215/PHHefLJJxk+fDhnnHEG2267LXfffTd33303AEuWLGG33Xbjz3/+MwcccMBqfSxZsoS99tqLRx99lIMOOogLLrig2ePZtWtXxo4dy9FHH820adM4+uijq97P559/nsmTJ3PHHXdw9tlnN7sNSZKkjsCEvY1sv/327L///gCMHj2ayZMnM2vWLAYMGMDAgQMBOPHEE7nvvvvo3bs33bt35zOf+Qy33nprxXKSxYsX88ADD3DUUUcxZMgQPve5z/H888+vWn7UUUfRuXPnNdZ78MEHOfbYYwE4/vjjmTx5cqvr3HfffYwePRqAPfbYgz322GONNrvvvju///3v+frXv86f/vQnttxyy4rHoXPnznzyk5+suKxTp06rEu/GY7SuWtrPj3/843Tq1InBgwfzwgsvrPM2JEmS6oEJexuJiDWmM7Ni2y5duvDwww/zyU9+kttvv53hw4ev0WblypVstdVWTJs2bdXPU089tWr5FltUV1NfHldL6zSNv6mBAwcydepUdt99d8455xzGjh1bsV337t0rviloaZtdunRh5cqVACxbtqyqdZvrC6Bbt26rHjf3HEiSJHUUG3UNezX1523l2Wef5cEHH2Tfffflhhtu4IADDmDQoEHMnTuX2bNns/POO3Pttddy0EEHsXjxYl5//XUOO+ww3ve+97HzzjsD0KtXLxYtWgRA7969GTBgADfffDNHHXUUmcn06dPZc889W4xjv/32Y/z48Rx//PFcd911a5SlVHLggQdy3XXXccghh/Dkk08yffr0NdrMnz+ft771rYwePZqePXvy85//fLWY+/Tp0+p2Vq5cyYQJExg1ahTXX3/9qtj69+/P1KlTGTZsGBMmTFjVvvx4tMV+SpIkdUQbZcLepVdPemzbtv21Ztddd+Waa67hc5/7HLvssgunnXYa3bt35+qrr+aoo45addHpqaeeyssvv8zhhx/OsmXLyEwuvfRSAEaNGsVnP/tZfvjDHzJhwgSuu+46TjvtNC688EKWL1/OqFGjWk3Yf/jDH3LKKadw8cUXr7oYszWnnXYaJ598MnvssQdDhgxh2LBha7R54okn+NrXvkanTp3YbLPNGDeudE/6MWPGcOihh7LNNtusqmNvzhZbbMGMGTN4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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "figsize(12.5, 4)\n", "colours = [\"#348ABD\", \"#A60628\"]\n", "\n", "prior = [0.20, 0.80]\n", "posterior = [1./3, 2./3]\n", "plt.bar([0, .7], prior, alpha=0.70, width=0.25,\n", " color=colours[0], label=\"prior distribution\",\n", " lw=\"3\", edgecolor=colours[0])\n", "\n", "plt.bar([0+0.25, .7+0.25], posterior, alpha=0.7,\n", " width=0.25, color=colours[1],\n", " label=\"posterior distribution\",\n", " lw=\"3\", edgecolor=colours[1])\n", "\n", "plt.xticks([0.20, .95], [\"Bugs Absent\", \"Bugs Present\"])\n", "plt.title(\"Prior and Posterior probability of bugs present\")\n", "plt.ylabel(\"Probability\")\n", "plt.legend(loc=\"upper left\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that after we observed $X$ occur, the probability of bugs being absent increased. By increasing the number of tests, we can approach confidence (probability 1) that there are no bugs present.\n", "\n", "This was a very simple example of Bayesian inference and Bayes rule. Unfortunately, the mathematics necessary to perform more complicated Bayesian inference only becomes more difficult, except for artificially constructed cases. We will later see that this type of mathematical analysis is actually unnecessary. First we must broaden our modeling tools. The next section deals with *probability distributions*. If you are already familiar, feel free to skip (or at least skim), but for the less familiar the next section is essential." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "_______\n", "\n", "## Probability Distributions\n", "\n", "\n", "**Let's quickly recall what a probability distribution is:** Let $Z$ be some random variable. Then associated with $Z$ is a *probability distribution function* that assigns probabilities to the different outcomes $Z$ can take. Graphically, a probability distribution is a curve where the probability of an outcome is proportional to the height of the curve. You can see examples in the first figure of this chapter. \n", "\n", "We can divide random variables into three classifications:\n", "\n", "- **$Z$ is discrete**: Discrete random variables may only assume values on a specified list. Things like populations, movie ratings, and number of votes are all discrete random variables. Discrete random variables become more clear when we contrast them with...\n", "\n", "- **$Z$ is continuous**: Continuous random variable can take on arbitrarily exact values. For example, temperature, speed, time, color are all modeled as continuous variables because you can progressively make the values more and more precise.\n", "\n", "- **$Z$ is mixed**: Mixed random variables assign probabilities to both discrete and continuous random variables, i.e. it is a combination of the above two categories. \n", "\n", "### Discrete Case\n", "If $Z$ is discrete, then its distribution is called a *probability mass function*, which measures the probability $Z$ takes on the value $k$, denoted $P(Z=k)$. Note that the probability mass function completely describes the random variable $Z$, that is, if we know the mass function, we know how $Z$ should behave. There are popular probability mass functions that consistently appear: we will introduce them as needed, but let's introduce the first very useful probability mass function. We say $Z$ is *Poisson*-distributed if:\n", "\n", "$$P(Z = k) =\\frac{ \\lambda^k e^{-\\lambda} }{k!}, \\; \\; k=0,1,2, \\dots $$\n", "\n", "$\\lambda$ is called a parameter of the distribution, and it controls the distribution's shape. For the Poisson distribution, $\\lambda$ can be any positive number. By increasing $\\lambda$, we add more probability to larger values, and conversely by decreasing $\\lambda$ we add more probability to smaller values. One can describe $\\lambda$ as the *intensity* of the Poisson distribution. \n", "\n", "Unlike $\\lambda$, which can be any positive number, the value $k$ in the above formula must be a non-negative integer, i.e., $k$ must take on values 0,1,2, and so on. This is very important, because if you wanted to model a population you could not make sense of populations with 4.25 or 5.612 members. \n", "\n", "If a random variable $Z$ has a Poisson mass distribution, we denote this by writing\n", "\n", "$$Z \\sim \\text{Poi}(\\lambda) $$\n", "\n", "One useful property of the Poisson distribution is that its expected value is equal to its parameter, i.e.:\n", "\n", "$$E\\large[ \\;Z\\; | \\; \\lambda \\;\\large] = \\lambda $$\n", "\n", "We will use this property often, so it's useful to remember. Below, we plot the probability mass distribution for different $\\lambda$ values. The first thing to notice is that by increasing $\\lambda$, we add more probability of larger values occurring. Second, notice that although the graph ends at 15, the distributions do not. They assign positive probability to every non-negative integer." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "figsize(12.5, 4)\n", "\n", "lambda_ = [1.5, 4.25]\n", "\n", "d = dist.Poisson(torch.tensor(lambda_))\n", "x = torch.arange(16).float().view(-1, 1)\n", "y = torch.exp(d.log_prob(x))\n", "\n", "colours = [\"#348ABD\", \"#A60628\"]\n", "plt.bar(x.flatten(), y[:, 0], color=colours[0],\n", " label=\"$\\lambda = %.1f$\" % lambda_[0], alpha=0.60,\n", " edgecolor=colours[0], lw=\"3\")\n", "\n", "plt.bar(x.flatten(), y[:, 1], color=colours[1],\n", " label=\"$\\lambda = %.1f$\" % lambda_[1], alpha=0.60,\n", " edgecolor=colours[1], lw=\"3\")\n", "\n", "plt.xticks(x.flatten().numpy() + 0.4, x.flatten().numpy().astype(int))\n", "plt.legend()\n", "plt.ylabel(\"probability of $k$\")\n", "plt.xlabel(\"$k$\")\n", "plt.title(\"Probability mass function of a Poisson random variable; differing \\\n", "$\\lambda$ values\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Continuous Case\n", "Instead of a probability mass function, a continuous random variable has a *probability density function*. This might seem like unnecessary nomenclature, but the density function and the mass function are very different creatures. An example of continuous random variable is a random variable with *exponential density*. The density function for an exponential random variable looks like this:\n", "\n", "$$f_Z(z | \\lambda) = \\lambda e^{-\\lambda z }, \\;\\; z\\ge 0$$\n", "\n", "Like a Poisson random variable, an exponential random variable can take on only non-negative values. But unlike a Poisson variable, the exponential can take on *any* non-negative values, including non-integral values such as 4.25 or 5.612401. This property makes it a poor choice for count data, which must be an integer, but a great choice for time data, temperature data (measured in Kelvins, of course), or any other precise *and positive* variable. The graph below shows two probability density functions with different $\\lambda$ values. \n", "\n", "When a random variable $Z$ has an exponential distribution with parameter $\\lambda$, we say *$Z$ is exponential* and write\n", "\n", "$$Z \\sim \\text{Exp}(\\lambda)$$\n", "\n", "Given a specific $\\lambda$, the expected value of an exponential random variable is equal to the inverse of $\\lambda$, that is:\n", "\n", "$$E[\\; Z \\;|\\; \\lambda \\;] = \\frac{1}{\\lambda}$$" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "lambda_ = [0.5, 1]\n", "d = dist.Exponential(torch.tensor(lambda_))\n", "\n", "x = torch.linspace(0, 4, 100).view(-1, 1)\n", "y = torch.exp(d.log_prob(x))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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lRERERGRIa2+vp477riDn/3sZ5SUlLBmzZp265xyyiksXry43e2JJ55IrFNQUMCOHTsSj8vLy8nLy0v6nM3tEyZM4NJLL+WVV17p8etQj7uIiIiI9ItUhrP0hW9961tcffXViZleHnzwwXbrpNLjfsIJJ7Bx40a2bt1Kfn4+999/P/fee2+79WpqaojFYuTm5lJTU8Njjz3G1772tR6/DvW4i4iIiMiQtWHDBh5//HE+97nPAXTY456KQCDAPffcw7nnnsvcuXO5/PLLmT9/PgAXXHABu3btAmDv3r28973vZdGiRZx44olceOGFnHfeeT1+LS7ZWJ3BoLS01Hprah0RERER6Rtvv/02c+fOTXcZA1ay4+Oce9XM2k3+rh53EREREZFBQMFdRERERGQQUHAXERERERkEFNxFRERERAYBBXcRERERkUFAwV1EREREZBBQcBcRERERGQQU3EVEREREBgEFdxEREREZ8lavXk1RURE///nPe7Sf6667jgkTJrBgwYJO11u+fDmzZ8+muLiY733vez16zmYK7iIiIiIy5JWUlHD//ffzu9/9rkf7ufbaa1m+fHmn60SjUT71qU/xyCOPsG7dOu677z7WrVvXo+cFBXcRERERGSYmTJjA2rVre7SPU089lTFjxnS6ziuvvEJxcTHTp08nFApx5ZVX8re//a1HzwsQ6PEeRERERERScF/G3D7b99KGt7tc584776ShoYGysjKKiopaLTvllFOorq5ut80Pf/hDzj777G7VsnPnTgoLCxOPCwoKWLFiRbf2kUyfB3fn3G+A9wMVZtZuMJBzzgE/Bi4AaoFrzey1vq5LRERERIaP5cuXU1NTw4UXXsjatWvbBffnn3++157LzNq1eZG3Z/pjqMxvgfM6WX4+MDN+Wwb07IqBflC9qYwjW3akuwwRERERSUF9fT133HEHP/vZzygpKWHNmjXt1jnllFNYvHhxu9sTTzzR7ecrKChgx46jWbG8vJy8vLwevQbohx53M3vOOTe1k1UuBn5n3n9NXnbOjXLOTTaz3X1d27HYt/Itnr30ZoIjcjjn2fsIj+98jJOIiIiIeFIZztIXvvWtb3H11VczdepUSkpKePDBB9ut05s97ieccAIbN25k69at5Ofnc//993Pvvff2eL8D4eLUfKBl93V5vG3AaTpSwzMX30RD5X6ObN7O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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for i, c in enumerate(colours):\n", " plt.plot(x.flatten(), y[:, i], lw=3,\n", " color=c, label=\"$\\lambda = %.1f$\" % lambda_[i])\n", " plt.fill_between(x.flatten(), y[:, i], color=c, alpha=.33)\n", "\n", "plt.legend()\n", "plt.ylabel(\"PDF at $z$\")\n", "plt.xlabel(\"$z$\")\n", "plt.ylim(0,1.2)\n", "plt.title(\"Probability density function of an Exponential random variable;\\\n", " differing $\\lambda$\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "### But what is $\\lambda \\;$?\n", "\n", "\n", "**This question is what motivates statistics**. In the real world, $\\lambda$ is hidden from us. We see only $Z$, and must go backwards to try and determine $\\lambda$. The problem is difficult because there is no one-to-one mapping from $Z$ to $\\lambda$. Many different methods have been created to solve the problem of estimating $\\lambda$, but since $\\lambda$ is never actually observed, no one can say for certain which method is best! \n", "\n", "Bayesian inference is concerned with *beliefs* about what $\\lambda$ might be. Rather than try to guess $\\lambda$ exactly, we can only talk about what $\\lambda$ is likely to be by assigning a probability distribution to $\\lambda$.\n", "\n", "This might seem odd at first. After all, $\\lambda$ is fixed; it is not (necessarily) random! How can we assign probabilities to values of a non-random variable? Ah, we have fallen for our old, frequentist way of thinking. Recall that under Bayesian philosophy, we *can* assign probabilities if we interpret them as beliefs. And it is entirely acceptable to have *beliefs* about the parameter $\\lambda$. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "##### Example: Inferring behaviour from text-message data\n", "\n", "Let's try to model a more interesting example, one that concerns the rate at which a user sends and receives text messages:\n", "\n", "> You are given a series of daily text-message counts from a user of your system. The data, plotted over time, appears in the chart below. You are curious to know if the user's text-messaging habits have changed over time, either gradually or suddenly. How can you model this? (This is in fact my own text-message data. Judge my popularity as you wish.)\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "figsize(12.5, 3.5)\n", "count_data = torch.from_numpy(np.loadtxt(\"data/txtdata.csv\"))\n", "n_count_data = len(count_data)\n", "plt.bar(np.arange(n_count_data), count_data, color=\"#348ABD\")\n", "plt.xlabel(\"Time (days)\")\n", "plt.ylabel(\"count of text-msgs received\")\n", "plt.title(\"Did the user's texting habits change over time?\")\n", "plt.xlim(0, n_count_data);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before we start modeling, see what you can figure out just by looking at the chart above. Would you say there was a change in behaviour during this time period? \n", "\n", "How can we start to model this? Well, as we have conveniently already seen, a Poisson random variable is a very appropriate model for this type of *count* data. Denoting day $i$'s text-message count by $C_i$, \n", "\n", "$$ C_i \\sim \\text{Poisson}(\\lambda) $$\n", "\n", "We are not sure what the value of the $\\lambda$ parameter really is, however. Looking at the chart above, it appears that the rate might become higher late in the observation period, which is equivalent to saying that $\\lambda$ increases at some point during the observations. (Recall that a higher value of $\\lambda$ assigns more probability to larger outcomes. That is, there is a higher probability of many text messages having been sent on a given day.)\n", "\n", "How can we represent this observation mathematically? Let's assume that on some day during the observation period (call it $\\tau$), the parameter $\\lambda$ suddenly jumps to a higher value. So we really have two $\\lambda$ parameters: one for the period before $\\tau$, and one for the rest of the observation period. In the literature, a sudden transition like this would be called a *switchpoint*:\n", "\n", "$$\n", "\\lambda = \n", "\\begin{cases}\n", "\\lambda_1 & \\text{if } t \\lt \\tau \\cr\n", "\\lambda_2 & \\text{if } t \\ge \\tau\n", "\\end{cases}\n", "$$\n", "\n", "\n", "If, in reality, no sudden change occurred and indeed $\\lambda_1 = \\lambda_2$, then the $\\lambda$s posterior distributions should look about equal.\n", "\n", "We are interested in inferring the unknown $\\lambda$s. To use Bayesian inference, we need to assign prior probabilities to the different possible values of $\\lambda$. What would be good prior probability distributions for $\\lambda_1$ and $\\lambda_2$? Recall that $\\lambda$ can be any positive number. As we saw earlier, the *exponential* distribution provides a continuous density function for positive numbers, so it might be a good choice for modeling $\\lambda_i$. But recall that the exponential distribution takes a parameter of its own, so we'll need to include that parameter in our model. Let's call that parameter $\\alpha$.\n", "\n", "\\begin{align}\n", "&\\lambda_1 \\sim \\text{Exp}( \\alpha ) \\\\\\\n", "&\\lambda_2 \\sim \\text{Exp}( \\alpha )\n", "\\end{align}\n", "\n", "$\\alpha$ is called a *hyper-parameter* or *parent variable*. In literal terms, it is a parameter that influences other parameters. Our initial guess at $\\alpha$ does not influence the model too strongly, so we have some flexibility in our choice. A good rule of thumb is to set the exponential parameter equal to the inverse of the average of the count data. Since we're modeling $\\lambda$ using an exponential distribution, we can use the expected value identity shown earlier to get:\n", "\n", "$$\\frac{1}{N}\\sum_{i=0}^N \\;C_i \\approx E[\\; \\lambda \\; |\\; \\alpha ] = \\frac{1}{\\alpha}$$ \n", "\n", "An alternative, and something I encourage the reader to try, would be to have two priors: one for each $\\lambda_i$. Creating two exponential distributions with different $\\alpha$ values reflects our prior belief that the rate changed at some point during the observations.\n", "\n", "What about $\\tau$? Because of the noisiness of the data, it's difficult to pick out a priori when $\\tau$ might have occurred. Instead, we can assign a *uniform prior belief* to every possible day. This is equivalent to saying\n", "\n", "\\begin{align}\n", "& \\tau \\sim \\text{DiscreteUniform(1,70) }\\\\\\\\\n", "& \\Rightarrow P( \\tau = k ) = \\frac{1}{70}\n", "\\end{align}\n", "\n", "So after all this, what does our overall prior distribution for the unknown variables look like? Frankly, *it doesn't matter*. What we should understand is that it's an ugly, complicated mess involving symbols only a mathematician could love. And things will only get uglier the more complicated our models become. Regardless, all we really care about is the posterior distribution.\n", "\n", "We next turn to [Pyro](https://pyro.ai/), a Python library for performing Bayesian analysis that is undaunted by the mathematical monster we have created. \n", "\n", "\n", "## Introducing our first hammer: Pyro\n", "\n", "Pyro is a Python library for programming Bayesian analysis. It is intended for data scientists, statisticians, machine learning practitioners, and scientists. Since it is built on the PyTorch stack, it brings the runtime benefits of PyTorch to Bayesian analysis. These include write-once run-many (ability to run your development model in production) and speedups via state-of-the-art hardware (GPUs and TPUs). \n", "\n", "Since Pyro is relatively new, the Pyro community is actively developing documentation, \n", "especially docs and examples that bridge the gap between beginner and hacker. One of this book's main goals is to solve that problem, and also to demonstrate why TFP is so cool.\n", "\n", "We will model the problem above using Pyro. This type of programming is called *probabilistic programming*, an unfortunate misnomer that invokes ideas of randomly-generated code and has likely confused and frightened users away from this field. The code is not random; it is probabilistic in the sense that we create probability models using programming variables as the model's components. \n", "\n", "B. Cronin [[4]](#scrollTo=nDdph0r1ABCn) has a very motivating description of probabilistic programming:\n", "\n", "> Another way of thinking about this: unlike a traditional program, which only runs in the forward directions, a probabilistic program is run in both the forward and backward direction. It runs forward to compute the consequences of the assumptions it contains about the world (i.e., the model space it represents), but it also runs backward from the data to constrain the possible explanations. In practice, many probabilistic programming systems will cleverly interleave these forward and backward operations to efficiently home in on the best explanations.\n", "\n", "Because of the confusion engendered by the term *probabilistic programming*, I'll refrain from using it. Instead, I'll simply say *programming*, since that's what it really is. \n", " \n", "Pyro code is easy to read. The only novel thing should be the syntax. Simply remember that we are representing the model's components ($\\tau, \\lambda_1, \\lambda_2$ ) as variables." ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [], "source": [ "def model(data):\n", " alpha = 1.0 / data.mean()\n", " lambda_1 = pyro.sample(\"lambda_1\", dist.Exponential(alpha))\n", " lambda_2 = pyro.sample(\"lambda_2\", dist.Exponential(alpha))\n", " \n", " tau = pyro.sample(\"tau\", dist.Uniform(0, 1))\n", " lambda1_size = (tau * data.size(0) + 1).long()\n", " lambda2_size = data.size(0) - lambda1_size\n", " lambda_ = torch.cat([lambda_1.expand((lambda1_size,)),\n", " lambda_2.expand((lambda2_size,))])\n", "\n", " with pyro.plate(\"data\", data.size(0)):\n", " pyro.sample(\"obs\", dist.Poisson(lambda_), obs=data)" ] }, { "cell_type": "code", "execution_count": 144, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Sample: 100%|██████████| 5500/5500 [00:43, 126.11it/s, step size=2.45e-01, acc. prob=0.802]\n" ] } ], "source": [ "kernel = NUTS(model, jit_compile=True, ignore_jit_warnings=True, max_tree_depth=3)\n", "posterior = MCMC(kernel, num_samples=5000, warmup_steps=500)\n", "posterior.run(count_data);" ] }, { "cell_type": "code", "execution_count": 145, "metadata": {}, "outputs": [], "source": [ "hmc_samples = {k: v.detach().cpu().numpy() for k, v in posterior.get_samples().items()}\n", "lambda_1_samples = hmc_samples['lambda_1']\n", "lambda_2_samples = hmc_samples['lambda_2']\n", "tau_samples = (hmc_samples['tau'] * count_data.size(0) + 1).astype(int)" ] }, { "cell_type": "code", "execution_count": 146, "metadata": {}, "outputs": [ { "data": { "image/png": "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yFNPPcUFF1ywUXXf/va393E0f3beeecxadIkDj300Fdsf/DBBxk7diwXXnhhaeeWJElSc1Gb7r06urq6ct68ea/Y9vDDDzNp0qSX18/5wvV9es7PfPGAPj1eM8uWLeOAAw5g4cKFLdfJTDKTLbZo/XvZhtaZOHEiN954Y8PZZ+6++25OPPFE7r777pbPD+u+Z5IkSQNdRMzPzK4NqWPPfB9ZtmwZEydO5IgjjmDXXXdl5syZrF69GoCvfe1rTJ48mcmTJ3PuuecC8Nxzz/GBD3yAt7zlLUyePJmrr76a2bNn85vf/IapU6dy8sknA/Dd736XadOmMXXqVI4++mheeuklli1bxqRJkzjuuOPYfffdWbFiBdtss83LsTQ6X6M6PTWqd8wxx7B06VIOPPBAzjnnnHXqjBo1ikWLFvVtY0qSJKklHTHP/OZi8eLFXHLJJUyfPp2jjjqKCy64gHe9611cdtll3HvvvWQme+65J/vssw9Lly5lhx124Ec/+hEATz/9NHvuuScLFy5kwYIFQK33+uqrr+auu+5i8ODBHHfccVxxxRXsvffeLF68mMsuu2ydYTnz589veL7tt9++aZ3e6l100UXcdNNN3H777YwYMWKderNnz+b5559n+fLljB07toRWlSRJUjP2zPehMWPGMH36dAAOO+ww7rzzTu68804+9KEPMXToULbZZhs+/OEPc8cddzBlyhR+/OMfc8opp3DHHXew7bbbrnO82267jfnz5/PWt76VqVOnctttt7F06VIAxo4dy1577bVOnWbn663O+uo1c9NNN738C8Pa3vnrrruOT37ykxx00EHccsstrTeeJEmSNpjJfB/qOX96RNDsnoSdd96Z+fPnM2XKFE499VTmzJmzTpnM5IgjjmDBggUsWLCAxYsXc8YZZwAwdOjQhsft7R6IZnXWV6+RNWvW8LnPfY4LLriAKVOmvDzO/4Mf/CD/9m//xre+9S2uvvrqDTqmJEmSNozJfB965JFHXr4R9Morr+Qd73gHe++9N9dddx2rV6/mueee4wc/+AHvfOc7WblyJVtvvTWHHXYYJ510Evfffz/Dhg3jmWeeefl4++23H9deey2PPfYYAE888QTLly/vNYZm51ufDa135plncvjhhzNu3LhXJPP1+z/1qU+t97ySJEnaeI6Z70OTJk3i8ssv5+ijj2bChAkc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WeZ5/PsAgXAJqCE2YoIJbZBAhBBDoAkXQSUwMjDYqDCg0ICAGZpuHVCy6IXdKAs0KrY2l0a5pAUVGwUzEkCMqAn3hAQJZCIxBkhHB4zcBLnmmT9qB4uTqnPqhFO1ax++n7XOqtrvvtQvVZX3POett/bOzBH92adyX4AdPXo08+fPLzuGJEmSNKAi4uH+7uOceUmSJKmiLOYlSZKkirKYlyRJkiqqcnPmG3nppZdYuXIlzz//fNlR1MDQoUMZOXIkQ4YMKTuKJEnSoDIoivmVK1cybNgwRo8eTXHZcHWJzGT16tWsXLmSMWPGlB1HkiRpUBkU02yef/55hg8fbiHfhSKC4cOH+6mJJElSGwyKYh6wkO9ivjaSJEntMWiKeUmSJOmNxmJekiRJqiiL+S7y5JNPctFFF63XvnvttdcAp/mLr3/964wbN46jjz66bY8hSZKk/hsUZ7Ppaer07Qf0eDeft3xAj9fM2mJ+2rRpLe+TmWQmt99+e7/32WCD1v6Wu+iii7jxxhs9G40kSVKXcWR+gKxYsYIdd9yRY489ll122YUjjjiC5557DoCvfvWrjB8/nvHjx/O1r30NgGeffZYPfvCD7LrrrowfP55rrrmGM888k9/85jdMmDCBM844A4CrrrqKyZMnM2HCBE4++WReeeUVVqxYwbhx45g2bRoTJ07k0UcfZYsttng1S6PHa7RPT432O+WUU1i+fDmHHnooF1xwwavbPv300+y2227svPPObLbZZkyYMIE999yTNWvWtOcJliRJ0joG5ch8WZYuXcpll13GlClTOP7447nooovYf//9ueKKK7jrrrvITPbYYw/2228/li9fzrbbbssNN9wAwFNPPcUee+zB4sWLWbRoEQBLlizhmmuu4bbbbmPIkCFMmzaNq6++mn333ZelS5dyxRVXrDMtZ8GCBQ0f781vfnPTfXrb75JLLuGmm27i1ltvZeutt351+y233JKFCxdy9913c+655/KjH/2ojc+sJEmSGnFkfgCNGjWKKVOmAHDMMccwb9485s2bx+GHH87mm2/OFltswYc+9CHmzp3Lu9/9bn7605/y2c9+lrlz57LVVlutc7w5c+awYMECdt99dyZMmMCcOXNYvrw25ecd73gHe+655zr7NHu83vbpa7/eLF68mJ133rnl50iSJEkDx5H5AdTzfOoRQWY23HaH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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "figsize(12.5, 10)\n", "#histogram of the samples:\n", "\n", "ax = plt.subplot(311)\n", "ax.set_autoscaley_on(False)\n", "\n", "plt.hist(lambda_1_samples, histtype='stepfilled', bins=30, alpha=0.85,\n", " label=\"posterior of $\\lambda_1$\", color=\"#A60628\", density=True)\n", "plt.legend(loc=\"upper left\")\n", "plt.title(r\"\"\"Posterior distributions of the variables\n", " $\\lambda_1,\\;\\lambda_2,\\;\\tau$\"\"\")\n", "plt.xlim([15, 30])\n", "plt.xlabel(\"$\\lambda_1$ value\")\n", "\n", "ax = plt.subplot(312)\n", "ax.set_autoscaley_on(False)\n", "plt.hist(lambda_2_samples, histtype='stepfilled', bins=30, alpha=0.85,\n", " label=\"posterior of $\\lambda_2$\", color=\"#7A68A6\", density=True)\n", "plt.legend(loc=\"upper left\")\n", "plt.xlim([15, 30])\n", "plt.xlabel(\"$\\lambda_2$ value\")\n", "\n", "plt.subplot(313)\n", "w = 1.0 / tau_samples.shape[0] * np.ones_like(tau_samples)\n", "plt.hist(tau_samples, bins=n_count_data, alpha=1,\n", " label=r\"posterior of $\\tau$\",\n", " color=\"#467821\", weights=w, rwidth=2.)\n", "plt.xticks(np.arange(n_count_data))\n", "\n", "plt.legend(loc=\"upper left\")\n", "plt.ylim([0, .75])\n", "plt.xlim([35, len(count_data)-20])\n", "plt.xlabel(r\"$\\tau$ (in days)\")\n", "plt.ylabel(\"probability\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Interpretation\n", "\n", "Recall that Bayesian methodology returns a *distribution*. Hence we now have distributions to describe the unknown $\\lambda$s and $\\tau$. What have we gained? Immediately, we can see the uncertainty in our estimates: the wider the distribution, the less certain our posterior belief should be. We can also see what the plausible values for the parameters are: $\\lambda_1$ is around 18 and $\\lambda_2$ is around 23. The posterior distributions of the two $\\lambda$s are clearly distinct, indicating that it is indeed likely that there was a change in the user's text-message behaviour.\n", "\n", "What other observations can you make? If you look at the original data again, do these results seem reasonable? \n", "\n", "Notice also that the posterior distributions for the $\\lambda$s do not look like exponential distributions, even though our priors for these variables were exponential. In fact, the posterior distributions are not really of any form that we recognize from the original model. But that's OK! This is one of the benefits of taking a computational point of view. If we had instead done this analysis using mathematical approaches, we would have been stuck with an analytically intractable (and messy) distribution. Our use of a computational approach makes us indifferent to mathematical tractability.\n", "\n", "Our analysis also returned a distribution for $\\tau$. Its posterior distribution looks a little different from the other two because it is a discrete random variable, so it doesn't assign probabilities to intervals. We can see that near day 45, there was a 50% chance that the user's behaviour changed. Had no change occurred, or had the change been gradual over time, the posterior distribution of $\\tau$ would have been more spread out, reflecting that many days were plausible candidates for $\\tau$. By contrast, in the actual results we see that only three or four days make any sense as potential transition points. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Why would I want samples from the posterior, anyways?\n", "\n", "\n", "We will deal with this question for the remainder of the book, and it is an understatement to say that it will lead us to some amazing results. For now, let's end this chapter with one more example.\n", "\n", "We'll use the posterior samples to answer the following question: what is the expected number of texts at day $t, \\; 0 \\le t \\le 70$ ? Recall that the expected value of a Poisson variable is equal to its parameter $\\lambda$. Therefore, the question is equivalent to *what is the expected value of $\\lambda$ at time $t$*?\n", "\n", "In the code below, let $i$ index samples from the posterior distributions. Given a day $t$, we average over all possible $\\lambda_i$ for that day $t$, using $\\lambda_i = \\lambda_{1,i}$ if $t \\lt \\tau_i$ (that is, if the behaviour change has not yet occurred), else we use $\\lambda_i = \\lambda_{2,i}$. " ] }, { "cell_type": "code", "execution_count": 147, "metadata": {}, "outputs": [ { "data": { "image/png": "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a69l//79rF27lpNPPpnNmzeTmZlJly5dmD17NmvWrOGUU05hyJAhJCcnc+GFF5Keng7AwoULOeOMM2jbti19+vRh48aNAKxatYozzzyTVq1a0aZNG1avXs3o0aP54IMPSElJ4dFHH2X//v3cdNNNtG/fnuTkZJ5++mkgGFB3ww030KxZM/r168ePP/6Y5zF069aNUaNG0aFDBxo3bswHH3wAHNgS3r9/f959910gaM0cNWoUbdu25cwzz+TTTz+lW7dunHjiicyaNSt7m++//56+ffvSpEkT7rrrrgLrLavc22+/nY4dO/LRRx/liHPx4sWceuqpJCcnc8EFF7Bt2zbefPNNxo4dy3PPPUf37t1zrD969Gh2795NSkoKgwcPLvL5Gj16NKtXryYlJYWbbrrpgHobOnQoI0aMoHv37px44om89957XHXVVTRt2pShQ4dmrzd79mw6depEmzZtGDhwILt27cqOr1mzZiQnJ/OHP/wBgGnTptGiRQtatWpF165dgeBLWZcuXWjTpg1t2rThww8/BCAzM5PrrruO5s2b079/f84+++zsX0ryu57GjRuXvc/rrrrigGN69aXJXDt0MOeccw69e/cG4KGHHsq+tu64447sdV944QWSk5Np1aoVl19+OQCbNm1iwIABtG/fnvbt2zN//vwc11JqaioNGzYkMzMTgPT0dI477jgyMjJYvXo1ffv2pW3btnTp0oUvv/wSgG+//ZZOnTrRvn17brvttgNiFhERKbPcPeFfbdu29dyWL1/u7u7fnd02pq/8LF++3Pv37+979+51d/cRI0b4pEmT3N392Wef9QEDBviDDz7ow4cPd3f3b7/91gGfN2+eu7tfeeWV/tBDD/nevXu9U6dO/uOPP7q7+9SpU/3KK690d/cOHTr43//+d3d33717t6elpfncuXO9X79+2XE8/fTTfs8997i7+549e7xt27b+zTff+IwZM/zMM8/0ffv2+fr1671WrVo+bdq0A47jjDPO8N/97nfu7v7GG294z5493d19woQJfv3112ev169fP587d667uwP+5ptvurv7+eef77169fK9e/f64sWLvVWrVtnbH3PMMb5582ZPT0/35s2b+4IFCwqsN8BfeeWVPOu7ZcuW/u6777q7+2233eYjR450d/c77rjDH3rooTy3qVat2iGdr+bNm+dZrrv7kCFD/OKLL/bMzEyfOXOm16hRw5csWeL79+/3Nm3a+KJFi3zTpk3epUsX37Vrl7u733///X7XXXf5li1bvHHjxp6Zmenu7tu2bXN39xYtWvi6detyzEtLS/Pdu3e7u/vKlSs967Mwbdo0P+uss3z//v2+ceNGr127tk+bNq3A66levXq+Z88ed3dftmaDr9uWnuP1yF+f9mPq1/ctW7a4u/t//vMfv+aaazwzM9P379/v/fr18/fee8+XLl3qjRs39k2bNrm7Z68/aNAg/+CDD9zdfe3atX7KKae4e85r6dxzz/V33nknO7arr77a3d179OjhK1eudHf3jz/+2Lt37+7u7uecc072eRo/fnyOcxop6++BSKzd8o+lBb5ERIoC+MzzyX9L7S0Y423OnDksXLiQ9u3bA7B7926OOuooAIYNG8a0adN46qmnWLx4cfY2xx13HJ07dwbgsssuY9y4cfTt25elS5fSq1cvIOjmUa9ePXbu3Mn69eu54IILgOBe0HmZPXs2S5YsyW5FTU1N5euvv+b9999n0KBBJCUlUb9+fXr06JHvsfzqV78CoG3btqxZs6bQYz/ssMPo27cvAC1btuTwww+nUqVKtGzZMsf2vXr1ok6dOtn7mDdvHhUrVsy33pKSkhgwYMAB+0tNTWX79u2cccYZAAwZMoSBA4v2oNqDOV+FOeecczAzWrZsydFHH03Lli0BaN68OWvWrGHdunUsX748+5zv3buXTp06UbNmTSpXrsywYcPo168f/fv3B6Bz584MHTqUiy66KPucZGRkcMMNN7B48WKSkpJYuXIlAPPmzWPgwIFUqFCBY445JvuXhK+++irP6wkgOTmZwYMHc/7559OhW588j6lrtx4cccQRQHBtzZ49m9atWwOwa9cuvv76a7744gsuvPBCjjzySIDs9d9++22WL1+eXdaOHTvYuXNnjvIvvvhiXnnlFbp3787UqVO57rrr2LVrFx9++GGOc/rTTz8BMH/+fGbMmAHA5ZdfzqhRo6I+PyIiIqWZkvSD5O4MGTKEP//5zwcsS09PZ926dUCQ2NSoUQM48C4UZoa707x58wO6d+zYsSPqOB5//HH69MmZdL355ptR3/Xi8MMPB4IkOasvcsWKFbO7JQA5bnFXqVKl7LIrVKiQvX2FChVy9GXO73gj6y3rft3rt+/m8MqV+d/OvdnrF+f9ug/mfEW65ZZbeOONNwCyE/nI4856nzW9b98+kpKS6NWrFy+//PIB5X366afMmTOHqVOnMn78eN555x2eeuopPvnkE9544w1SUlJYvHgxjz/+OEcffTRffPEFmZmZ2V/Wgi/feR9nXtcTwBtvvMH777/PrFmzuOOuu3nno4VUrJjzT0CVqtVylHXzzTdz7bXX5lhn3LhxeV5bmZmZfPTRR1Spkv95O/fcc7n55pvZunUrCxcupEePHqSlpVG7du18vyDp7i0iIlIeqU/6QerZsyfTp0/P7uu9detW1q5dC8CoUaMYPHgwd999N9dcc032Nt9991128vTyyy9z+umn06RJEzZt2pQ9PyMjg2XLllGzZk0aNGjAzJkzgaBlMT09nRo1auRonezTpw9PPvkkGRkZAKxcuZK0tDS6du3K1KlT2b9/Pxs3bmTu3LlFOr6GDRuyePFiMjMz+f777/n000+LXEdvvfUWW7duZffu3cycOZPOnTsfUG/btm1l3XffFVhOrVq1+MUvfpHdX37y5MnZreoFqVSpUna9FPV85a7ne++9l8WLFxeppf3UU09l/vz5rFq1Cgi+DKxcuZJdu3aRmprK2WefzdixY7PLXL16NR07duTuu+/myCOP5Pvvvyc1NZV69epRoUIFJk+enN1///TTT2fGjBlkZmbyww8/ZI8XyO96yjqP3bt358EHH2RHaippabsKjL9Pnz787W9/y+5Hv379en788Ud69uzJq6++ypYtW7LrEqB3796MHz8+e/u86qp69ep06NCBkSNH0r9/f5KSkqhZsyaNGjVi2rRpQPDl4IsvvgCCXxemTp0KwJQpU6KuexERkdKu1LekH/fGZ3HZb7NmzRgzZgy9e/cmMzOTSpUq8de//pU1a9awYMEC5s+fT1JSEjNmzGDChAl0796dpk2bMmnSJK699lpOPvlkRowYwWGHHcb06dP57W9/S2pqKvv27ePGG2+kefPmTJ48mWuvvZbbb7+dSpUqMW3aNJKTk6lYsSKtWrVi6NChjBw5kjVr1tCmTRvcnbp16zJz5kwuuOAC3nnnHVq2bEnjxo2jSmojde7cmUaNGtGyZUtatGhBmzZtilxHp59+OpdffjmrVq3i0ksvpV27dgA56o0KSYx5aCwNjj++wLImTZrEr3/9a9LT0znxxBOZMGFCofsfPnw4ycnJtGnThilTphTpfF155ZV07tyZFi1acNZZZ/HQQw8V+fjr1q3LxIkTGTRoUHb3jTFjxlCjRg3OO+889uzZg7vz6KOPAnDTTTfx9ddf4+707NmTVq1acd111zFgwACmTZtG9+7dqVYtaOkeMGAAc+bMoUWLFjRu3JiOHTtSq1atfK+nxo0bc9lll5Gamoq7M2zEDdSqVbvA+Hv37s2KFSvo1KkTECTYL774Is2bN+eWW27hjDPOICkpidatWzNx4kTGjRvH9ddfT3JyMvv27aNr16489dRTB5R78cUXM3DgwOwvFhAk4CNGjGDMmDFkZGRwySWX0KpVKx577DEuvfRSHnvssTy7QomIiJRVlt/P5omkXbt2/tlnOZPxFStW0LRp0zhFVHRr1qyhf//+LF26NN6hJJSy8nj6eNi1axfVq1dny5YtdOjQgfnz53PMMcdEtW1Zq/fS9vdASq9b/7mswOVj+jcvoUhEpCwws4Xu3i6vZaW+JV2kvOrfvz/bt29n79693HbbbVEn6CIiIpL4lKSXkIYNG6oVXYpVZHcRERERKVs0cFREREREJMEoSRcRERERSTBK0kVEREREEoySdBERERGRBKMkvZitWbOGFi1axDuMA3Tr1o3ct7EEGDt2LOnp6Qdd7n333XcoYRWrO++8k4cffjjeYYiIiIgcsjJzd5fC7l1bVIl0r9t9+/Yd8Pj24jJ27Fguu+wyqlatelDb33ffffzpT38q5qjyFst6EBEREUkkakk/BI888ggtWrSgRYsWjB07Nnv+vn37GDJkCMnJyVx44YXZLdWjR4+mWbNmJCcn84c//AGATZs2MWDAANq3b0/79u2ZP38+ELQKDx8+nN69e3PFFVfQsWNHli37+YtIt27dWLhwIWlpaVx11VW0b9+e1q1b8/rrrwOwe/duLrnkEpKTk7n44ovZvfvAh9eMGzeODRs20L17d7p37w7A7Nmz6dSpE23atGHgwIHZj7Bv0qQJX331FQCDBg3i2WefZfTo0ezevZuUlBQGDx5MWloa/fr1o1WrVrRo0YJXXnnlgH1269aNG2+8kdNOO40WLVqwaOECANLT0vj9DdfSr8fp9Ol6Kv958x8ATJw4kYEDB3LOOefQu3fvA8q79957adKkCWeeeWZ2fADPPvss7du3p1WrVgwYMID09HR27txJo0aNyMjIAGDHjh00bNgwe1pEREQkUShJP0gLFy5kwoQJfPLJJ3z88cc8++yzLFq0CICvvvqK4cOHs2TJEmrWrMkTTzzB1q1bee2111i2bBlLlizh1ltvBWDkyJH83//9HwsWLGDGjBkMGzYsxz5ef/11XnrpJS655BJeffVVADZu3MiGDRto27Yt9957Lz169GDBggXMnTuXm266ibS0NJ588kmqVq3KkiVLuOWWW1i4cOEBx/Db3/6W+vXrM3fuXObOncvmzZsZM2YMb7/9Np9//jnt2rXjkUceoVatWowfP56hQ4cydepUtm3bxjXXXMP9999PlSpVWLx4MVOmTOHf//439evX54svvmDp0qX07ds3z7pLS0vjww8/5IknnuAPN4wAYNxfHuC0Lt144515vPqPfzPm9ltIS0sD4KOPPmLSpEm88847B5yDqVOnsmjRIv7+97+zYMGC7GW/+tWvWLBgAV988QVNmzbl+eefp0aNGnTr1o033ngDgKlTpzJgwAAqVap0UNeAiIiISKwoST9I8+bN44ILLqBatWpUr16dX/3qV3zwwQcAHHfccXTu3BmAyy67jHnz5lGzZk0qV67MsGHD+Pvf/57dveTtt9/mhhtuICUlhXPPPZcdO3awc+dOAM4991yqVAke0X7RRRcxbdo0AF599VUGDhwIBC3f999/PykpKXTr1o09e/bw3Xff8f7773PZZZcBkJycTHJycqHH9PHHH7N8+XI6d+5MSkoKkyZNYu3atQD06tWLli1bcv311/Pcc8/luX3Lli15++23GTVqFB988AG1atXKc71BgwYB0LVrV3bu3EFq6nbenzuHJ8b+hd5dOjKwfx9+Co8ja99HHHHEAeV88MEHXHDBBVStWpWaNWty7rnnZi9bunQpXbp0oWXLlkyZMiX7V4hhw4YxYcIEACZMmMCVV15ZaL2IiIiIlDR18D1I7p7vMjM7YLpixYp8+umnzJkzh6lTpzJ+/HjeeecdMjMz+eijj7KT8UjVqlXLfn/sscdSp04dlixZwiuvvMLTTz+dHceMGTNo0qRJoXFEc0y9evXi5ZdfPmBZZmYmK1asoEqVKmzdupUGDRocsE7jxo1ZuHAhb775JjfffDO9e/fm9ttvLzQuw3B3nnnhJU46ufHPx1y7Cp988kmOeiisrCxDhw5l5syZtGrViokTJ2Y/nbNz586sWbOG9957j/379yfkIF8RERERtaQfpK5duzJz5kzS09NJS0vjtddeo0uXLgB89913fPTRRwC8/PLLnH766dl9u88++2zGjh3L4sWLAejduzfjx4/PLjdrfl4uueQSHnzwQVJTU2nZsiUAffr04fHHH8/+0pDV5aZr165MmTIFCFqVlyxZkmeZNWrUyG65P/XUU5k/fz6rVq0CID09nZUrVwLw6KOP0rRpU15++WWuuuqq7H7clSpVyn6/YcMGqlatymWXXcYf/vAHPv/88zz3mdVXfd68edSoWYuatWpxRo8z+dszT2Yfx9Il+ddDlq5du/Laa5oJjKEAACAASURBVK+xe/dudu7cyT/+8Y/sZTt37qRevXpkZGRk10OWK664gkGDBqkVXURERBKWkvSD1KZNG4YOHUqHDh3o2LEjw4YNo3Xr1gA0bdqUSZMmkZyczNatWxkxYgQ7d+6kf//+JCcnc8YZZ/Doo48CweDNzz77jOTkZJo1a8ZTTz2V7z4vvPBCpk6dykUXXZQ977bbbiMjI4Pk5GRatGjBbbfdBsCIESPYtWsXycnJPPjgg3To0CHPMocPH85ZZ51F9+7dqVu3LhMnTmTQoEEkJydz6qmn8uWXX7Jy5Uqee+45/vKXv9ClSxe6du3KmDFjsrdPTk5m8ODB/Pe//6VDhw6kpKRw7733Zve7z+0Xv/gFp512Gr/+9a95+PEnABh5083sy8jgzM4d6NmpHQ/de3dU5+Diiy8mJSWFAQMGZH9JArjnnnvo2LEjvXr14pRTTsmx3eDBg9m2bVt2txsRERGRRGMFddtIFO3atfPc9/hesWIFTZs2jVNEcrC6devGww8/TLt27QBYv/3Au85kObb2gV2AisP06dN5/fXXmTx5ckzKLw3iUe+xpL8HUlIKu91vcd++t6T3JyIly8wWunu7vJapT7qUK7/5zW/417/+xZtvvhnvUERERETypSRdSlTWAM54efzxx+O6fxEREZFoqE+6iIiIiEiCKdVJemnoTy8isaW/AyIiUhaV2iS9cuXKbNmyRf9Bi5Rj7s6WLVuoXLlyvEMREREpVqW2T3qDBg1Yt24dmzZtincocgi2787Id9mOKpVKMJLypSzVe+XKlfN8uJaIiEhpVmqT9EqVKtGoUaN4hyGHqKDbi43pr1vqxYrqXUREJLGV2u4uIiIiIiJlVUxb0s1sDbAT2A/sc/d2ZnYE8ArQEFgDXOTu22IZh4iIiIhIaVISLend3T0l4mlKo4E57n4yMCecFhERERGRUDy6u5wHTArfTwLOj0MMIiIiIiIJK9ZJugOzzWyhmQ0P5x3t7hsBwn+PinEMIiIiIiKlSqzv7tLZ3TeY2VHAW2b2ZbQbhkn9cIDjjz8+VvGJiIiIiCScmLaku/uG8N8fgdeADsAPZlYPIPz3x3y2fcbd27l7u7p168YyTBERERGRhBKzJN3MqplZjaz3QG9gKTALGBKuNgR4PVYxiIiIiIiURrHs7nI08JqZZe3nJXf/t5ktAF41s6uB74CBMYxBRERERKTUiVmS7u7fAK3ymL8F6Bmr/YqIiIiIlHaxHjgqIiJS7tz6z2X5LhvTv3kJRiIipVU87pMuIiIiIiIFUJIuIiIiIpJglKSLiIiIiCQYJekiIiIiIglGSbqIiIiISIJRki4iIiIikmCUpIuIiIiIJBgl6SIiIiIiCUZJuoiIiIhIglGSLiIiIiKSYJSki4iIiIgkGCXpIiIiIiIJRkm6iIiIiEiCUZIuIiIiIpJglKSLiIiIiCQYJekiIiIiIglGSbqIiIiISIJRki4iIiIikmCUpIuIiIiIJJhCk3Qze9DMappZJTObY2abzeyykghORERERKQ8iqYlvbe77wD6A+uAxsBNMY1KRERERKQciyZJrxT+ezbwsrtvjWE8IiIiIiLlXsUo1vmHmX0J7AauM7O6wJ7YhiUiIiIiUn4V2pLu7qOBTkA7d88A0oHzYh2YiIiIiEh5Fc3A0arA9cCT4az6QLtYBiUiIiIiUp5F0yd9ArAXOC2cXgeMiVlEIiIiIiLlXDRJ+knu/iCQAeDuuwGLaVQiIiIiIuVYNEn6XjOrAjiAmZ0E/BTTqEREREREyrFo7u5yB/Bv4DgzmwJ0BobGMigRERERkfKs0CTd3d8ys8+BUwm6uYx0980xj0xEREREpJwqNEk3szbh243hv8ebWS1grbvvi1lkIiIiIiLlVDTdXZ4A2gBLCFrSW4Tv65jZr919dgzjExEREREpd6IZOLoGaO3u7dy9LdAaWAqcCTwYw9hERERERMqlaJL0U9x9WdaEuy8nSNq/iV1YIiIiIiLlVzTdXb4ysyeBqeH0xcBKMzuc8N7pIiIiIiJSfKJpSR8KrAJuBP4P+CaclwF0j1VgIiIiIiLlVTS3YNwN/CV85barsO3NLAn4DFjv7v3NrBFBq/wRwOfA5e6+t0hRi4iIiIiUYYW2pJvZyWY23cyWm9k3Wa8i7GMksCJi+gHgUXc/GdgGXF20kEVEREREyrZourtMAJ4E9hF0b3kBmBxN4WbWAOgHPBdOG9ADmB6uMgk4v2ghi4iIiIiUbdEk6VXcfQ5g7r7W3e8kSLSjMRb4I5AZTtcBtkc8BGkdcGwR4hURERERKfOiSdL3mFkF4Gszu8HMLgCOKmwjM+sP/OjuCyNn57Gq57P9cDP7zMw+27RpUxRhioiIiIiUDdEk6TcCVYHfAm2By4EhUWzXGTjXzNYQDBTtQdCyXtvMsgasNgA25LWxuz8TPkCpXd26daPYnYiIiIhI2VBoku7uC9x9l7uvIxjkOdTdP45iu5vdvYG7NwQuAd5x98HAXODCcLUhwOsHHb2IiIiISBkUzd1dXjKzmmZWDVhO8HCjmw5hn6OA35nZKoI+6s8fQlkiIiIiImVONE8cbebuO8xsMPAmQZK9EHgo2p24+7vAu+H7b4AORY5URERERMq0W/+5rMDlY/o3L6FI4i+aPumVzKwSwa0SX3f3DPIZ7CkiIiIiIocumiT9aWANUA1438xOAHbEMigRERERkfKs0O4u7j4OGBcxa62ZdY9dSCIiIiIi5Vs0A0dHhgNHzcyeN7PPif5hRiIiIiIiUkTRdHe5yt13AL2BusCVwP0xjUpEREREpByLJknPekro2cAEd/+CvJ8cKiIiIiIixSCaJH2hmc0mSNL/Y2Y1gMzYhiUiIiIiUn5Fc5/0q4EU4Bt3TzezOgRdXkREREREJAaiSdIdaAb0B+4muBVj5VgGJSIiIiKSl/LywKNours8AXQCBoXTO4G/xiwiEREREZFyLpqW9I7u3sbMFgG4+zYzOyzGcYmIiIiIlFvRtKRnmFkSQbcXzKwuGjgqIiIiIhIz0STp44DXgKPM7F5gHnBfTKMSERERESnHCu3u4u5TzGwh0JPg/ujnu/uKmEcmIiIiIlJORdMnHeAH4INw/Spm1sbdP49dWCIiIiIi5VehSbqZ3QMMBVYT9ksP/+0Ru7BERERERMqvaFrSLwJOcve9sQ5GRERERESiS9KXArWBH2McS5lQXm6wLyIiUhrp/2kpLaJJ0v8MLDKzpcBPWTPd/dyYRSUiIiIiUo5Fk6RPAh4A/ovujy4iIiIiEnPRJOmb3X1czCMREREREREguiR9oZn9GZhFzu4uugWjiIiIiEgMRJOktw7/PTVinm7BKCIiIiISI9E8cbR7SQQiIiIiIiKBCkVZ2cz+GatAREREREQkUKQkHTg2JlGIiIiIiEi2oibpi2IShYiIiIiIZCs0STezkVnv3f2q3PNERERERKR4RdOSPiSPeUOLOQ4REREREQnle3cXMxsEXAo0MrNZEYtqAFtiHZiIiIiISHlV0C0YPwQ2AkcCf4mYvxNYEsugRERERETKs3yTdHdfC6w1s6vdfXnkMjPrBrwb29BEJJ5u/eeyApeP6d+8hCIREREpf6Lpk/6qmf3RAlXM7HHgz7EOTERERESkvIomSe8IHE/Q/WUBsAHoHMugRERERETKs2iS9AxgN1AFqAx86+6ZMY1KRERERKQcK2jgaJYFwOtAe6AO8LSZXejuF8Y0MhERESlxBY1H0ViU0kHnsGyIJkm/2t0/C9//DzjPzC4vbCMzqwy8Dxwe7me6u99hZo2AqcARwOfA5e6+96CiFxEREREpgwrt7uLun5nZ6WZ2JYCZHQnMi6Lsn4Ae7t4KSAH6mtmpwAPAo+5+MrANuPqgoxcRERERKYMKTdLN7A5gFHBzOOsw4MXCtvPArnCyUvhyoAcwPZw/CTi/iDGLiIiIiJRp0QwcvQA4F0gDcPcNBE8dLZSZJZnZYuBH4C1gNbDd3feFq6wDji1q0CIiIiIiZVk0fdL3urubmQOYWbVoC3f3/UCKmdUGXgOa5rVaXtua2XBgOMDxxx8f7S5FREREpBB6YF3ii/ZhRk8Dtc3sGuBt4Lmi7MTdtxM8ofTUsJysLwcNCO67ntc2z7h7O3dvV7du3aLsTkRERESkVItm4OjDBH3IZwBNgNvdfVxh25lZ3bAFHTOrApwJrADmAlm3bxxCcHtHEREREREJFdrdxcwecPdRBH3Kc88rSD1gkpklEXwZeNXd/2lmy4GpZjYGWAQ8f/Dhi4iIiIiUPdH0Se9FcHeXSGflMS8Hd18CtM5j/jdAh2gDFClOesCDiIiIlAb5JulmNgK4DjjRzJZELKoBzI91YCIiIiIi5VVBLekvAf8C/gyMjpi/0923xjQqEREREZFyLN8k3d1TgVRgUMmFIyIiIiIi0dyCUURERERESpCSdBERERGRBFNokm5mR5ZEICIiIiIiEsg3STezrGWzI+aNjHlEIiIiIiLlXEEt6e+Z2b+BY8ysr5nVJ3hCqIiIiIiIxFBBd3fpYma1gYUEDx8aBjQ2s6nAe+7+ZAnFKCISE3q4lYjIoSvobyno7+nBKuhhRrOBj4BM4HF332Zmi4A/Al1LKD4RERERkXKnoO4u5wPvA9WBF8zsU+AEYADwZQnEJiIiIiJSLuWbpLt7urvPAf7n7ue4ewdgPfA9cEVJBSgiIiIiUt7k290lwoCI9/PcfTowPUbxiIiIiIiUe4XeJ93dv4l4PyK24YiIiIiIiJ44KiIiIiKSYJSki4iIiIgkGCXpIiIiIiIJpqD7pP+uoA3d/ZHiD0dERERERAq6u0uN8N8mQHtgVjh9DsH900VEREREJAbyTdLd/S7IfvJoG3ffGU7fCUwrkehERERERMqhaPqkHw/sjZjeCzSMSTQiIiIiIhLVw4wmA5+a2WuAAxcAL8Q0KhERERGRcqzQJN3d7zWzfwFdwllXuvui2IZVuFv/uazA5WP6N49LWSIiIiIihyraWzBWBXa4+2PAOjNrFMOYRERERETKtUKTdDO7AxgF3BzOqgS8GMugRERERETKs2j6pF8AtAY+B3D3DWZWo+BNREREyjh3KmTuyzkrI7jPQoX9GflvlrE332W5FVROUcsqjn3GYn8lLR51WtKiOYfFWQ8lXVZpO4dW6bCD2i6aJH2vu7uZOYCZVTuoPYmIiJQRjVYvoMv7k6iyZ2eO+eueCf69poBts9aJRkHlFLWs4thnLPZX0uJRpyUtmnNYnPVQ0mWVpnNY4YgjOXbyvw9q22iS9FfN7GmgtpldA1wFPHdQexMRKQEaDC6xVG/Dl/R8+0mSMvfHOxQRKcOiubvLw2bWC9hB8PTR2939rZhHJiIikmBq7NhEr/88rgRdRGKu0CTdzB5w91HAW3nMExERKRcy09Po86+xVNmzK8f8/RV+/q80qYIF8zI933Ky1olGQeUUtazi2Gcs9lfSirNO43F+ohHNOUzUeoimrESt97xYxUoHvW003V16EdzdJdJZecwTEREpkzwzk62P3EGdretyzF/Q/gI+b3d+9nRWV6qCulwl+nM8iiv2RFUenrMSzTlM1HqIpqxErffilm+SbmYjgOuAk8xsScSiGsCHsQ5MSl60F31Z/wMeD6pTkcS2Y8rT7P7o3RzzVp/Uns/bnhefgHLR3xCR+CvuLw8FtaS/BPwL+DMwOmL+TnffWqS9iIiIlFLp789mx9Tnc8zbfOTxvNv9GrDE+VldRMqWfB9m5O6p7r4GeAzY6u5r3X0tkGFmHUsqQBERkXjZu+pLto69K8e89Co1+U/fG9lX6fA4RSUi5UGhTxwFngQiR8mkhfNERETKrP1bN7P5nt/jP/3087wKSczu8xt21agTx8hEpDyIJkk3d88eRuvumUQ34FRERKRU8oy9bL73JvZv/iHH/A+6DuWHeo3jFJWIlCfRJNvfmNlv+bn1/Drgm8I2MrPjgBeAY4BM4Bl3f8zMjgBeARoCa4CL3H1b0UMXEREpfu7O1sfvY++X/80xv/p5g/iqftc4RXXoyssdMUTKimha0n8NnAasB9YBHYHhUWy3D/i9uzcFTgWuN7NmBINQ57j7ycAccg5KFRERiatdM6eQPuefOeZVbtOJ2lePjFNEIlIeRfPE0R+BS4pasLtvBDaG73ea2QrgWOA8oFu42iTgXXTPdRERSQA7Z01l+/OP5ZhX8djjqTPqPixJPT1FpOQU2pJuZo3NbI6ZLQ2nk83s1qLsxMwaAq2BT4CjwwQ+K5E/qqhBi4iIFCffv59tz/yF7U8/DD8Pw8KqVefI2x+hQvUacYxORMqjaJoFngVuAp4GcPclZvYSMCaaHZhZdWAGcKO777Ao7ylrZsMJu9Ucf/zxUW0jIlLc1I+37Mv8aQ9bH76N3R/OzbmgQhJ1/ngflRo0jEtc8jN9DqU8iqZPelV3/zTXvH3RFG5mlQgS9Cnu/vdw9g9mVi9cXg/4Ma9t3f0Zd2/n7u3q1q0bze5ERESKZH/qNjb9acQBCbpVqcqRdzxKlXanxSkyESnvoknSN5vZSYADmNmFhH3NC2JBk/nzwAp3fyRi0SxgSPh+CPB6kSIWEREpBhnrv+PH3195wF1cKhxxJEc98KwSdBGJq2i6u1wPPAOcYmbrgW+BwVFs1xm4HPivmS0O5/0JuB941cyuBr4DBhY5ahERkUPw0/Iv2HzP78jckZpjfqUTTuLIOx+j4lHHxCkyEZFANHd3+QY408yqARXcfWc0Bbv7PCC/Dug9ow9RRESk+KTPe5stD98OGXtzzD+8VQeOvOVBKlSrHqfIRER+VmiSbmZ1gDuA0wE3s3nA3e6+JdbBiUQrHoOKCtqnBjHFjgaQycHKTE9j15vTSZ04PscdXACq9uzPYyddQObctXluq+sqJ30ORWIvmu4uU4H3gQHh9GCCJ4aeGaugREREDoXv20fGmlXsXbmUvSuX8dPKZez77tsDknOAmpdeQ81Lh5P5xvI4RCoikrdokvQj3P2eiOkxZnZ+rAISERGJRuaePWTu3E7mju1k7khl/7bN7F31JXu/WkbGN1/he38quICkJI74za1U63VOyQQsIlIE0STpc83sEuDVcPpC4I3YhXSgfT9sYMsjd+SY1+377QVus2Vl7ajLT9SySlq0sRe0XlGPr7jKKs2xF3dZxbW/RL2Wo4mrOK+HRK2HMiOPlu285nlGBpk7U8nckRok5TtTC0/CC2BVqnHkLQ9SuXXHgy5DRCSWoknSrwV+B0wOp5OANDP7HeDuXjNWwWXJ3JFK+pyc3wuaFLJN+sroy0/UskpatLEXtF5Rj6+4yirNsRd3WcW1v0S9lqOJqzivh0StBzkIZlRs0JDDm6dQY8AVVKp/XLwjEtS/XSQ/0dzdRc9CFhGRUiepTl0Oa9yCwxo357AmzTnsl0115xYRKTWiubvL1e7+fMR0EnCru98V08hEREQKUrESFWrWIqlmbSrUqEWFmrWoWO84DmsSJOYVjzwq3hGKiBy0aLq79DSzAcDVwJHA34D3YhpVLhWPrs8R/3dnjnkzFq8vcJsBKcdGXX6illXSoo29oPWKenzFVVZpjr04yyrOekjUazmauMpDPZQpeT1Rw3LNrJBEhRphQl6zFhVq1MKqVMVyryciUkZE093lUjO7GPgvkA4Mcvf5MY8sQoWatah2Zv8c81buKbgPW7Uzo+/DlqhllbRoYy9ovaIeX3GVVZpjL86yirMeEvVajiau8lAPIiJStkXT3eVkYCQwA2gKXG5mi9w9PdbBiYiUJRogJ1J6FOcD6/TwOzkYFaJY5x/Abe5+LXAG8DWwIKZRiYiIiIiUY9H0Se/g7jsguN8i8BczmxXbsEREREREyq98W9LN7I8A7r7DzAbmWnxlTKMSERERESnHCmpJvwR4MHx/MzAtYllf4E+xCkpERBKL+tOLiJSsgvqkWz7v85oWEREREZFiUlCS7vm8z2taRERERESKSUHdXVqZ2Q6CVvMq4XvC6coxj0xEREREpJzKN0l396SSDERERERERALR3IJREpgGc4lIIinph7ZEsz/9nRSR0iiahxmJiIiIiEgJUpIuIiIiIpJglKSLiIiIiCQY9UmPk5Lutyki5Y/6YouIFCyR/06qJV1EREREJMEoSRcRERERSTBK0kVEREREEoySdBERERGRBFMqBo6uT92do2O/BjuJlE0aUB1QPYhIotDfo0A86kEt6SIiIiIiCUZJuoiIiIhIglGSLiIiIiKSYEpFn3SR0qo4H5KQyA9cEBFJBOo/LWWJWtJFRERERBKMknQRERERkQSjJF1EREREJMEoSRcRERERSTAaOJrASmrQYSwG02jApIiIaCCnyMGLWUu6mf3NzH40s6UR844ws7fM7Ovw31/Eav8iIiIiIqVVLLu7TAT65po3Gpjj7icDc8JpERERERGJELMk3d3fB7bmmn0eMCl8Pwk4P1b7FxEREREprUp64OjR7r4RIPz3qBLev4iIiIhIwkvYgaNmNhwYDlCzbr04RyMiklg0IE9EpGwr6Zb0H8ysHkD474/5rejuz7h7O3dvV7WWxpeKiIiISPlR0kn6LGBI+H4I8HoJ719EREREJOHF8haMLwMfAU3MbJ2ZXQ3cD/Qys6+BXuG0iIiIiIhEiFmfdHcflM+inrHap4iUPPWNFhERKX4l3d1FREREREQKoSRdRERERCTBKEkXEREREUkwStJFRERERBJMwj7MqLhoUJuIiIiIlDZqSRcRERERSTBK0kVEREREEoySdBERERGRBFPm+6QXJ/VvFzk4BX12QJ+f8kbXQ0D1ICIFUUu6iIiIiEiCUZIuIiIiIpJglKSLiIiIiCQYJekiIiIiIglGA0dFctFgLjkYpXlgeWmOXUSkrFJLuoiIiIhIglGSLiIiIiKSYJSki4iIiIgkGPVJFxEREZEyp7SPt1FLuoiIiIhIglGSLiIiIiKSYJSki4iIiIgkGCXpIiIiIiIJRgNHRUREROJMD9KT3NSSLiIiIiKSYJSki4iIiIgkGCXpIiIiIiIJRkm6iIiIiEiCUZIuIiIiIpJglKSLiIiIiCQYJekiIiIiIglGSbqIiIiISILRw4xERCQhFfRwFz3YRcojPfCofFFLuoiIiIhIglGSLiIiIiKSYJSki4iIiIgkGCXpIiIiIiIJJi5Jupn1NbOvzGyVmY2ORwwiIiIiIomqxJN0M0sC/gqcBTQDBplZs5KOQ0REREQkUcWjJb0DsMrdv3H3vcBU4Lw4xCEiIiIikpDikaQfC3wfMb0unCciIiIiIoC5e8nu0Gwg0Mfdh4XTlwMd3P03udYbDgwPJ1sAS0s0UAE4Etgc7yDKIdV7/Kju40P1Hh+q9/hQvcdPItb9Ce5eN68F8Xji6DrguIjpBsCG3Cu5+zPAMwBm9pm7tyuZ8CSL6j0+VO/xo7qPD9V7fKje40P1Hj+lre7j0d1lAXCymTUys8OAS4BZcYhDRERERCQhlXhLurvvM7MbgP8AScDf3H1ZScchIiIiIpKo4tHdBXd/E3izCJs8E6tYpECq9/hQvceP6j4+VO/xoXqPD9V7/JSqui/xgaMiIiIiIlKwuDxxVERERERE8pfQSbqZ9TWzr8xslZmNjnc8ZZmZ/c3MfjSzpRHzjjCzt8zs6/DfX8QzxrLIzI4zs7lmtsLMlpnZyHC+6j6GzKyymX1qZl+E9X5XOL+RmX0S1vsr4eB2KWZmlmRmi8zsn+G06r0EmNkaM/uvmS02s8/CefpbE2NmVtvMppvZl+Hf+k6q99gysybhdZ712mFmN5a2ek/YJN3MkoC/AmcBzYBBZtYsvlGVaROBvrnmjQbmuPvJwJxwWorXPuD37t4UOBW4PrzOVfex9RPQw91bASlAXzM7FXgAeDSs923A1XGMsSwbCayImFa9l5zu/v/t3V+oZWUZx/Hvj5kR/FNKphFOMQxM2U2OU3iRYaISVDIjkWAYDHXRTV0URFA3QeCtGNmfC61k0Alz0ryKgqy8snAaqLQgpfKgzglKU8tkZn5drDXMYRgUyr33Ont/P7DZ633P2vCch83Lw9rPu1a7e8Nt6FxrZu9rwI/bXgpcxvDdN+8z1PaP4/d8N/Ae4F/A/WyyvE+2SAeuAP7U9sm2rwDfB/YtOKal1faXwN9Pm94H3DUe3wXcMNegVkDbZ9oeHo9fYFi8L8Hcz1QHL47DbeOrwDXAfeO8eZ+BJNuBjwB3jONg3hfJtWaGkrwRuAq4E6DtK22fw7zP07XAE23/wibL+5SL9EuApzaM18Y5zc9b2j4DQzEJXLzgeJZakh3A5cAjmPuZG1sujgDrwE+BJ4Dn2h4bT3HNmY3bgC8CJ8bxhZj3eSnwkySPjk/1BteaWdsJ/A347tjidUeSczHv83QTcHA83lR5n3KRnjPMeSsaLaUk5wGHgM+1/eei41kFbY+PP4VuZ/jl7l1nOm2+US23JNcD620f3Th9hlPN+2xc2XYPQxvpZ5JcteiAVsBWYA/wrbaXAy8x8RaLZTLub9kL/GDRsfwvplykrwFv2zDeDjy9oFhW1dEkbwUY39cXHM9SSrKNoUC/u+0Px2lzPyfjT88/Z9gTcEGSk8+PcM15/V0J7E3yZ4YWxmsYrqyb9zlo+/T4vs7Qn3sFrjWztgastX1kHN/HULSb9/n4EHC47dFxvKnyPuUi/dfArnHX/1kMP1c8uOCYVs2DwP7xeD/wowXGspTGftw7gcfb3rrhT+Z+hpJclOSC8fhs4DqG/QAPAR8bTzPvr7O2X2q7ve0OhjX9Z21vxrzPXJJzk7zh5DHwQeB3uNbMVNtngaeSvHOcuhZ4DPM+Lx/nVKsLbLK8T/phRkk+zHCVZQvwnba3LDikpZXkIHA18GbgKPAV4AHgXuDtwF+BG9uevrlU/4ck7wceBn7LqR7dvzQ4CwAAAhVJREFULzP0pZv7GUnyboZNQ1sYLlbc2/arSXYyXOF9E/Ab4BNt/7O4SJdXkquBL7S93rzP3pjj+8fhVuCetrckuRDXmplKsptho/RZwJPAJxnXHcz7zCQ5h2Fv4862z49zm+r7PukiXZIkSVpFU253kSRJklaSRbokSZI0MRbpkiRJ0sRYpEuSJEkTY5EuSZIkTczW1z5FkrQskhxnuOXnNuAYw60ob2t74lU/KEmaK4t0SVot/267GyDJxcA9wPkMz0aQJE2E7S6StKLGx8N/GvhsBjuSPJzk8Ph6H0CSA0n2nfxckruT7F1U3JK0CnyYkSStkCQvtj3vtLl/AJcCLwAn2r6cZBdwsO17k3wA+HzbG5KcDxwBdrU9Nvd/QJJWhO0ukqSM79uA28fHmB8H3gHQ9hdJvjG2x3wUOGSBLkmzZZEuSSssyU6GgnydoS/9KHAZQzvkyxtOPQDcDNwEfGrOYUrSyrFIl6QVleQi4NvA7W07trKstT2RZD+wZcPp3wN+BTzb9vfzj1aSVotFuiStlrOTHOHULRgPALeOf/smcCjJjcBDwEsnP9T2aJLHgQfmHK8krSQ3jkqSXlOScxjur76n7fOLjkeSlp23YJQkvaok1wF/AL5ugS5J8+GVdEmSJGlivJIuSZIkTYxFuiRJkjQxFumSJEnSxFikS5IkSRNjkS5JkiRNjEW6JEmSNDH/BfEOeTh4sr6cAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "figsize(12.5, 5)\n", "# tau_samples, lambda_1_samples, lambda_2_samples contain\n", "# N samples from the corresponding posterior distribution\n", "N = tau_samples.shape[0]\n", "expected_texts_per_day = np.zeros(n_count_data)\n", "for day in range(0, n_count_data):\n", " # ix is a bool index of all tau samples corresponding to\n", " # the switchpoint occurring prior to value of 'day'\n", " ix = day < tau_samples\n", " # Each posterior sample corresponds to a value for tau.\n", " # for each day, that value of tau indicates whether we're \"before\"\n", " # (in the lambda1 \"regime\") or\n", " # \"after\" (in the lambda2 \"regime\") the switchpoint.\n", " # by taking the posterior sample of lambda1/2 accordingly, we can average\n", " # over all samples to get an expected value for lambda on that day.\n", " # As explained, the \"message count\" random variable is Poisson distributed,\n", " # and therefore lambda (the poisson parameter) is the expected value of\n", " # \"message count\".\n", " expected_texts_per_day[day] = (lambda_1_samples[ix].sum()\n", " + lambda_2_samples[~ix].sum()) / N\n", "\n", "\n", "plt.plot(range(n_count_data), expected_texts_per_day, lw=4, color=\"#E24A33\",\n", " label=\"expected number of text-messages received\")\n", "plt.xlim(0, n_count_data)\n", "plt.xlabel(\"Day\")\n", "plt.ylabel(\"Expected # text-messages\")\n", "plt.title(\"Expected number of text-messages received\")\n", "plt.ylim(0, 60)\n", "plt.bar(np.arange(len(count_data)), count_data, color=\"#348ABD\", alpha=0.65,\n", " label=\"observed texts per day\")\n", "\n", "plt.legend(loc=\"upper left\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our analysis shows strong support for believing the user's behavior did change ($\\lambda_1$ would have been close in value to $\\lambda_2$ had this not been true), and that the change was sudden rather than gradual (as demonstrated by $\\tau$'s strongly peaked posterior distribution). We can speculate what might have caused this: a cheaper text-message rate, a recent weather-to-text subscription, or perhaps a new relationship. (In fact, the 45th day corresponds to Christmas, and I moved away to Toronto the next month, leaving a girlfriend behind.)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Exercises\n", "\n", "1\\. Using `lambda_1_samples` and `lambda_2_samples`, what is the mean of the posterior distributions of $\\lambda_1$ and $\\lambda_2$?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Your code here." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2\\. What is the expected percentage increase in text-message rates? `hint:` compute the mean of `lambda_1_samples/lambda_2_samples`. Note that this quantity is very different from `lambda_1_samples.mean()/lambda_2_samples.mean()`." ] }, { "cell_type": "code", "execution_count": 148, "metadata": {}, "outputs": [], "source": [ "# Your code here." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "3\\. What is the mean of $\\lambda_1$ **given** that we know $\\tau$ is less than 45. That is, suppose we have been given new information that the change in behaviour occurred prior to day 45. What is the expected value of $\\lambda_1$ now? (You do not need to redo the PyMC3 part. Just consider all instances where `tau_samples < 45`.)" ] }, { "cell_type": "code", "execution_count": 149, "metadata": {}, "outputs": [], "source": [ "# Your code here." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### References\n", "\n", "\n", "- [1] Gelman, Andrew. N.p.. Web. 22 Jan 2013. [N is never large enough](http://andrewgelman.com/2005/07/31/n_is_never_larg).\n", "- [2] Norvig, Peter. 2009. [The Unreasonable Effectiveness of Data](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/35179.pdf).\n", "- [3] Salvatier, J, Wiecki TV, and Fonnesbeck C. (2016) Probabilistic programming in Python using PyMC3. *PeerJ Computer Science* 2:e55 \n", "- [4] Jimmy Lin and Alek Kolcz. Large-Scale Machine Learning at Twitter. Proceedings of the 2012 ACM SIGMOD International Conference on Management of Data (SIGMOD 2012), pages 793-804, May 2012, Scottsdale, Arizona.\n", "- [5] Cronin, Beau. \"Why Probabilistic Programming Matters.\" 24 Mar 2013. Google, Online Posting to Google . Web. 24 Mar. 2013. ." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.core.display import HTML\n", "def css_styling():\n", " styles = open(\"../styles/custom.css\", \"r\").read()\n", " return HTML(styles)\n", "css_styling()" ] }, { "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.6" } }, "nbformat": 4, "nbformat_minor": 4 }