{ "metadata": { "name": "", "signature": "sha256:07ba974f31862131b4ffabef94c15c28a40b2b137ac3040902fd0d4eaa072877" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Hierarchical Bayesian Inference of Binomial Probabilities (BDA 5.3) #\n", "\n", "This notebook attempts to reproduce analysis in Chapter 5.3 of the book 'Bayesian Data Analysis' by Gelman et al (3rd Edition). \n", "\n", "Here, we are given $J=71$ observations of binomial outcomes $(y_1,N_1), \\ldots, (y_J,N_J)$ where $y_j \\sim \\text{Bin}(N_j, \\theta_j)$. We assume conjugate prior $\\theta_j \\sim \\text{Beta}(\\alpha,\\beta)$, and a \"reasonable\" hyperprior density $p(\\alpha,\\beta) \\propto (\\alpha+\\beta)^{-5/2}$; refer to the chapter regarding why this is a reasonable choice. Given this hierarchical model, we perform fully Bayesian analysis." ] }, { "cell_type": "code", "collapsed": false, "input": [ "% pylab inline" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "# load data from Andrew's homepage\n", "from pandas import *\n", "tumor_df = read_csv(\"http://www.stat.columbia.edu/~gelman/book/data/rats.asc\",\n", " index_col=False, skiprows=2, delim_whitespace=True)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "# the data roughly looks like follows\n", "tumor_df.head(20)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
yN
0 0 20
1 0 20
2 0 20
3 0 20
4 0 20
5 0 20
6 0 20
7 0 19
8 0 19
9 0 19
10 0 19
11 0 18
12 0 18
13 0 17
14 1 20
15 1 20
16 1 20
17 1 20
18 1 19
19 1 19
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ " y N\n", "0 0 20\n", "1 0 20\n", "2 0 20\n", "3 0 20\n", "4 0 20\n", "5 0 20\n", "6 0 20\n", "7 0 19\n", "8 0 19\n", "9 0 19\n", "10 0 19\n", "11 0 18\n", "12 0 18\n", "13 0 17\n", "14 1 20\n", "15 1 20\n", "16 1 20\n", "17 1 20\n", "18 1 19\n", "19 1 19" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The marginal posterior distribution for hyperparameters ($\\alpha$ and $\\beta$) can be derived as the ratio of prior and posterior partition functions, multipled by the hyperparameter prior: (equation 5.8)\n", "$$\n", "p(\\alpha,\\beta \\mid y) = p(\\alpha,\\beta) \\prod_{j=1}^J \n", " \\frac{\\Gamma(\\alpha+\\beta)}{\\Gamma(\\alpha)\\Gamma(\\beta)}\n", " \\frac{\\Gamma(\\alpha+y_j) \\Gamma(\\beta+n_j-y_j)}{\\Gamma(\\alpha+\\beta+n_j)}\n", "$$\n", "Now let us plot the marginal posterior density. As instructed in the book, here we reparametrize hyperparameters to be $\\log(\\frac \\alpha \\beta)$ and $\\log(\\alpha + \\beta)$. As always, when computing a density function it is safer to do it in log-scale." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from scipy.special import gammaln\n", "import numpy as np\n", "# calculate the log marginal hyperparamter posterior for each natural parameter value\n", "def log_hyperparam_posterior_helper(num_trials, num_successes, natural_1, natural_2):\n", " '''\n", " log of marginal posterior of hyperparameters (eq 5.8) in natural parameterization\n", " ( log(alpha/beta) and log(alpha + beta) )\n", " '''\n", " assert(len(num_trials) == len(num_successes))\n", " # calculate original parameters\n", " beta = np.exp(natural_2) / (1.0 + np.exp(natural_1))\n", " alpha = beta * np.exp(natural_1)\n", " # now calculate the log density\n", " log_prior = np.log(alpha) + np.log(beta) - 2.5 * np.log(alpha + beta)\n", " # prior partition function part\n", " log_posterior_1 = len(num_trials) * (gammaln(alpha + beta) - gammaln(alpha) - gammaln(beta))\n", " # posterior partition function part\n", " log_posterior_2 = sum(gammaln(alpha + num_successes) + gammaln(beta + num_trials - num_successes) - \n", " gammaln(alpha + beta + num_trials))\n", " return log_prior + log_posterior_1 + log_posterior_2\n", "# vectorize the function\n", "local_log_hyperparam_posterior = \\\n", " np.vectorize(log_hyperparam_posterior_helper, otypes=[np.float], excluded=[0,1])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we calculate the marginal posterior density for hyperparameters on a grid of points and plot it." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pylab as pl\n", "import numpy as np\n", "grid_num = 64\n", "xmin = -2.3\n", "xmax = -1.3\n", "ymin = 1\n", "ymax = 5\n", "x = np.linspace(xmin, xmax, grid_num)\n", "y = np.linspace(ymin, ymax, grid_num)\n", "X, Y = np.meshgrid(x, y)\n", "log_Z = local_log_hyperparam_posterior(tumor_df['N'], tumor_df['y'], X,Y)\n", "max_log_Z = log_Z.max()\n", "Z = np.exp(log_Z - max_log_Z) * np.exp(max_log_Z)\n", "levels=np.exp(max_log_Z) * np.linspace(0.05, 0.95, 10)\n", "pl.axes().set_aspect((xmax-xmin)/(ymax-ymin))\n", "pl.contourf(X, Y, Z, 8, alpha=.75, cmap='jet', \n", " levels=np.exp(max_log_Z) * np.concatenate(([0], np.linspace(0.05, 0.95, 10), [1])))\n", "pl.contour(X, Y, Z, 8, colors='black', linewidth=.5, levels=levels)\n", "pl.axes().set_xlabel(r'$\\log(\\alpha/\\beta)$')\n", "pl.axes().set_ylabel(r'$\\log(\\alpha + \\beta)$')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAARQAAAEUCAYAAADqcMl5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd4VEUXh9/Znh5CCb33TkgPVYpSRMHOhyCKiAV7712x\ng6gIKqAoYAcpCkhPB0JCr6GFkkBC2m623fn+2JhlSSAJRIJw3+fhIXfKvWc32d/OnJk5R0gpUVFR\nUakKNNVtgIqKypWDKigqKipVhiooKioqVYYqKCoqKlWGKigqKipVhiooKioqVUa1CIoQ4oAQIk0I\nkSKESDpHmylCiD1CiFQhRLdLbaOKikrl0VXTcyXQR0qZXValEGIw0FJK2UoIEQF8AUReSgNVVFQq\nT3VOecR56oYBswGklIlAoBAi+JJYpaKicsFUl6BIYIUQYoMQ4t4y6hsAh8+4PgI0vCSWqaioXDDV\nNeWJkVIeE0LUBpYLIXZKKded1ebsEYzHGQEhhHpmQEWlmpBSljnDqBZBkVIeK/4/SwjxGxAOnCko\nGUCjM64bFpd50KfPon/FvvT072nW7H//yr3/Df5r9oJq86Xg37J39eqh56y75FMeIYS3EMKv+Gcf\nYCCw5axmC4HRxW0igdNSyhOX1FAVFZVKUx0jlGDgNyHEP8//Xkq5TAhxH4CU8ksp5RIhxGAhxF6g\nEBhbDXaqqKhUkksuKFLKdKBrGeVfnnX90CUz6iwCAztV16MviP+avaDafCmoDnvVnbJlUKNG5+o2\noVL81+wF1eZLQXXYqwqKiopKlaEKioqKSpWhCoqKikqVoQqKiopKlaEKioqKSpWhCoqKikqVoQqK\niopKlaEKioqKSpWhCoqKikqVoQqKiopKlaEKioqKSpWhCoqKikqVoQqKiopKlaEKioqKSpWhCoqK\nikqVoQqKiopKlaEKioqKSpWhCoqKikqVUW2CIoTQFuc2/qOMuj5CiNzi+hQhxIvVYaOKikrlqK5E\nXwCPANsBv3PUr5FSDruE9qioqFwk1TJCEUI0BAYDX3HuHMfny32soqJyGVJdU56PgacA5Rz1EogW\nQqQKIZYIIdpfOtNUVFQulEs+5RFCDAUypZQpQog+52i2CWgkpTQLIQYBvwOtz26Unv59yc+BgZ3+\nc2kOVFT+C+TkpHH69NnJPctGSHlpc44LId4G7gQcgAnwB36RUo4+T590oLuUMvuMMvlv5TZWUVE5\nN6tXDz1nsvRLPuWRUj4vpWwkpWwG3A6sPFtMhBDBojhXqRAiHJfwZZdxOxUVlcuI6lzl+QcJcGZu\nY+Bm4H4hhAMw4xIeFRWVy5xLPuWpKtQpj4pK9XBZTXlUVFSuXFRBUVFRqTJUQVFRUakyVEFRUVGp\nMlRBUVFRqTJUQVFRUakyVEFRUVGpMlRBUVFRqTJUQVFRUakyVEFRUVGpMlRBUVFRqTJUQVFRUaky\nVEFRUVGpMlRBUVFRqTJUQVFRUakyVEFRUVGpMlRBUVFRqTJUQVFRUakyVEFRUVGpMqorc+A58xoX\n108RQuwpTvTV7VLbp6KicmFU1wjln7zGpSJkCyEGAy2llK2A8cAXl9g2FRWVC+SSC0oF8hoPA2YD\nSCkTgUAhRPCls1BFReVCqY4RSnl5jRsAh8+4PgI0/LeNUlFRuXguaaKvCuY1htIjlzKTB6m5jVVU\n/n0qk9v4UmcOjAaGFftJTIC/EOLbs1KRZgCNzrhuWFxWimbN/vevGaqiouKiRo3OHl/WBw/OPWfb\nSzrlqUheY2AhMBpACBEJnJZSnriUdqqoqFwY1Z3buFReYynlEiHEYCHEXqAQGFudBqqoqFScahMU\nKeUaYE3xz1+eVfdQtRiloqJyUag7ZVVUVKoMVVBUVFSqDFVQVFRUqgxVUFRUVKoMVVBUVFSqDFVQ\nVFRUqgxVUFRUVKoMVVBUVFSqDFVQVFRUqgxVUFRUVKoMVVBUVFSqDFVQVFRUqgxVUFRUVKqM6g5f\noHIVIKXEZsvGYjmGzZaNw2HG6TTjcFgQQiCEDo1Gh1brhcFQE6OxJkZjLfR6f4QoK+ywyuWKKigq\nVYqUCmZzBnl5O0hPz8ThSEVRDiCEDxpNYzSaugjhhxB+QJ3iXnbAhpTZKMp2FOU4Uh4F9Gi1ndBq\nu9CmTRCBgZ3QaPTV9+JUykUVFJWLRkonubk72L59F3b7UkCHTtedJk164u//AN7erdDp/Cp5T4nV\nmkF+/kb27o1l27bfUJSP0On60aZNe4KCQlRxuQxRBUXlgikqyiIlZTM221yEqInBMIjQ0D/w8Wl3\n0fcWQmAyNcRkakjt2jcUPy+D1NS57NixCEX5CqNxLN27d0av973o56lUDULKMgPKX/YIIWSfPouq\n24yrDqfTRmbmavbuTUBRdqPXD6VLl4fx8Wl/Se3Iz99MWtp72O2r0esH0q3bQLy9619SG65WVq8e\n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\n", "text": [ "" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Above is the plot same to Figure 5.3 (a); Figure 5.2 can also be reproduced just by changing the range. Now let us sample hyperparameters from the posterior distribution to generate Figure 5.3 (b), by approximating the posterior distribution as step functions on grid points." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# seed the RNG\n", "np.random.seed(13531)\n", "# normalize the grid\n", "probs = np.ravel(Z)/np.sum(Z)\n", "# sample from the normalized distribution\n", "throws = np.random.choice(len(probs), 1000, p=probs)\n", "xs = x[throws % grid_num]\n", "ys = y[throws / grid_num]\n", "xgrid_size = (xmax-xmin)/(grid_num-1)\n", "ygrid_size = (ymax-ymin)/(grid_num-1)\n", "# add jittering\n", "xs += np.random.random(len(xs)) * xgrid_size - 0.5 * xgrid_size\n", "ys += np.random.random(len(ys)) * ygrid_size - 0.5 * ygrid_size\n", "pl.scatter(xs, ys, marker='.', s=1)\n", "pl.xlim(xmin, xmax)\n", "pl.ylim(ymin, ymax)\n", "pl.axes().set_aspect((xmax-xmin)/(ymax-ymin))\n", "pl.axes().set_xlabel(r'$\\log(\\alpha/\\beta)$')\n", "pl.axes().set_ylabel(r'$\\log(\\alpha + \\beta)$')\n", "pl.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAARQAAAEUCAYAAADqcMl5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHihJREFUeJzt3X3QHXV99/H3lweDPCgKMQUSbgIBqrTFlCEkYJN0qh2S\narQtGe10wJDpw22rtd7SUqneCVOtZjrepcQWLDaWUi0tj/JYDK0hSilFuBAEUYKpEFohJoUpiVJj\nvvcfu3tde+3Z3bN7zu/snnOdz2smwzlnf7v7vQ7J99rfs7k7IiIhHNB2ACIycyihiEgwSigiEowS\niogEo4QiIsEooYhIMK0kFDP7dzN7xMwmzOzfCspcbmZPmtnXzGxh0zGKSH0HtXRfB5a7++68g2a2\nEljg7ieb2VnAFcDiJgMUkfrarPJYybFVwNUA7n4/cKSZzWkkKhHpWVsJxYG7zeyrZvbrOcePA55J\nvd8BzG0kMhHpWVtVnnPc/T/NbDaw2cyecPcvZ8pkn2CmzREwM80ZEGmJu+fWMFp5QnH3/4z/uxO4\nCViUKfIsMC/1fm78WfY6A/mzbt26gV1b8SrmUY+3TOMJxcwONbMj4teHAT8PPJopdgtwQVxmMfCC\nuz/XaKAiUlsbVZ45wE1mltz/c+7+RTP7TQB3/7S732FmK81sG7AHuLCFOEWkpsYTirtvB96Y8/mn\nM+/f21hQGcuXL2/r1j0ZtXhBMTehjXitW51oWJmZj2rsIqPMzPBhapQVkZlJCUVEglFCEZFglFBE\nJBglFBEJRglFRIJRQhGRYJRQRCQYJRQRCUYJRUSCUUIRkWCUUEQkGCUUEQlGCUVEglFCEZFglFBE\nJBglFBEJRglFRIJpLaGY2YHx3sa35hxbbmYvxscnzOzDbcQoIvW0tdEXwPuBx4EjCo7f4+6rGoxH\nRPrUyhOKmc0FVgKfoXiP47K9j0VkCLVV5flT4PeA/QXHHTjbzL5mZneY2RuaC01EetV4lcfM3go8\n7+4TZra8oNhDwDx332tmK4CbgVOyhdavXz/5evny5SO3b4rIKNiyZQtbtmypVLbxfXnM7I+B84F9\nwCHAq4Ab3P2CknO2A2e4++7UZ9qXR6QFZfvytLrRl5ktAy5y97dlPp9D9BTjZrYI+Ad3PyFTRglF\npAVlCaXNXp6EA6T3NgbOA95jZvuAvcC72gtPRKrSVqQiUou2IhWRRiihiEgwSigiEowSiogEo4Qi\nIsEooYhIMEooIhKMEoqIBKOEIiLBKKGISDBKKCISjBKKiASjhCIiwSihiEgwSigiEowSiogEo4Qi\nIsEooYhIMEooIhJMWzsHFu5rHB+/3MyejDf6Wth0fCLSm7aeUJJ9jTtWmTazlcACdz8Z+A3gioZj\nE5EeNZ5QKuxrvAq4GsDd7weOjPfpEZEh18YTSrd9jY8Dnkm93wHMHXRQItK/Rjf6qrivMXQ+ueRu\nwKO9jUUGb2j3Nq6yr7GZXQlscfdr4/dPAMvc/bnMtbTRl0gLhmajL3e/xN3nuft8ou1F/zlnk/Rb\ngAsAzGwx8EI2mYjIcGp7b+OOfY3d/Q4zW2lm24A9wIVtBigi1WlvYxl6GzdeBcD73vfrLUciMERV\nHpFe6ZfHaNATiojUoicUEWmEEoqIBKOEIiLBKKGISDBKKFLLxo1XTXbjimQpoUht6l2TIuo2FpFa\n1G0sjUlXibLVo7zqUpUqlKpZo0MJRYJLPzlmnyLzniqrPGnqaXQ0qMojIrWoyiMijVBCkVaoXWRm\nUkKR1qjKOvOoDUVEalEbyphrs3pRtVt49eo1QbqY+6FqWP+UUMZEm09zVbuFQ3Ux90NPvf1RlUdE\nahmqKo+ZHWJm95vZw2b2dTNbn1NmuZm9GO9/PGFmH246ThGpr/FV7939B2b2s+6+18wOAr5iZnfG\n246m3ePuq5qOb6bbuPEqtm69l6VLzxnIos+rV68BYOnSc2rdJznvuuv+Ovd4rwtVa4HrZrXShuLu\ne+OXrwAOJn9b0txHKulfXntFSPv3e0/3Sc4r0mvMqho3p5U2FDM7AHgIOAn4lLt/KHN8GXAj0b7G\nzwIXufvjmTJqQxFpQVkbSisbfbn7fuCNZvZq4CYzO83dH0sVeQiYF1eLVgA3A6dkr6O9jZuXV4Xo\np1qRPreX65SdM+jqzrhUp+rsbdzqzoHu/qKZfQk4F3gs9fl/p17faWZ/YWavdffd6fPTCUWaE7o7\nt2x2cq/x9HO9UPeeKbK/rC+99NLCso1XeczsaGCfu79gZq8E7gI+4e53pMrMAZ53dzezRcA/uPsJ\nmeuoyiPSgmGr8hwDXG1mBxI1Cv99vJ/x5P7GwHnAe8xsH7CXaGN1ERlyGtg2wgZRh+92zezQ9G73\nLmsj6dZVXCWesjLj0sbRtKEa2CZhDSKpdrtmcrzqvcvaSLp1FVe9T1GZcf+l0zQ9oYhILXpCkdoz\nadtYPLrb9Xq9X53zNOO4P0ooY6TuE10bi0dXrW6Fvm6Ie4iqPCJSU9/dxmZ2MFFX7hKiOTaHEs2/\n2Qs8AnzO3X8QJlwRGVVdn1DM7ExgKbDZ3R/JOb4AWAk84u5bBhFkQVwz6gmljS7gsnMSVbqFk1nF\n6XPyZjVnu5Czx1evXsPmzVs4/PDDuPji3+3adZ1cZ8OGywAKz6n7M0m5fp9QFgM/AbzazHYTDTLb\nDdzo7i+4+zbgcjM70cxmufvLwSIfM210ARedE/+lqVw+75xuq7AVHa8yS3n6dQDKz6n7M0lvqjyh\nrIjn05wE/DGwCVhANP9mnbs/NPgwc+OaUU8oIqOi327jWRb9630KmHD3u9z9z4FVRFUhERGgWpXn\nH4HzzOwpd/9E8mE8ce/pwYUm/Sprs6jbvhKijSe5xtat9wJMtrts3Xov27Z9mwULTixc4a3oZ0mU\nLadQZTrBIFexGyddE0rce3Odmc01s5VEvTwHAvOAbww4PulTWZvFIMalVL1GelW3dGxVlyIoarcp\nirVKm4yq0P3reRxKvAzB6cAsYL+7/2PIwCrcX20oIi0oa0PRwLY+9VsVaGpVMSD3sT553E+qHMnM\n327nld1v06ZrAFi79vyOc9IzjIuqYck9gdz7dqvSLFy4lJ07d3Hxxb87Lf5EvyvLjbvgc3nMbHZ/\nIc0s/Sa2plYVK3qsz1ZDqp5XfL/yc9L3KaqGdasCdavSpM/Nvu7VMPwCG3Y9PaGY2Qfd/ZMDiKdO\nDEPxhCIybjTbWEQaUWcuz7Gpj15jZv8r9X6Hu/8oaGTSdfh60Tllx6veE+i476ZN10xrZ8neM5E+\nJ9t+kcjrOgZy23Cy1666ilvdrmB1H/ev6pqyrwROSL1/beb9TqKJghJYt+HrRef0e8+i6xStsFbU\nhZvt3k2XyXYd57Xh5J1XFFteTL10jasq3bvG21DM7BDgHqLu5oOA6919fU65y4EVRIlqjbtPZI6r\nDUWkBUO16r1X2Ns4HkC3wN1PNrOzgCuIJilKTem9hqFaVSmvK7moqxai6sp99z3A7NlHsXbt+ZPd\nxomdO3cBTOvGTY+MzV5306Zr2LlzF0uWnMl11/117mLW2VG327Z9G4CJia3TytStvhV9J1JNr42y\nX+jnpt59b+NVwNVx2fuBI+O9eqQH2apFkc6RqJ1dvHnl88tOdR9Pvc+v4nRel47r5VW1stcpKlNU\njQm1QLZMGda9jW8FPu7u/xK/vxu42N0fTJVRlUekBUNV5YFKextDNGdo2mnZ62hvY5HBq7O3ca0n\nlLir+I3ALnf/ipn9srvf0FOUU9f8CLA33chrZlcCW9z92vj9E8Ayd38uVUZPKLFuG46XdYdm20uW\nLj1nWhtIup0DmDy2c+cuZs8+iomJraxevWbyfKBjFbakfSO51tat93LbbXexb98+3vGOXwBg8+Yt\nzJ9/PGvXnj95r3T7RzbGDRsu46WX9jB//vEA085L1NmETKoLObDtUKK1ZT9jZg8Cy3sI5mgzOzJ+\n/UrgLXTOWr4FuCAusxh4IZ1MpFO3LtVuw9jTbRZJGwbkzQoubl8paq/ovP7UtdL37DYDOf99/tD6\nqr9s9EsprLpPKJcAV7r7bjM7FPhZd7+91g3NfpKowTW9t/FHM3sbY2afIloVbg9woWdWhtMTikg7\ngs02NrPz3f2a1Pu3uvttAWKsbVwSSr+jN8v2Ey565F+9eg333fcAS5acOflZdrRr0UjXolGxRVUq\nmKquJNe4774HACbvn1SZ1q49v2NE7cKF0aKBExNbp3UTZ2dP52liEe+QhqWKFrLK8z0zu9bM3mZm\npwOv7z886abf0ZvZc8u6gqc+7+yO7dbtW1QubyRsUXWlW3Une5386xZ3I3f+nPW/17rVqpCG/Zdo\n7W5jMzsVeDfRGJKr3P2bgwisQhxj8YQiMmx6rvKY2SzgCHf/XoWbHO/uja0xq4Qi0o6ex6G4+8tm\n9hYzexVwk7t/P+firwFWE/XUaNHqwAYxuzivHaCobSX9Ot0FDPkrsuXFkzd0Pj0lINs9nN7sKzkG\n5HY/J21L6U3CZs8+qqO7OxtTduh++udOlx+WdotRUWWR6tvM7BjgA2b2OuAQouHyPyKauLeDqOrz\n4kAjHWN1hszXuWZ2Bm9R20rna6NsY62qw9yL21ymD9Xfv9854ACbvHf6vOmx5Xd3d1vIOvtz9zKz\nWSJaU1ZEagk29N7MLnb3Dan384CPAZ/3hle9HwVVH5cHsbBP3gLQVRaEznbLZq+5adM1bN/+NIcf\nfhhLlpzJtm3fZvv2qKabfAZMzj5OLFhw4rTu4Lz9gZJ9ipMRuOkFr5ORuTt37uKll/bwR3/0h5Oz\nnF96ac+0/ZDTs4mzVaNu31XyfSTd28ms57zvpupCT+kyM70KVbfb+Cgzu93M3hC//yDwUeCYsGHN\nHHVGbIZ+4uqsElRbELqsu3WqOjLV9Zu+Rreu4f37O0fTlndr54+0TVeP8n629HWqfLdlXdRl302V\n/2fZMjP5ybruwLbz3P16M3u7u3/BzG4iGop/bt0Rs/1SlUekHSFnGy+M1yU5wsy+DhxP1Eh7WJ8x\nisgMUPcJZQ5wFvAocCLwGHAh8KC7f3EgERbHoieUWJXNvNLHk+7VHTuyK0ZMmTv3NHbt2s1RR712\nciW2oq7gpDs5ad9Ium6ByRnIyVD+dFtEdvZwch+Y3uawYcNlk/dNyiTD+dPtOXnTA/KmAmS/p6IZ\n2tnPisz0dpGskE8oO4Gjgd8HHnH3fwI+3md8EkC6u7OoizRvgejya6bbMMq7gvPbHGxal2/d2cbp\nOCCKf3q7yFQcyT2zi1rnfZb3PZV1K1ehX26Ruk8oFwHPAs8TbZZ+lLe04ZeeUETaEfIJ5Ul3n1xP\n1sze2VdkUktZF2S6WpPuei27Vt4M4bLuzeyC18C0kazJsaRaNX/+8ZMLMMH06lFStUm6ZpPRrck1\nsqN3k9fAZJVtyZIzJ7unk27p9HXSsaZnPCeS7t/sSN68kb1F30nesXGrAqXVTSgLzGwRsIvoCeWk\n8CFJmbIuyKnH+XozbYtGk5ZVc7qdk40hb0ZwEmu2WlU0ejddfcrvTs7vGs9W9Q44wDq+n27vy76T\nvGPj+vRct8pzGHARsIioYfZL7n7XgGLrFouqPCIt6GuBJTP7LaLlCrI7Axpwqru3MqhNCUWkHf22\noXwLeJO7/zDnwiv6DU6mC1X/rjLku2z/4Kpl8jYFS1Z8A9i1azezZs1i/vzjJzf8SrqUk27ml19+\nmR//8ZO7LnidbvdJH0sPnU/Hkp6dXPS6yr7R6XaffvaMzrv2TFNltvHdJcfuDBuOQLj6d5U2kbzu\n1Lplsm0Z0WdTx9NtHFNxWOp9/nD7bj9D9nXnVAJIz4qeft387vCi7z59bq/G4Ym68dnG8YTCvwFe\nBzjwl+5+eabMcqLdCZPFN25w949myqjKI9KCYdvo64fAB9z9YTM7HHjQzDa7e3YrjXvcfVUL8Q29\notnJdWe/5u3xm170OWvhwqXs3LlrclYvMK2Kkl5MGqa6amH6/j7pmcDp/XXSM5KTfZA/8pGPAUyO\nvk3iSncjp7uh0z9b8jpdZUliylZfqnYJVxX6eqOi172Ne+bu33X3h+PXLxGt9HZsTtHcDCiRshGx\nVc6del29yzQ5ljeSdXpXbnZEbOcM47J9kNP3yOsezl6jqMu5W5Wo7Hupc6yXc2bq03WrCyyZ2QnA\nPcBpcXJJPl8G3Ei0GtyzwEXu/njmXFV5RFowbFUeAOLqzvXA+9PJJPYQMM/d98Y9STcDp2Svob2N\nRQZvYHsbh2JmBwO3AXe6+2UVym8HznD33anPxvIJpaj+XWfVt7orxOW1nSTXSQ+dT9olsu0XMH1Y\ne3aha6Bj8y9gciZx0p6SSFaNS4b2l01BgKkNw/K6iCF/hnZd/baLjFK7SsiNvkIEY8BfAY8XJRMz\nmxOXIx7qb+lkMu6Kuzarr/pWpyzkt51E15n6b1H7Rd4qZ53tLdM/n/5ZXvtI90W10+eXdRHX/S6K\nqFu5nW7jNwFbgUeIuo0BLiFarAl3/7SZ/TbwHmAf0Qjd/+Pu/5q5zlg+oYi0LdjexsNECUWkHUPZ\nKCv1hKxjZ5cuyJtyX9bGkLcBe3r1NSB39frs5lt5K82nx8fA1GZi2XtUGUNSZ1xOXgzJueM6pqQX\njbehSO9CPpHltSvUaWPIH35fPtYkb2Ovontkx6ZMfVZvDEmdcTll38c4jinphao8IlKLqjwzXN0N\nxaBzpm76s7J7JFWR7EpseWWLhrlnZ+9mV4LLDpdPrgV0DO/v9nPnVZWS2dBLlpzZsWlXcq9uVcFB\nVHFmQvVJCWWGqNNdnC2f91nZuUUrsRXdp6iKklc9yhsun57h7KkZxEWzo4vulb12Xnd2lQWsB/lk\nPOpP3aryiEgtQzWwTURmLlV5Zri6XZ7ZjcOLzoXy1eGTjcyBjiH7ZXEVdddmX1fZ+L0o/qK4s8qm\nEFQ9r0nD0AajJ5QxULfLs2i4e55e21DKrl2l67aonSPbXlJ0jyq7AmTPr3pO2X0Hre1mALWhiEgt\n6jaWIIo2B4PuM3az3cBQ/GieV9VIdynXiTd7TnoUbt6o26rXyIslbwW8XuMcVarySC1FVYoqM3br\nVKW6dSnXibfzs/yu5HrXKKqu1asadbveqFGVR0RqUbexiDRCbShjoOk6et3Zv70Mb6+ycXy2S7no\nmnW+n3HuEq5CTyhjounqYT9dxWXlqp5Td2pBne9nXLuEq1AbiojUom5jaUTox/JeF07K2295UDHK\ndKrySFChnxp7XTgpb2Z01XOld0O5t3Fc7nJgBdEi1WvcfSJzXFUekRYMW5Wn697GZrYSWODuJ5vZ\nWcAVwOIWYhWRGoZ1b+NVwNVxmfuBI81sTqOBylDbuPGqji7hvM+G0ajE2YtW21DivY0XAvdnDh0H\nPJN6vwOY20xUMirqDIkfNqMSZ12tdRvH1Z0twEfd/ebMsVuBT7j7vfH7u4Hfd/eHUmV83bp1k+do\nb2ORwcjubXzppZcWtqEM5d7GZnYlsMXdr43fPwEsc/fnUmXUKDuChrHbtko3dNnxfq8/aoZqLk+V\nvY2BW4AL4vKLgRfSyURG2zD+Iqgz+3kQ158phnJv47jcp4BzgT3AhenqTnxcTygiLdDexiISzFBV\neURG2Uzu8g1BCUWkJj0ZF1OVR0RqUZVHRBqhhCIiwSihiEgwSigiEowSioy0EN24o9gVPKwxK6HI\nyAvR2zeKPYbDGLO6jUWkFnUbi0gjlFBEJBglFBEJRglFRIJRQhGRYJRQRCQYJRQRCUYJRUSCUUIR\nkWDaWPV+k5k9Z2aPFhxfbmYvmtlE/OfDTccoIr1pY2/jzwIbiTZML3KPu69qKB4RCaSNvY2/DPxX\nl2K58wRERtmwzhAOaRjbUBw428y+ZmZ3mNkb2g5IJJSZPqG1jSpPNw8B89x9r5mtAG4GTskruH79\n+snX2ttYht2obkWa3du4TFt7G58A3OruP1mh7HbgDHffnflcyxeItGCkli8wsznx/seY2SKipLe7\ny2kiMgQar/KY2d8By4CjzewZYB1wMEzua3we8B4z2wfsBd7VdIwi0hut2CYitYxUlUdERpcSiogE\no4QiIsEooYhIMEooIhKMEoqIBKOEIiLBKKGISDBKKCISjBKKiASjhCIiwSihiEgwSigiEowSiogE\no4QiIsEooYhIMEooIhKMEoqIBDN0W5HGZS43syfjvXkWNhmfiPSujSeUzwLnFh00s5XAAnc/GfgN\n4IqmAktU3YNkWIxavKCYm9BGvMO4Fekq4Oq47P3AkWY2p4nYEvqLM3iKefDGIqFUcBzwTOr9DmBu\nS7GISA3DmFCgc7N07ZchMgKGbitSM7sS2OLu18bvnwCWuftzmXJKMiItKdqXZxg3S78FeC9wrZkt\nBl7IJhMo/oFEpD1DtxWpu99hZivNbBuwB7iw6RhFpDcjuxWpiAyfYW2UbYyZ/YmZfSMeRHejmb06\np8w8M/uSmT1mZl83s99pI9ZUPF1jjsuda2ZPxIMEL246zkwsq+Pv70dm9tMl5T4Qf8ePmtnnzWxW\nk3Gm4qga75Fmdn38/+PxuJreiqoxx2UPNLMJM7s1ZAxjn1CALwKnufvpwLeAD+WU+SHwAXc/DVgM\n/LaZvb7BGLO6xmxmBwKfIhpE+AbgV1qO+VHgF4GtRQXM7DjgfcAZcYP9gcC7mgmvQ9d4Y38G3OHu\nrwd+CvjGoAMrUTVmgPcDjxO4B3XsE4q7b3b3/fHb+8kZ8+Lu33X3h+PXLxH9pTm2uSg74ukaM7AI\n2Obu/+7uPwSuBd7eVIxZ7v6Eu3+rQtGDgEPN7CDgUODZwUaWr0q88ZPhz7j7pvicfe7+YiMB5qj6\nHZvZXGAl8Bk6h2j0ZewTSsZa4I6yAnGX90Kif8jDoCjmvAGCxzUSUY/c/Vngk8DTwH8Q9fDd3W5U\npeYDO83ss2b2kJldZWaHth1UBX8K/B6wv1vBuoax2zg4M9sM/FjOoUvc/da4zB8C/+Puny+5zuHA\n9cD74yeVgQkQc+Ot7VVi7nL+a4imXpwAvAhcZ2a/6u6fCxro1P36ipfo389PA+919wfM7DLgD4D/\nGzDMaQJ8x28Fnnf3CTNbHjq+sUgo7v6WsuNmtoboEfDnSsocDNwA/K273xw0wBwBYn4WmJd6P4/o\nKWVgusVcwZuB7e6+C8DMbgTOBgaSUALEuwPY4e4PxO+vJ0ooAxMg5rOBVfEk3EOAV5nZ37j7Bf1H\npyoPZnYu0ePf2939BwVlDPgr4HF3v6zJ+Ari6Roz8FXgZDM7wcxeAbyTaNDgMCiqt38HWGxmr4y/\n8zcTNRy2LTded/8u8IyZnRJ/9GbgscaiKlcU8yXuPs/d5xM1eP9zqGSS3GCs/wBPEv1Fnoj//EX8\n+bHA7fHrNxHVNx9OlTt3mGOO368AvglsAz7U8vf8i0RtOt8HvgvcWRDzeqJG70eJZp0fPOTxng48\nAHwNuBF49bB/x6nyy4BbQsaggW0iEszYV3lEJBwlFBEJRglFRIJRQhGRYJRQRCQYJRQRCUYJRUSC\nUUIRkWCUUKQxdRZLMrODzOzUQcYj4SmhSC1m9mYz+60eznsrcESNU5aTml5vZoeY2TvMbIWZvc/M\nzqwbgwyeEorUdQ/w7jonmNkxwKvc/Xs1TjvV3Z9MvX8b8AV3v5NoyYCl8QxwGSJKKFKLR6u/7a15\n2oXATTXPST+dzAWecnc3s5OIJsBtBs6reU0ZsLFYD0XCM7PDgP9NNJP5ZOD/AbOB3yGaAb0I2OXu\nG4DXufv3U+euAI4mWqPlJmCvu38ndXwR0QzexE95tL3KHxCtlvdBd99hZr8G/N0Af0ypSU8o0quL\ngC+7+xeIFnNaA5wF/Ie7X0+0iPaGuOwhyUlxQ+u73f0a4ErgEuCNmWuf4e5fTb03AHf/BLCJqYWr\ntdnbkFFCkV4tAnbFr58HziRaw+QIM3s70QJQiXRbx7uJV2Bz993xebuYLvv38sDU6wXA7vj1KKzf\nOlZU5ZFeGFHymAc8Ff/3EeBE4Dp3fypT/kep168gWoSaeEHnPe7+lckLR08w30y9T6pGycp55wLn\nx4eDL7Is/VFCkVri9o9TgY8DZ5vZHOAod/+kmf0YcLuZPU20otwn3f0ZpjfiXkW0puk8ooW0/8XM\nftndb4iPLydabjNxOvANM/sl4Hhgnbu/EB+r2zgsA6aEIrXE3bbHxG/vyhy+EFgK/AA4CfgYcAGw\nw8xe4+7/5e7fBP4kdc7tmWu8wt33pd7PcveObULMbAHRU5EMEbWhSEgPAr9AVC05B0i297gKWN3t\nZDM7ls6NvYqqNSsZ0Gr40jutKSuNMLOfAb7j7k+XlHkncJu77+lyrROB4919S9gopV9KKDJyzGyW\nu7/cdhzSSQlFRIJRG4qIBKOEIiLBKKGISDBKKCISjBKKiASjhCIiwfx/nqgc3HnKHjkAAAAASUVO\nRK5CYII=\n", "text": [ "" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let us sample corresponding $\\theta_j$'s." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# convert sampled natural parameters into original parameters\n", "betas = np.exp(ys) / (1.0 + np.exp(xs))\n", "alphas = betas * np.exp(xs)\n", "# assign an array to store sampled parameters\n", "thetas = np.zeros((len(tumor_df), len(alphas)))\n", "# do the sampling\n", "for i in range(len(alphas)):\n", " for j in range(len(tumor_df)):\n", " thetas[j][i] = np.random.beta(alphas[i] + tumor_df['y'][j], \n", " betas[i] + tumor_df['N'][j] - tumor_df['y'][j])\n", "# calculate statistics of parameters\n", "theta_means = np.mean(thetas, axis=1)\n", "theta_2_5s = np.percentile(thetas, 2.5, axis=1)\n", "theta_97_5s = np.percentile(thetas, 97.5, axis=1)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let us draw Figure 5.4, which shows the 95% posterior intervals for each $\\theta_j$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "mles = tumor_df['y']/tumor_df['N']\n", "# to reduce overlap, jitter\n", "jittered_mles = mles + np.random.uniform(low=-0.01, high=0.01, size=len(mles))\n", "ax = pl.scatter(jittered_mles, theta_means)\n", "for j in range(len(tumor_df)):\n", " pl.plot([jittered_mles[j],jittered_mles[j]], [theta_2_5s[j], theta_97_5s[j]], color='k', linestyle='-', linewidth=1)\n", "pl.plot([0,0.5], [0,0.5], color='k', linestyle='-', linewidth=1)\n", "pl.xlim(-0.01,0.41)\n", "pl.ylim(-0.01,0.41)\n", "pl.axes().set_aspect('equal')\n", "pl.axes().set_xlabel(r'observed rate, $y_j/N_j$')\n", "pl.axes().set_ylabel(r'95% posterior interval for $\\theta_j$')\n", "pl.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 8 } ], "metadata": {} } ] }