{ "metadata": { "name": "", "signature": "sha256:1d0d1bb9ce0c143f2c3e3bb6c2bbfcfda163383f66d6e69f2d2ff6fb4f649dfc" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "This is a little mathematical background to justify why we might require [priors](http://en.wikipedia.org/wiki/Prior_probability) to be \"invariant\" under certain transformations of the parameter space. This is not a new idea, but the derivation is my own (and hence so are errors...)\n", "\n", "I'll use `sympy` to do some examples." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "import sympy\n", "sympy.init_printing(use_latex = True)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "As motivation, consider a model where $(X_i)_{i=1}^n$ are IID samples from $N(\\mu,\\sigma^2)$ where we wish to use a sample $(x_i)$ to make inferences about $\\mu, \\sigma$. For some variety, I'll use the [precision](http://en.wikipedia.org/wiki/Precision_%28statistics%29) $\\tau = 1 / \\sigma^2$.\n", "\n", "So our random variable $x=(x_i)$ takes values in $\\Omega = \\mathbb R^n$. Consider the transformation $\\phi : \\Omega\\rightarrow\\Omega; (x_i) \\mapsto (bx_i+b)$. That is, for each sample, we scale by $b$ and add $a$. Then $\\phi(x)$ is a sample of IID $N(b\\mu+a, b^2\\sigma^2)$. If $\\Theta$ is the parameter space (in our case, say $\\{ (\\mu,\\tau) : \\tau > 0 \\}$) then consider the transformation $\\psi : \\Theta \\rightarrow \\Theta; (\\mu,\\tau) \\mapsto (b\\mu+a, b^{-2} \\tau )$. It is hence reasonable to say the following:\n", " - Suppose we make some inference about $\\theta = (\\mu,\\tau)$ given $x = (x_i)$.\n", " - Then we should make the \"same\" inference about $\\psi(\\theta)$ given $\\phi(x)$.\n", " \n", "As an example, if $\\phi(x) = ( 2x_i - 1 )$ and our inference about $(x_i)$ gives a value to $\\mathbb P( 0\\leq \\mu \\leq 2, 1 \\leq \\tau \\leq 3 )$ then as $\\psi(\\mu,\\tau) = (2\\mu-1, \\tau/2)$, the inference about $(2x_i-1)$ should give the sample value to $\\mathbb P( -1 \\leq \\mu \\leq 3, 1/4 \\leq \\tau \\leq 3/4 )$." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "The assumption" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let $f(x|\\theta)$ be the PDF of $x$ given the parameter value $\\theta$. So $\\mathbb P(x\\in A | \\theta) = \\int_A f(x|\\theta) dx$ for measurable $A\\subseteq\\Omega$. Our assumption is that apply $\\phi$ to $\\Omega$ is \"the same as\" applying $\\psi$ to $\\Theta$. That is,\n", "$$ \\mathbb P(\\phi(x)\\in A | \\theta) = \\mathbb P(x\\in A | \\psi(\\theta) ). $$\n", "By the [change of variables formula](http://en.wikipedia.org/wiki/Integration_by_substitution#Application_in_probability) the distribution $y = \\phi(x)$ has density $f(\\phi^{-1}(y)|\\theta) |\\det J(\\phi^{-1})|$ here $J$ is the Jacobian. Using that $|\\det J(\\phi^{-1})| = 1 / |\\det J(\\phi)|$ we find that\n", "$$ f(\\phi^{-1}(y)|\\theta) = f(y|\\psi(\\theta)) |\\det J(\\phi)|, $$\n", "or equivalently, with $x = \\phi^{-1}(y)$,\n", "$$ f(x|\\theta) = f(\\phi(x)|\\psi(\\theta)) |\\det J(\\phi)|. $$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's check this for our normal distribution example. \n", "\n", " - In `sympy` I don't know how to specify $x_1, x_2, \\cdots, x_n$ for an unknown $n$.\n", " - So let's get around this with a hack.\n", "\n", "Write $\\sum_i (x_i - \\mu)^2 = \\sum_i x_i^2 - 2\\mu \\sum_i x_i + n\\mu^2 = S_{xx} - 2\\mu S_x + n\\mu^2$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def density(Sxx, Sx, n, mu, tau):\n", " \"\"\"Return the density (2\\pi\\sigma^2)^{-n/2} \\exp(-\\sum (x_i-\\mu)^2 / 2\\sigma^2)\n", " = (2\\pi)^{-n/2} \\tau^{n/2} \\exp(-\\tau (S_{xx} - 2\\mu S_x + n\\mu^2)/2)\"\"\"\n", " return (2 * sympy.pi)**(-n/2) * tau**(n/2) * sympy.exp( - tau * (Sxx - 2*mu*Sx + n*mu**2) / 2 )\n", "\n", "n = sympy.symbols(\"n\", integer = True, positive = True)\n", "Sx, mu = sympy.symbols(\"Sx mu\", real = True)\n", "Sxx, tau = sympy.symbols(\"Sxx tau\", real = True, positive = True)\n", "\n", "density(Sxx, Sx, n, mu, tau)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{\\tau^{\\frac{n}{2}}}{\\left(2 \\pi\\right)^{\\frac{n}{2}}} e^{- \\frac{\\tau}{2} \\left(- 2 Sx \\mu + Sxx + \\mu^{2} n\\right)}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAPIAAAA4BAMAAAA1NbhFAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAmYl2MiKrRFS7Zt3v\nzRDUtvbGAAAEr0lEQVRYCe1XXYgbVRT+Jj8z+Z3sTwuKSrNdUBRcgrsuulLMggqCslmk+6Dghrai\nQinR9aGg0hER1gcxIGr1KYi1KAhRFH0oNWjFglgDPojClikIUrFuxGr7tOu5Z+bOTzJJdmsmIPRA\n7j3nO+eeL/fO3Dv3AD5JXTNX9gFDMxJ3ojE0Mj/RgXjTDwzNqkePm0Mj8xLp1dQtXvuqHuYKbAoJ\nk6B77pWbi92d4Xh20WTzQDPWCCc/Zw2alzKzdO9e8p7ERh/mlT7+Xm5nXqmKE3YYSUvX6g4WqMTK\ngfDWQHdeOzwD7rP0CyUPFqBmTQlOvEHq/O65ogScPjY2+a5j+BRnXlkPbJ0g+iEP5FO1E9+eJGBa\ngoqpNKGN4IgEuDdE+xS0Flt2YziGM69U3sHwCavn/vBArpO0hMbP5owE06X4RaQhn5INV0VfB7iX\noY7hzktvSCfiLVa/2KRhwRIxCdea0pkx9EtYN5GSAPeCRKeXtOZFBcjimddRiSHalVGG8KNR8tKk\nVdhA+ssKEJldOYBHoBrkYpITN5E2+fhskT0WGK/jCYh5pcZXbiT3BP0sUfNS69afF45szXVn89Cv\n3zQwpVZP40PkiuRi5nPfX0bEfDJjsMcCU01c5KG/HamlKfIVNrbRZGiOUsRfx1IDFfF39mFZmMyM\n+EFo+BmWxwLVvP08H92DXAl4TkT3kZffIjEhTvQWcsRsA/R66hXoLXCmz/A+1LW179Z+wK/AOuX8\nm37EYYPpSsr6V9jPrAt9WL1uPvoEsy1P456EgRjlewBFeqv2/UIOkX0VuB+INWLsscF1U50qkg6c\nwqgGbIeZj76MwaOpiR1dPaRUkSzFWrcin2jFL79EqGC+FngdC5FmhD02+CqWV0uki0106pmtrbYI\nF8JHX7LGOjUZWnxlfnQn9NdeuM1UPpp+r0CoYN4xOlrC+TvGp9hjg9eNz+0nlfZlFWM10BvZWxYn\nd7oBWp120Ihre7W0YVmCuUME+Hkb6u6qNodlJj7FousQR59gD5J100LLQU4Cxenikx99VoexXIH7\nUbGOvq87ghh4MBh20FjTUVnRG3673Tr4wTTN0xbr6HtHmv+tjxR4m4qtGiAt/OlNbx3p7lfS69u2\nfqHPiL86/fFyJ3YFyGN9xnwFRNtDHmoHrsSOFruMkiXlHuieXdUleKCwLCkj484VZKD5eyS7WlL2\nWJz/qUsreP/4cWHwseJFw9Hpir94w5syt1IUWlABJCMG158FnUt3GzIhH+1OASTRMPpoAaqJdEvm\n5k+CWwBJOIQ+YyJzBuolmfp3Vrp9h2XUIPrn6RK9AcVhThoiq1MADYKiS44xxtMb2EVv9D/2fcct\ngLqMGgRMF3KShbwy8+LDx+gekBCvmKcAYncozTec9Sccxu1RIobWoKZHYcfhA2n4AdPFmW6sqkgY\naw0k7RaSMPMsBcbLVA0Pk/k0sSVGsBdKLSeYebWFErq8TQzzwDGqwnNF0qncHJJM0Dp/vHuijruQ\nyxNnZGRIxHgWSNNOrlO9mxSk2cqwmDMlP5N1evqxcCwqwH0y6bNCNc76sutNnxmqseTLrrYtvs85\nYCNe8Cac8Rph6v8CBa86+Ck7qlwAAAAASUVORK5CYII=\n", "prompt_number": 4, "text": [ " \u239b 2 \u239e \n", " n -n -\u03c4\u22c5\u239d-2\u22c5Sx\u22c5\u03bc + Sxx + \u03bc \u22c5n\u23a0 \n", " \u2500 \u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " 2 2 2 \n", "\u03c4 \u22c5(2\u22c5\u03c0) \u22c5\u212f " ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our transformation $\\phi$ is $x_i \\mapsto bx_i+a$ and so $S_{xx} \\mapsto \\sum_i (bx_i+a)^2 = b^2S_{xx} + 2abS_x + na^2$ and $S_x \\mapsto \\sum_i bx_i+a = bS_x+na$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def phi(a, b):\n", " def func(Sxx, Sx, n):\n", " return b*b*Sxx + 2*a*b*Sx + n*a*a, b*Sx + n*a, n\n", " return func\n", " \n", "a, b = sympy.symbols(\"a b\", real = True)\n", "density(*phi(a,b)(Sxx,Sx,n),mu=mu,tau=tau)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{\\tau^{\\frac{n}{2}}}{\\left(2 \\pi\\right)^{\\frac{n}{2}}} e^{- \\frac{\\tau}{2} \\left(2 Sx a b + Sxx b^{2} + a^{2} n + \\mu^{2} n - 2 \\mu \\left(Sx b + a n\\right)\\right)}$$" ], "metadata": {}, "output_type": "pyout", "png": "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\nTkSuQmCC\n", "prompt_number": 5, "text": [ " \u239b 2 2 2 \u239e \n", " n -n -\u03c4\u22c5\u239d2\u22c5Sx\u22c5a\u22c5b + Sxx\u22c5b + a \u22c5n + \u03bc \u22c5n - 2\u22c5\u03bc\u22c5(Sx\u22c5b + a\u22c5n)\u23a0 \n", " \u2500 \u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " 2 2 2 \n", "\u03c4 \u22c5(2\u22c5\u03c0) \u22c5\u212f " ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our transformation $\\psi$ is $\\mu\\mapsto b\\mu+a, \\tau \\mapsto b^{-2} \\tau$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def psi(a, b):\n", " def func(mu, tau):\n", " return b*mu+a, b**(-2) * tau\n", " return func\n", "\n", "density(Sxx,Sx,n,*psi(a,b)(mu,tau))" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{\\left(\\frac{\\tau}{b^{2}}\\right)^{\\frac{n}{2}}}{\\left(2 \\pi\\right)^{\\frac{n}{2}}} e^{- \\frac{\\tau}{2 b^{2}} \\left(- Sx \\left(2 a + 2 b \\mu\\right) + Sxx + n \\left(a + b \\mu\\right)^{2}\\right)}$$" ], "metadata": {}, "output_type": "pyout", "png": "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\n", "prompt_number": 6, "text": [ " \u239b 2\u239e \n", " n -\u03c4\u22c5\u239d-Sx\u22c5(2\u22c5a + 2\u22c5b\u22c5\u03bc) + Sxx + n\u22c5(a + b\u22c5\u03bc) \u23a0 \n", " -n \u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " \u2500\u2500\u2500 2 2 \n", " 2 \u239b\u03c4 \u239e 2\u22c5b \n", "(2\u22c5\u03c0) \u22c5\u239c\u2500\u2500\u239f \u22c5\u212f \n", " \u239c 2\u239f \n", " \u239db \u23a0 " ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Unfortunately, our \"hack\" means we can't automate the calculation of the determinant. We have $\\phi:\\mathbb R^n \\rightarrow \\mathbb R^n; (x_i) \\mapsto (bx_i+a)$ so $J(\\phi) = bI_n$ and hence $\\det J(\\phi) = b^n$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "rhs = density(*(phi(a,b)(Sxx,Sx,n) + psi(a,b)(mu,tau))) * sympy.Abs(b)**n\n", "sympy.simplify(rhs)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{\\tau^{\\frac{n}{2}}}{2^{\\frac{n}{2}} \\pi^{\\frac{n}{2}}} e^{\\frac{\\tau}{2} \\left(2 Sx \\mu - Sxx - \\mu^{2} n\\right)}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAANcAAAAvBAMAAACCkkLyAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAmYl2MiKrRFS7Zt3v\nzRDUtvbGAAAEEElEQVRYCe1XXYgbVRT+JpuZZDPJ7LapIP6R7YJgoUvYtWtdEWfBv4dKsw/dl1I2\nrAu2ICW0D6UU2ylFaJ+MKP49bQt2sSCsoigIGvTBPojkxQf7UMYfhEK1sT+sVNh4zr0zc2eyye42\nmbx5IHO/7zvnnnPn3pk7N0DEzp+5GOF9JWeq2b7mjyQ37AMR3ldiYupkXwuEk1/DhcUw/x93MwND\nTbJGNz276ZMaf7ubbvfYR6NbugnksOceO24Q3nb0+ecW9pUA0x1yO3RPFTs41pXV6JeCuJSDqiQn\nAq0FPN/CN0fV6DVb9UiWBbZ+UlIUXQVG3nGB6e1TdtTDrL3KnmD0dWbSEoui/cOVNHQ98cNXJA4U\noblaHalhnAo5PdheZaca/QXVzbSF65FfleQh5xiDrAuzpN+GCQyuCemgcpwa/XXVbU5As/mvknw0\nxuA1qudYK7jhIuM7VNteJb+lRj/oBPFPBWgNEJO9leX0KsxvKwRGX5m09WUc9GOFmpg8uiA8nrof\nhiNGf/6J8TKQGPajMR+gVmBVWbnCl1wB1kNNBwn3UNbJ1HGbRTahjhnVy8IjNXyMIVs4l+7iMxqp\nGLTnW7/5nt2P8mW2hhTXNgp6g7k0Uiu5RenxpHnItdF/q+MOkKp5+jqN2C+BFQrJ0I1VYHEJ6mxW\nMlWce5/M9dShkvRIEV/gI5nXKHKhZGhoUm9zlTsOFzuCZ9MOklXqWEvSo2KM2TLeU/fAFh4pWquY\n/13ArK0NVzZXTO44l6nCe2cPa1UMlrA3UU/gDcyd5VshE2qysRMF4ZFiuqH/87qAc8i+YG9qGr39\n8gN69Onzo01vuQ+4tjs/hgfzUy/LtBCq9dbpcVd4pKp9MnGxKOBxaDtoEepedIdmZpQyyx1nZE3I\nl2uUqGA6UR569KMOydKfY4aQ2HGCLc4PpCVZ3+hFj1iuEqGtZK6CbaSJHSfrLU8Qk9xgVvBSECrB\n9RbeQl+9NEEl5I5Dj32PNgrwqaOD4W+R3tsv6RPTk1kbzMStcPbZMOkCG63r0JLjO/qMBZJeDGBX\n4PGgV+b+qXJA4LOnYYlHX3liQeknUVOJfJbITygxRrSgh9cvymIsM/Pwu5RteWDJVUmjTOm9Ir2M\nZxxY1QztXr5Fma/G0Bp0kGnEkGdTKbI/wliRr3YQL17ygMUIcqvQ6MN49DE7lDTKQo7eoUn7dz1Z\no0T896JZ9lnvmdtk2FsAvgZ/MfIv7rq0j1rJ2oT2Lv3MKVLL9HMGSrtEPmZ9MTpAkP1Z4usgytx4\nTMB4L5Oczjosks5C3JLH4q3D2dLDoGX65a8CkwfQ4MZjDOO1aeBD4Jsm3xKdK8SJWrJ463A2/dPt\nI2LqmAwsg/5Y989MerOCYnRYf7N/pfAf2VAk42EwpdYAAAAASUVORK5CYII=\n", "prompt_number": 7, "text": [ " \u239b 2 \u239e\n", " -n -n n \u03c4\u22c5\u239d2\u22c5Sx\u22c5\u03bc - Sxx - \u03bc \u22c5n\u23a0\n", " \u2500\u2500\u2500 \u2500\u2500\u2500 \u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " 2 2 2 2 \n", "2 \u22c5\u03c0 \u22c5\u03c4 \u22c5\u212f " ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "lhs = density(Sxx,Sx,n,mu,tau)\n", "lhs" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{\\tau^{\\frac{n}{2}}}{\\left(2 \\pi\\right)^{\\frac{n}{2}}} e^{- \\frac{\\tau}{2} \\left(- 2 Sx \\mu + Sxx + \\mu^{2} n\\right)}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAPIAAAA4BAMAAAA1NbhFAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAmYl2MiKrRFS7Zt3v\nzRDUtvbGAAAEr0lEQVRYCe1XXYgbVRT+Jj8z+Z3sTwuKSrNdUBRcgrsuulLMggqCslmk+6Dghrai\nQinR9aGg0hER1gcxIGr1KYi1KAhRFH0oNWjFglgDPojClikIUrFuxGr7tOu5Z+bOTzJJdmsmIPRA\n7j3nO+eeL/fO3Dv3AD5JXTNX9gFDMxJ3ojE0Mj/RgXjTDwzNqkePm0Mj8xLp1dQtXvuqHuYKbAoJ\nk6B77pWbi92d4Xh20WTzQDPWCCc/Zw2alzKzdO9e8p7ERh/mlT7+Xm5nXqmKE3YYSUvX6g4WqMTK\ngfDWQHdeOzwD7rP0CyUPFqBmTQlOvEHq/O65ogScPjY2+a5j+BRnXlkPbJ0g+iEP5FO1E9+eJGBa\ngoqpNKGN4IgEuDdE+xS0Flt2YziGM69U3sHwCavn/vBArpO0hMbP5owE06X4RaQhn5INV0VfB7iX\noY7hzktvSCfiLVa/2KRhwRIxCdea0pkx9EtYN5GSAPeCRKeXtOZFBcjimddRiSHalVGG8KNR8tKk\nVdhA+ssKEJldOYBHoBrkYpITN5E2+fhskT0WGK/jCYh5pcZXbiT3BP0sUfNS69afF45szXVn89Cv\n3zQwpVZP40PkiuRi5nPfX0bEfDJjsMcCU01c5KG/HamlKfIVNrbRZGiOUsRfx1IDFfF39mFZmMyM\n+EFo+BmWxwLVvP08H92DXAl4TkT3kZffIjEhTvQWcsRsA/R66hXoLXCmz/A+1LW179Z+wK/AOuX8\nm37EYYPpSsr6V9jPrAt9WL1uPvoEsy1P456EgRjlewBFeqv2/UIOkX0VuB+INWLsscF1U50qkg6c\nwqgGbIeZj76MwaOpiR1dPaRUkSzFWrcin2jFL79EqGC+FngdC5FmhD02+CqWV0uki0106pmtrbYI\nF8JHX7LGOjUZWnxlfnQn9NdeuM1UPpp+r0CoYN4xOlrC+TvGp9hjg9eNz+0nlfZlFWM10BvZWxYn\nd7oBWp120Ihre7W0YVmCuUME+Hkb6u6qNodlJj7FousQR59gD5J100LLQU4Cxenikx99VoexXIH7\nUbGOvq87ghh4MBh20FjTUVnRG3673Tr4wTTN0xbr6HtHmv+tjxR4m4qtGiAt/OlNbx3p7lfS69u2\nfqHPiL86/fFyJ3YFyGN9xnwFRNtDHmoHrsSOFruMkiXlHuieXdUleKCwLCkj484VZKD5eyS7WlL2\nWJz/qUsreP/4cWHwseJFw9Hpir94w5syt1IUWlABJCMG158FnUt3GzIhH+1OASTRMPpoAaqJdEvm\n5k+CWwBJOIQ+YyJzBuolmfp3Vrp9h2XUIPrn6RK9AcVhThoiq1MADYKiS44xxtMb2EVv9D/2fcct\ngLqMGgRMF3KShbwy8+LDx+gekBCvmKcAYncozTec9Sccxu1RIobWoKZHYcfhA2n4AdPFmW6sqkgY\naw0k7RaSMPMsBcbLVA0Pk/k0sSVGsBdKLSeYebWFErq8TQzzwDGqwnNF0qncHJJM0Dp/vHuijruQ\nyxNnZGRIxHgWSNNOrlO9mxSk2cqwmDMlP5N1evqxcCwqwH0y6bNCNc76sutNnxmqseTLrrYtvs85\nYCNe8Cac8Rph6v8CBa86+Ck7qlwAAAAASUVORK5CYII=\n", "prompt_number": 8, "text": [ " \u239b 2 \u239e \n", " n -n -\u03c4\u22c5\u239d-2\u22c5Sx\u22c5\u03bc + Sxx + \u03bc \u22c5n\u23a0 \n", " \u2500 \u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " 2 2 2 \n", "\u03c4 \u22c5(2\u22c5\u03c0) \u22c5\u212f " ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Unfortunately, the following is a little distressing..." ] }, { "cell_type": "code", "collapsed": false, "input": [ "rhs == lhs" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "False" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "rhs - lhs == 0" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 10, "text": [ "False" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "sympy.simplify(rhs - lhs)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$0$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAAoAAAAOBAMAAADkjZCYAAAALVBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAEJl2Mt1EzasiVIlm7xEe\nOPwAAABJSURBVAgdY2AQMlZhYGAIYxB1YGAOYGAuYGBtYGB7ycCnwMDyimHeBgaWx2DyNRL5GCz7\nBqSS6yVIF3cAA0MUg6wDA4PQ5hYGAON0EpMbNABcAAAAAElFTkSuQmCC\n", "prompt_number": 11, "text": [ "0" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "sympy.simplify(rhs - lhs) == 0" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 12, "text": [ "True" ] } ], "prompt_number": 12 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "What we wish to be true" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Okay, so what about our inference, about the _posterior distribution_, do we wish to be true?\n", "\n", "$$ \\mathbb P(\\theta \\in \\Psi(A) | \\phi(x) ) = \\mathbb P(\\theta\\in A | x). $$\n", "\n", "Again, if we write $p(\\theta|x)$ for the posterior density, then this is equivalent to:\n", "\n", "$$ p(\\theta|x) = p(\\psi(\\theta)| \\phi(x)) |\\det J(\\psi)|. $$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By Bayes' Theorem, we want the following to be true:\n", "\n", "$$ \\frac{f(x|\\theta) p(\\theta)}{p(x)} = \\frac{f(\\phi(x)|\\psi(\\theta)) p(\\psi(\\theta))}{p(\\phi(x))} |\\det J(\\psi)|. $$\n", "\n", "By our assumption $f(x|\\theta) = f(\\phi(x)|\\psi(\\theta)) |\\det J(\\phi)|$, this is equivalent to:\n", "\n", "$$ \\frac{f(\\phi(x)|\\psi(\\theta)) |\\det J(\\phi)| p(\\theta)}{p(x)} = \\frac{f(\\phi(x)|\\psi(\\theta)) p(\\psi(\\theta))}{p(\\phi(x))} |\\det J(\\psi)|. $$" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "A little arm waving." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We need to deal with the terms $p(x)$ and $p(\\phi(x))$. Now, these are likely to be \"improper distributions\", much as we expect $p(\\theta)$ to be improper. Thus, $\\int p(x) dx$ may fail to be finite, and so we more correctly think of $p(x)$ as measuring \"proportional\" or \"relative\" probability: $\\int_A p(x) dx$ cannot be interpretted as a probability, but we can make sense of the ratio $\\int_A p(x) dx / \\int_B p(x) dx$ as the \"ratio\" of more likely $x$ is to be in $A$ relative to $B$.\n", "\n", "With that out the way, it still makes sense to transform $x$. Our philosophy is that $\\phi$ isn't \"changing\" the data, and so $\\phi(x)$ should be no more or less likely than $x$. Formally then, we want\n", "$$ \\mathbb P(x \\in A) = \\mathbb P(\\phi(x)\\in A). $$\n", "By change of variables, this means that\n", "$$ p(x) = p(\\phi(x)) |\\det J(\\phi)|. $$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Combining this with the above, what we hope to be true is that:\n", "\n", "$$ \\frac{f(\\phi(x)|\\psi(\\theta)) |\\det J(\\phi)| p(\\theta)}{p(\\phi(x))|\\det J(\\phi)|} = \\frac{f(\\phi(x)|\\psi(\\theta)) p(\\psi(\\theta))}{p(\\phi(x))} |\\det J(\\psi)|. $$\n", "\n", "This cancels down to:\n", "\n", "$$ p(\\theta) = p(\\psi(\\theta)) |\\det J(\\psi)|. $$\n", "\n", "Thus we have derived a relationship which the _prior_ should have!" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "For our example." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have $\\psi(\\mu,\\tau) = (b\\mu+a, b^{-2} \\tau)$ and so $|\\det J(\\psi)| = |b|^{-1}$. Thus we need\n", "\n", "$$ p(\\mu,\\tau) = |b|^{-1} p(b\\mu+a, b^{-2} \\tau) $$\n", "\n", "for all $\\mu,\\tau,a,b$. Set $b=1$ and $a=-\\mu$ to get\n", "\n", "$$ p(\\mu,\\tau) = p(0, \\tau) $$\n", "\n", "So $p(\\mu,\\tau) = h(\\tau)$ for some function $h$. Then set $b = \\tau^{1/2}$ to find that\n", "\n", "$$ h(\\tau) = |b|^{-1} h(|b|^{-2}\\tau) \\implies h(\\tau) = \\tau^{-1/2} h(1) \\implies h(\\tau) \\propto \\tau^{-1/2} $$\n", "\n", "as $\\tau > 0$. Thus $p(\\mu,\\tau) \\propto \\tau^{-1/2}$." ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Some comments" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Firstly, let's check that at least the posterior is well-defined." ] }, { "cell_type": "code", "collapsed": false, "input": [ "posterior = density(Sxx, Sx, n, mu, tau) * tau**(-1/2)\n", "posterior" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{\\tau^{\\frac{n}{2}}}{\\tau^{0.5} \\left(2 \\pi\\right)^{\\frac{n}{2}}} e^{- \\frac{\\tau}{2} \\left(- 2 Sx \\mu + Sxx + \\mu^{2} n\\right)}$$" ], "metadata": {}, "output_type": "pyout", "png": "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\n", "prompt_number": 69, "text": [ " \u239b 2 \u239e \n", " n -n -\u03c4\u22c5\u239d-2\u22c5Sx\u22c5\u03bc + Sxx + \u03bc \u22c5n\u23a0 \n", " \u2500 \u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " -0.5 2 2 2 \n", "\u03c4 \u22c5\u03c4 \u22c5(2\u22c5\u03c0) \u22c5\u212f " ] } ], "prompt_number": 69 }, { "cell_type": "code", "collapsed": false, "input": [ "int1 = sympy.integrate(posterior, (mu, -sympy.oo, sympy.oo))\n", "int1 = sympy.simplify(int1)\n", "int1" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{1}{\\sqrt{n}} 2^{- \\frac{n}{2} + \\frac{1}{2}} \\pi^{- \\frac{n}{2} + \\frac{1}{2}} \\tau^{\\frac{n}{2} - 1.0} e^{\\frac{\\tau}{2} \\left(\\frac{Sx^{2}}{n} - Sxx\\right)}$$" ], "metadata": {}, "output_type": "pyout", "png": "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\n9apexr8WMXIKCVfunQAAAABJRU5ErkJggg==\n", "prompt_number": 70, "text": [ " \u239b 2 \u239e\n", " \u239cSx \u239f\n", " \u03c4\u22c5\u239c\u2500\u2500\u2500 - Sxx\u239f\n", " n 1 n 1 n \u239d n \u23a0\n", " - \u2500 + \u2500 - \u2500 + \u2500 \u2500 - 1.0 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " 2 2 2 2 2 2 \n", "2 \u22c5\u03c0 \u22c5\u03c4 \u22c5\u212f \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " ___ \n", " \u2572\u2571 n " ] } ], "prompt_number": 70 }, { "cell_type": "code", "collapsed": false, "input": [ "sympy.integrate(int1, (tau, 1, sympy.oo))" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\begin{cases} \\frac{1}{\\sqrt{n}} \\left(2 \\pi\\right)^{- \\frac{n}{2} + \\frac{1}{2}} \\left(\\frac{2^{\\frac{n}{2}} e^{- \\frac{i \\pi}{2} n} \\Gamma{\\left(\\frac{n}{2} \\right)}}{\\operatorname{polar\\_lift}^{\\frac{n}{2}}{\\left (\\frac{Sx^{2}}{n} - Sxx \\right )}} + \\frac{2^{\\frac{n}{2} - 1} n e^{- \\frac{i \\pi}{2} n} \\Gamma{\\left(- \\frac{n}{2} \\right)} \\gamma\\left(\\frac{n}{2}, \\frac{e^{i \\pi}}{2} \\operatorname{polar\\_lift}{\\left (\\frac{Sx^{2}}{n} - Sxx \\right )}\\right)}{\\Gamma{\\left(- \\frac{n}{2} + 1 \\right)} \\operatorname{polar\\_lift}^{\\frac{n}{2}}{\\left (\\frac{Sx^{2}}{n} - Sxx \\right )}}\\right) & \\text{for}\\: \\left(\\left\\lvert{\\operatorname{periodic_{argument}}{\\left (e^{i \\pi} \\operatorname{polar\\_lift}{\\left (\\frac{Sx^{2}}{n} - Sxx \\right )},\\infty \\right )}}\\right\\rvert = \\frac{\\pi}{2} \\wedge - \\frac{n}{2} - \\frac{1}{2} > - \\frac{3}{2}\\right) \\vee \\left\\lvert{\\operatorname{periodic_{argument}}{\\left (e^{i \\pi} \\operatorname{polar\\_lift}{\\left (\\frac{Sx^{2}}{n} - Sxx \\right )},\\infty \\right )}}\\right\\rvert < \\frac{\\pi}{2} \\\\\\int_{1}^{\\infty} \\frac{1}{\\sqrt{n}} 2^{- \\frac{n}{2} + \\frac{1}{2}} \\pi^{- \\frac{n}{2} + \\frac{1}{2}} \\tau^{\\frac{n}{2} - 1.0} e^{\\frac{\\tau}{2} \\left(\\frac{Sx^{2}}{n} - Sxx\\right)}\\, d\\tau & \\text{otherwise} \\end{cases}$$" ], "metadata": {}, "output_type": "pyout", "png": "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\nAElFTkSuQmCC\n", "prompt_number": 71, "text": [ "\u23a7 \u239b \n", "\u23aa \u239c n -\u2148\u22c5\u03c0\u22c5n \n", "\u23aa \u239c \u2500 - 1 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \n", "\u23aa n 1 \u239c n -\u2148\u22c5\u03c0\u22c5n 2 2 \n", "\u23aa - \u2500 + \u2500 \u239c \u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u239b 2 \u239e 2 \u22c5n\u22c5\u212f \u22c5\u0393\n", "\u23aa 2 2 \u239c 2 2 \u239bn\u239e -n \u239cSx \u239f \n", "\u23aa(2\u22c5\u03c0) \u22c5\u239c2 \u22c5\u212f \u22c5\u0393\u239c\u2500\u239f\u22c5polar_lift\u2500\u2500\u2500\u239c\u2500\u2500\u2500 - Sxx\u239f + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", "\u23aa \u239c \u239d2\u23a0 2 \u239d n \u23a0 \n", "\u23aa \u239c \n", "\u23aa \u239d \n", "\u23aa\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", "\u23aa ___ \n", "\u23aa \u2572\u2571 n \n", "\u23aa \n", "\u23a8 \u221e \n", "\u23aa \u2320 \n", "\u23aa \u23ae \n", "\u23aa \u23ae \n", "\u23aa \u23ae \n", "\u23aa \u23ae n 1 n 1 n \n", "\u23aa \u23ae - \u2500 + \u2500 - \u2500 + \u2500 \u2500 - 1.0 \n", "\u23aa \u23ae 2 2 2 2 2 \n", "\u23aa \u23ae 2 \u22c5\u03c0 \u22c5\u03c4 \u22c5\u212f\n", "\u23aa \u23ae \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", "\u23aa \u23ae ___ \n", "\u23aa \u23ae \u2572\u2571 n \n", "\u23aa \u2321 \n", "\u23aa 1 \n", "\u23a9 \n", "\n", " \u239b \u239b 2 \u239e\u239e \u239e \n", " \u239c \u2148\u22c5\u03c0 \u239cSx \u239f\u239f \u239f \n", " \u239c \u212f \u22c5polar_lift\u239c\u2500\u2500\u2500 - Sxx\u239f\u239f \u239b 2 \u239e\u239f \n", "\u239b-n \u239e \u239cn \u239d n \u23a0\u239f -n \u239cSx \u239f\u239f \n", "\u239c\u2500\u2500\u2500\u239f\u22c5\u03b3\u239c\u2500, \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f\u22c5polar_lift\u2500\u2500\u2500\u239c\u2500\u2500\u2500 - Sxx\u239f\u239f \n", "\u239d 2 \u23a0 \u239d2 2 \u23a0 2 \u239d n \u23a0\u239f \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f \n", " \u239b n \u239e \u239f \n", " \u0393\u239c- \u2500 + 1\u239f \u239f \u239b\u2502 \n", " \u239d 2 \u23a0 \u23a0 \u239c\u2502 \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 for \u239c\u2502period\n", " \u239d\u2502 \n", " \n", " \n", " \n", " \n", " \u239b 2 \u239e \n", " \u239cSx \u239f \n", "\u03c4\u22c5\u239c\u2500\u2500\u2500 - Sxx\u239f \n", " \u239d n \u23a0 \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \n", " 2 \n", " \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 d\u03c4 \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \u239b \u239b 2 \u239e \u239e\u2502 \u239e \u2502 \n", " \u239c \u2148\u22c5\u03c0 \u239cSx \u239f \u239f\u2502 \u03c0 n 1 \u239f \u2502 \n", "ic_argument\u239c\u212f \u22c5polar_lift\u239c\u2500\u2500\u2500 - Sxx\u239f, \u221e\u239f\u2502 = \u2500 \u2227 - \u2500 - \u2500 > -3/2\u239f \u2228 \u2502periodic_\n", " \u239d \u239d n \u23a0 \u23a0\u2502 2 2 2 \u23a0 \u2502 \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " otherwise \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \u239b \u239b 2 \u239e \u239e\u2502 \n", " \u239c \u2148\u22c5\u03c0 \u239cSx \u239f \u239f\u2502 \u03c0\n", "argument\u239c\u212f \u22c5polar_lift\u239c\u2500\u2500\u2500 - Sxx\u239f, \u221e\u239f\u2502 < \u2500\n", " \u239d \u239d n \u23a0 \u23a0\u2502 2\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " " ] } ], "prompt_number": 71 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, `sympy` defeats me: I'm not sure how to tell it $|S_{x}| = |\\sum x_i| \\leq n^{1/2} S_{xx}^{1/2}$ by Cauchy-Schwarz and so $S_x^2 / n \\leq S_{xx}$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "alpha = sympy.symbols(\"alpha\", real = True, positive = True)\n", "int2 = (1/sympy.sqrt(n)) * (2*sympy.pi)**((1-n)/2) * tau**((n-2)/2) * sympy.exp(-tau * alpha / 2)\n", "int2" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{\\tau^{\\frac{n}{2} - 1}}{\\sqrt{n} e^{\\frac{\\alpha \\tau}{2}}} \\left(2 \\pi\\right)^{- \\frac{n}{2} + \\frac{1}{2}}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAJ8AAAA0BAMAAABm7vf+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAmYl2MiKrRFS7Zt3v\nzRDUtvbGAAADhElEQVRYCc1WT2jTUBz++i/tmjYt87LLXKcnd5DpNmFTsFMUBMGobAcvFhU8iFLw\nsMEQKvMiO6ygIHqQqYxdiygIgo6BKKJSGB4cbkYFL+o6PDhUaH15yXsvr2ajSXfwQZvv+/35kvfy\nviSAGPG2gZxghwT0i2L9mOW9g+c49A/ORMqieUJA36gUmjF48wYIasV4F9fDBggKMRP9j4I1cyB2\nk4zbG3OFF7dlxbT9TPkCa+8gl5YByuFZFvF1hfue2e2B3uEDQwQ/QZULHvuwieOGwUO7chQtFoqW\nGu61CmW3ggkCB638d92jIHdrgTYKQWtDa3xRG9Zlbi3WCT6g/ONypmElu5C5tU4wskLzT2slj4Lc\nrVRw/1zB7g95FfrnvFRQRJWMwG4o2u2MzjiJjesEXSqkENkER9tvsFAgC1w1DWrANGsNyuLi68V5\npAheYUXrH5cQyWFvgRWVGQCYW+kVMiLSa6BQNxQDKj/7XVHH3EoFGRHpNVDCQOINlFWW/saAcCsV\ndFpXlLigS0CyigAXbCmIItutVBCNWreV9qtVdJBl/wkE00LQdmuORhq17gKtPpIJ9I6fmNaBWJkL\nSm6VCC9xAc9p7B1G0RcieojO8iLJrRLhJS6ALl6gSDJFxUyHV3iR5FZKyKqsO8xWKriLgEhONblD\n0KTexwvSEktjCIGplNntmLJ3MbPjFvkNAtOoGKkswXFxUwhraIzfWTbGXj02rOJOMtn7WzpL2I1U\nhoSc28aqcPk/bq2ktdyxNPkoKYywsjFAJekSFtCSJsFknmXWOZ515lQ9/AjYzkIJnSHr6LCenHAw\n54ccuQQjXCKvaZaPZxiyjltl6soCBWc43DVzWteKPLTEkQk0fiYpLJOvMq1jwxJXdIm6kzYpzLe6\nHY10O9O9TrIG1kr1iejO6/UhLzw4hWj/UM8psuFad9AZJXHYi0B9LVnCoDKPShYTeiRtZlUjZdRX\neeADwIhaRCUfWYX5UjMH2c6+RixP2sgSGpU8Jg3l5b0+S0Z760sO2FMGQt2kedLAeaTSTOaLwZC3\nY/gzedrRp1w78FtLmdLm0DZ/soDnf+0XQF+0c4hXgwkiSDXV2h/PUnZDh06+hcl+WUWweCVUxkfd\nr5LddzJNzU8ew5FrBXT2sEn7llWqquG72a0x/OOyW7iJ2Hv56dSEkt06mW5eQ1JINntbnWp/AeFN\nCJqB9/zmAAAAAElFTkSuQmCC\n", "prompt_number": 72, "text": [ " n n 1 -\u03b1\u22c5\u03c4 \n", " \u2500 - 1 - \u2500 + \u2500 \u2500\u2500\u2500\u2500\u2500\n", " 2 2 2 2 \n", "\u03c4 \u22c5(2\u22c5\u03c0) \u22c5\u212f \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " ___ \n", " \u2572\u2571 n " ] } ], "prompt_number": 72 }, { "cell_type": "code", "collapsed": false, "input": [ "sympy.simplify( sympy.integrate(int2, (tau,0,sympy.oo)) )" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{2 \\sqrt{2}}{\\alpha^{\\frac{n}{2}} n^{\\frac{3}{2}}} \\pi^{- \\frac{n}{2} + \\frac{1}{2}} \\Gamma{\\left(\\frac{n}{2} + 1 \\right)}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAANIAAAAyBAMAAADb85jzAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIpnNu0SrdlQQ3e8y\niWbzIQYJAAAE/UlEQVRYCbVXXYgbVRg9k2wymdn8bFtpwZdEK1grttEsiBZsLP5Q8CEgUtSXwNJK\npdIUl11LcQ196YvQQUtFi+w8+FJQdkVQxB8WH0QoskEKimU1Cvqg1K7Vqlts1+9+d+bOncnMJpXs\nB5k553zfvSdz5869M0A0tqyKWI7K68D3r0OfsV0a1Vh5HcRUex06je3yjVh1aOLGrQ/7fW0DNOar\nwzobTbzUlp1ZLjQ2LAPVT9aB7U3rQhcaUxXDAqMfIntFdka3SWPDMlD9pFeQ8pxmAI2piv7A7CbX\nWAe1nL2CXIO4yxqxG41JIDO5Yfq52HaPa+piB8fomTVbrBHrG3Q7tci5QCF7L2YXNFFBs64gxpF/\njQbQlsp4kEhC+QtjeurMAvCEXcdsQ1cVfkChVB2w/gQusiJY37BDTnuo3iGbk6ErVZ2UVfGU0HaO\n4SznmKkqBX488TPjHB9DThm+sWQzoapDINX0aK6CDUC5UuwIQTIvpZ1O1EeZjfAx5JSuCG0rcN3i\nZPRg/O4pnwE/ANkVm69dsmgx5Rc2sRjjtMij8wmKK4XedkK5R8rGO0tfuUD+2nHBPSZT+tHGzJOC\nxzhtF7pxBYX6ywL1xiUp2bTJugR33Se4zwQOxSlc7AqBnfLHvtGSHwicmYfxaFtTNTgb1k9WtFwy\nlNck8p/PvX/g2Ws0Gv8mV2OvyNmVUEVazcWQnHuIYi9K8v1iorarVmtBEGCxCdBMNZdDDULkFE/L\nrBsS+5DMi49xBV+TJMIpS+Pp9jS1vH99+gA7rfVfetoijXMsspMkwolmGy0O0ci1PMVkp8xa4xtt\nC9spOUJkJ0mEEz3IpYrQQxFxyv8TyvaQlLgbzUB+iqE3IwQRThSz/gUw40PEyfo7SMWh27848hst\nHn5YdzOiG0PBxHMqd1nSDxEn0AxdIzJtc+yIlj/Ng+cJTDynxa5WJWHU6TLPVjFGMbEsbkkz6MO6\n480o8Z3aIiG7oFYiep2knnTc7G3CnLdXrwZ1koScgmSqVrv/vVqtKRQ593A5yIZQZno/8x3w/mIo\nGxDfqRtIHhr0mtINnmbWCtZ+DjyncquvU9KMMLAk2ppunznjOZU6/ZyM66qiuG2mqQjwZVWQdBd7\nNLEHbtz91y1CHK30pPzRS935xw5Kak9ubhLzern+4qTrsThdZ9m4dbzh530nj+f8TZf4If3LqYDS\nmN9mgHNK/snNMNWik2mF2hWWA+qaPzmKnUFZ4QFAjldRHATmEqpHqiph1YvfKYLi9KGA9EeWvJSP\nHBxuxFeXWvH6DavyhWS3g50JTvKVhvvlpUQ5CKbIAOBXv2bO8VH4/G2Y/n/mvyTnkx7QT7W+951f\nCJi/kQfK2qhQl3lvuvcU5+ZJspameGyrecH2PbhlqkOPrLeR9zRJECxv0botIW93KXGuYX1sETgL\nMVU7Ey3Ryt/ISRksnucys5lQ/QvpFr0UPmI6hDIu/RpvweLPQ15hSR0waN2iOA5jLK6B8S6p2WVg\nO79Mv0pFFtnwY+ht5HHNYjXrbZLzFRRjndJtypbqwIWjBOTHKNlkq8RCGznxvrGJLG5eWuIX9J7i\nZ4Qitpbv2wReeb1Dx1QVpa6D0EZOcv8wGrQUreq7ctDGohxdU5euSYC5VZeOox1ccjr0FXBVaEON\nLI3t4bzj91lu4HxuwWfDPd81fXTka9Xl08BNLyg2TPAfEHJdUKcFnyIAAAAASUVORK5CYII=\n", "prompt_number": 73, "text": [ " n 1 -n \n", " - \u2500 + \u2500 \u2500\u2500\u2500 \n", " ___ 2 2 2 \u239bn \u239e\n", "2\u22c5\u2572\u2571 2 \u22c5\u03c0 \u22c5\u03b1 \u22c5\u0393\u239c\u2500 + 1\u239f\n", " \u239d2 \u23a0\n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " 3/2 \n", " n " ] } ], "prompt_number": 73 }, { "cell_type": "code", "collapsed": false, "input": [ "def normalise_my_prior(alpha, n):\n", " return 2 * sympy.sqrt(2) * sympy.pi**((1-n)/2) * sympy.gamma((n+2)/2) / ( alpha**(n/2) * n * sympy.sqrt(n) )\n", "\n", "normalise_my_prior(alpha, n)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{2 \\sqrt{2}}{\\alpha^{\\frac{n}{2}} n^{\\frac{3}{2}}} \\pi^{- \\frac{n}{2} + \\frac{1}{2}} \\Gamma{\\left(\\frac{n}{2} + 1 \\right)}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAANIAAAAyBAMAAADb85jzAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIpnNu0SrdlQQ3e8y\niWbzIQYJAAAE/UlEQVRYCbVXXYgbVRg9k2wymdn8bFtpwZdEK1grttEsiBZsLP5Q8CEgUtSXwNJK\npdIUl11LcQ196YvQQUtFi+w8+FJQdkVQxB8WH0QoskEKimU1Cvqg1K7Vqlts1+9+d+bOncnMJpXs\nB5k553zfvSdz5869M0A0tqyKWI7K68D3r0OfsV0a1Vh5HcRUex06je3yjVh1aOLGrQ/7fW0DNOar\nwzobTbzUlp1ZLjQ2LAPVT9aB7U3rQhcaUxXDAqMfIntFdka3SWPDMlD9pFeQ8pxmAI2piv7A7CbX\nWAe1nL2CXIO4yxqxG41JIDO5Yfq52HaPa+piB8fomTVbrBHrG3Q7tci5QCF7L2YXNFFBs64gxpF/\njQbQlsp4kEhC+QtjeurMAvCEXcdsQ1cVfkChVB2w/gQusiJY37BDTnuo3iGbk6ErVZ2UVfGU0HaO\n4SznmKkqBX488TPjHB9DThm+sWQzoapDINX0aK6CDUC5UuwIQTIvpZ1O1EeZjfAx5JSuCG0rcN3i\nZPRg/O4pnwE/ANkVm69dsmgx5Rc2sRjjtMij8wmKK4XedkK5R8rGO0tfuUD+2nHBPSZT+tHGzJOC\nxzhtF7pxBYX6ywL1xiUp2bTJugR33Se4zwQOxSlc7AqBnfLHvtGSHwicmYfxaFtTNTgb1k9WtFwy\nlNck8p/PvX/g2Ws0Gv8mV2OvyNmVUEVazcWQnHuIYi9K8v1iorarVmtBEGCxCdBMNZdDDULkFE/L\nrBsS+5DMi49xBV+TJMIpS+Pp9jS1vH99+gA7rfVfetoijXMsspMkwolmGy0O0ci1PMVkp8xa4xtt\nC9spOUJkJ0mEEz3IpYrQQxFxyv8TyvaQlLgbzUB+iqE3IwQRThSz/gUw40PEyfo7SMWh27848hst\nHn5YdzOiG0PBxHMqd1nSDxEn0AxdIzJtc+yIlj/Ng+cJTDynxa5WJWHU6TLPVjFGMbEsbkkz6MO6\n480o8Z3aIiG7oFYiep2knnTc7G3CnLdXrwZ1koScgmSqVrv/vVqtKRQ593A5yIZQZno/8x3w/mIo\nGxDfqRtIHhr0mtINnmbWCtZ+DjyncquvU9KMMLAk2ppunznjOZU6/ZyM66qiuG2mqQjwZVWQdBd7\nNLEHbtz91y1CHK30pPzRS935xw5Kak9ubhLzern+4qTrsThdZ9m4dbzh530nj+f8TZf4If3LqYDS\nmN9mgHNK/snNMNWik2mF2hWWA+qaPzmKnUFZ4QFAjldRHATmEqpHqiph1YvfKYLi9KGA9EeWvJSP\nHBxuxFeXWvH6DavyhWS3g50JTvKVhvvlpUQ5CKbIAOBXv2bO8VH4/G2Y/n/mvyTnkx7QT7W+951f\nCJi/kQfK2qhQl3lvuvcU5+ZJspameGyrecH2PbhlqkOPrLeR9zRJECxv0botIW93KXGuYX1sETgL\nMVU7Ey3Ryt/ISRksnucys5lQ/QvpFr0UPmI6hDIu/RpvweLPQ15hSR0waN2iOA5jLK6B8S6p2WVg\nO79Mv0pFFtnwY+ht5HHNYjXrbZLzFRRjndJtypbqwIWjBOTHKNlkq8RCGznxvrGJLG5eWuIX9J7i\nZ4Qitpbv2wReeb1Dx1QVpa6D0EZOcv8wGrQUreq7ctDGohxdU5euSYC5VZeOox1ccjr0FXBVaEON\nLI3t4bzj91lu4HxuwWfDPd81fXTka9Xl08BNLyg2TPAfEHJdUKcFnyIAAAAASUVORK5CYII=\n", "prompt_number": 74, "text": [ " n 1 -n \n", " - \u2500 + \u2500 \u2500\u2500\u2500 \n", " ___ 2 2 2 \u239bn \u239e\n", "2\u22c5\u2572\u2571 2 \u22c5\u03c0 \u22c5\u03b1 \u22c5\u0393\u239c\u2500 + 1\u239f\n", " \u239d2 \u23a0\n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " 3/2 \n", " n " ] } ], "prompt_number": 74 }, { "cell_type": "code", "collapsed": false, "input": [ "sympy.simplify( int1 / normalise_my_prior(alpha, n) )" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{\\alpha^{\\frac{n}{2}} \\tau^{\\frac{n}{2} - 1.0}}{2^{\\frac{n}{2}} \\Gamma{\\left(\\frac{n}{2} \\right)}} e^{\\frac{\\tau}{2} \\left(\\frac{Sx^{2}}{n} - Sxx\\right)}$$" ], "metadata": {}, "output_type": "pyout", "png": "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\nAAAAAElFTkSuQmCC\n", "prompt_number": 75, "text": [ " \u239b 2 \u239e\n", " \u239cSx \u239f\n", " \u03c4\u22c5\u239c\u2500\u2500\u2500 - Sxx\u239f\n", " -n n n \u239d n \u23a0\n", " \u2500\u2500\u2500 \u2500 \u2500 - 1.0 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " 2 2 2 2 \n", "2 \u22c5\u03b1 \u22c5\u03c4 \u22c5\u212f \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " \u239bn\u239e \n", " \u0393\u239c\u2500\u239f \n", " \u239d2\u23a0 " ] } ], "prompt_number": 75 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Comparison with the Jeffreys prior" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The [Jeffreys Prior]() is one way to construct a \"noninformative\" prior which is \"invariant\": what this means is that you get given a prodecure to follow to construct a prior, and if you then transform your coordinates, and follow the procedure in the new coorindate system, then you get a prior which is the transformed version of your previous prior. (There is some category theory here: this is a \"covariant\" prior in the catgeory sense, not the stats sense, of the word).\n", "\n", "From [Duke lecture notes](https://stat.duke.edu/courses/Fall11/sta114/jeffreys.pdf) we find that $p(s) = s^{-3/2}$ if $s=\\sigma^2$. From [Berkeley lecture notes](http://www.cs.berkeley.edu/~jordan/courses/260-spring10/lectures/lecture7.pdf) we find $p(\\sigma) = \\sigma^{-2}$, though we're warned that this gives \"poor convergence properties\", though I don't fully understand what that means.\n", "\n", "Let's just check that there are consistent:\n", "\n", "$$ p_\\sigma(\\sigma) = p_s(s) \\Big|\\frac{ds}{d\\sigma}\\Big| = 2 s^{-3/2} \\sigma \\propto \\sigma^{-2}. $$\n", "\n", "My prior is in terms of $\\tau = \\sigma^{-2}$ and is $p(\\tau) = \\tau^{-1/2}$. Thus\n", "\n", "$$ p_\\sigma(\\sigma) = p_\\tau(\\tau) \\Big|\\frac{d\\tau}{d\\sigma}\\Big| = 2\\tau^{-1/2} \\sigma^{-3} \\propto \\sigma^{-2}. $$\n", "\n", "So, this agrees with the Jeffreys prior.\n", "\n", "For comparison, if $p_\\sigma(\\sigma) = \\sigma^{-1}$ then $p_\\tau(\\tau) = \\sigma^{-1} \\Big|\\frac{d\\sigma}{d\\tau}\\Big|\n", "= \\sigma^{-1} \\frac12 \\sigma^3 \\propto \\sigma^2 = 1/\\tau$." ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Convergence" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior distribution is then\n", "\n", "$$ p(\\mu,\\tau | x) = p(x | \\mu,\\tau) p(\\mu,\\tau) = \\Big(\\frac{\\tau}{2\\pi}\\Big)^{n/2} \\exp\\Big(-\\frac{\\tau}{2} \\sum (x_i-\\mu)^2 \\Big) \\tau^{-1/2}. $$\n", "\n", "With $\\alpha = S_{xx} - S_x^2 / n$, from the above calculation, the normalised posterior is\n", "\n", "$$ p(\\mu,\\tau | x) = \\frac{\\alpha^{n/2} n^{3/2}}{2\\sqrt 2} \\pi^{-1/2} \\Gamma\\Big(\\frac{n}{2}+1\\Big)^{-1} \\Big(\\frac{\\tau}{2}\\Big)^{n/2} \\exp\\Big(-\\frac{\\tau}{2} \\sum (x_i-\\mu)^2 \\Big) \\tau^{-1/2} $$\n", "\n", "What I do below is generate some samples from $N(0,1)$ to compare this distribution with the one from using the prior $p(\\sigma) = 1/\\sigma$.\n", "\n", "Firstly we find the normaisation for this new prior, repeating the work above." ] }, { "cell_type": "code", "collapsed": false, "input": [ "posterior = density(Sxx, Sx, n, mu, tau) * tau**(-1)\n", "sympy.simplify( sympy.integrate(posterior, (mu,-sympy.oo, sympy.oo)))" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{1}{\\sqrt{n}} 2^{- \\frac{n}{2} + \\frac{1}{2}} \\pi^{- \\frac{n}{2} + \\frac{1}{2}} \\tau^{\\frac{n}{2} - \\frac{3}{2}} e^{\\frac{\\tau}{2} \\left(\\frac{Sx^{2}}{n} - Sxx\\right)}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAUUAAAAxBAMAAAC/nqYNAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAuxCrdpnvzWYiRFTd\niTI+ha3zAAAFb0lEQVRYCc1XXYgbVRQ+mWx+Jj+TKBVawTpV14IorgoWFrpGdi1b6toouyiU6uKD\nWkQaRRv1KaJiFVojKlJENsqqIH0I2NIHC459KBUU03VXRQmk+IMiZdd9s1rXc8+d+zM/iaFonMvu\nvef7vnNnvty5uXMCEIU2f7rTh42Y3UfSv5qS0O5YsWa7XHtY8cbl2gxF/5fRRu3iJ2BVQ3poFQUy\nbrrFFvGAxkRTv1HG0ZEef6jATlvFA4neZnfJLC5yq5vr3W4aU59l4B4/ZabegjiZM27sZhFMR0qD\n9pgtslvvhyw5GL6iJZ34g/WS6Mtj90/LrxO35fW8QWZiVBKHH/gM02I1Rmxe14Gf28/AF2sOg7xZ\nuxcPihjHYzLux+PZPTI9NLC+ogcXoqUahyXb/ICF19tEvPk01M7kKZTdu5BZkUBmItOPR6A9pE33\nh7luHk1oq9wFFh5nnVnHHQkTLNSaA1DUYK4mQLjH9K7JEZGBY9Dj80ee1XTdo1c5W1FpFH7JcLoJ\nd0BrY1ppGBl4VNY0Jl4WINxj9laYpYwm9UGPR4pJUvjW1z0KhWSA990RPRRZuJV1+al2A9a3D7JY\ntZPfYrw4Ot7Jj8+PYRLlMzncI4yZFZrM84Ie4503SI9Rr3sUCgl5KNQpkN3jMgoEw3v/gLx9Q7K5\nEC8+jIvtiIwuHp2hl2yW0s1jDibfYXrQo1CYClfDHI3YFdawAZximIWyiQTcpjdDBp4EaKRqSGZn\nXWVm7xMM+5tRTH9DHHn84ZGmP2ETHKgxjjxa275TulCISU/gQ/M08uhhIHsRtovhGvwqo/A7/tPi\nS49a9ut3X6ohN+TrGOQFw9dRoJ4jr8NCPLqzPgI4A2DNWgA/QUd/1vKy5gjslMtFD4JJzCN7Sisy\njwJ6cIwjjyxb6FIhQld4HXaZSAyMdwJsgOV8JW+tfA0tgKFKIAXfFbkVd9ldMV6tPlj1bnJvwpbq\nvmq1FLgU7iX++DwKr8NmPJwO7p2ZqcOmHdMLxrqjUzZAYkRXKU7eD/FzkhUFcpExAkgVC5cpXgbS\nOgpAeg/gYMIL4iK+I1jQaoyVVOxGqVVIKI+iQCaPAmhzUrhnWCOPAhDTHVAdtkxJ2MkjWBD+Mdnx\nMwzn8KR3myiQySOBBNtbcvlzdsFmqeSRA5ZwHi/iKnQhDszdt9XxDKfKJNkgATtxBAvsH/ki+Nnl\nlmLcApk8AgPTv27ff0jpwIsF8ggEpn8ZO4RWOJCJLO143SwD8DosjxFv4ggW2D8u+QnCj2qsWyCP\nEIUg0xyqb9d04ykCceoZyDTdA99VeC4D5jlIdMCtw4xZLuCr0T2CXRwY9vjOejo7EkWV5ymQOYgB\nN8yTrrRVMnBgcT2gxB96Tvt0bW1er3CoHKaOa6SnQObgVXBUgnHXdQGQrzEqqBQ8d0vV1cRe0bVh\nYrYMar95CmQO7oEVNS239mcA5DqMCiqFEuNFc4sVAbuO/GzzyT8CvOijdIjl3V86DsayfPBJyRIA\n/on2vQh6jolGiGx+3l5yQnhBDTmAJ0uvdnsXEV9qw9oDNu0ueR7a1NEcO/fwO5PDztEFX5yqwSU+\nyge3+rCESxMlGV9QMHpBswY6qd8tPFBTvpslmj4igjD0GIqYz10R8xNix3BCyIhR+P6a3/DaeCti\ntjx2cDu2tpSMf3iDeKYMHExCpvEJGKoAH7iDnjfMNlB2wECDWVWA95wycHFbBX8flvCHxSrEMYxi\ns67CB5xDZ4kKFGp2FC1iMfobwAG0lmzBy3ZUv9j31eEEepxrwOlsJ5rrCHPlNFu+9wBe2RFRixBf\nzdlR9SZ8WeePijC6477HoutNOPu4LKLojv3+1P2/PsHfESJj/1e60sEAAAAASUVORK5CYII=\n", "prompt_number": 80, "text": [ " \u239b 2 \u239e\n", " \u239cSx \u239f\n", " \u03c4\u22c5\u239c\u2500\u2500\u2500 - Sxx\u239f\n", " n 1 n 1 n 3 \u239d n \u23a0\n", " - \u2500 + \u2500 - \u2500 + \u2500 \u2500 - \u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " 2 2 2 2 2 2 2 \n", "2 \u22c5\u03c0 \u22c5\u03c4 \u22c5\u212f \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " ___ \n", " \u2572\u2571 n " ] } ], "prompt_number": 80 }, { "cell_type": "code", "collapsed": false, "input": [ "int1 = n**(-1/2) * (2*sympy.pi)**((1-n)/2) * tau**((n-3)/2) * sympy.exp(-tau * alpha / 2)\n", "sympy.integrate(int1, (tau,0,sympy.oo))" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\begin{cases} \\frac{2}{\\alpha n^{0.5}} 2^{- \\frac{n}{2} + \\frac{1}{2}} \\pi^{- \\frac{n}{2} + \\frac{1}{2}} \\left(\\frac{\\alpha}{2}\\right)^{- \\frac{n}{2} + \\frac{3}{2}} \\Gamma{\\left(\\frac{n}{2} - \\frac{1}{2} \\right)} & \\text{for}\\: - \\frac{n}{2} + \\frac{3}{2} < 1 \\\\\\int_{0}^{\\infty} \\frac{\\tau^{\\frac{n}{2} - \\frac{3}{2}}}{n^{0.5} e^{\\frac{\\alpha \\tau}{2}}} \\left(2 \\pi\\right)^{- \\frac{n}{2} + \\frac{1}{2}}\\, d\\tau & \\text{otherwise} \\end{cases}$$" ], "metadata": {}, "output_type": "pyout", "png": "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\n", "prompt_number": 81, "text": [ "\u23a7 n 3 \n", "\u23aa n 1 n 1 - \u2500 + \u2500 \n", "\u23aa - \u2500 + \u2500 - \u2500 + \u2500 2 2 \n", "\u23aa 2 2 2 2 -0.5 \u239b\u03b1\u239e \u239bn 1\u239e \n", "\u23aa2\u22c52 \u22c5\u03c0 \u22c5n \u22c5\u239c\u2500\u239f \u22c5\u0393\u239c\u2500 - \u2500\u239f \n", "\u23aa \u239d2\u23a0 \u239d2 2\u23a0 n 3 \n", "\u23aa\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 for - \u2500 + \u2500 < 1\n", "\u23aa \u03b1 2 2 \n", "\u23a8 \n", "\u23aa \u221e \n", "\u23aa \u2320 \n", "\u23aa \u23ae n 3 n 1 -\u03b1\u22c5\u03c4 \n", "\u23aa \u23ae \u2500 - \u2500 - \u2500 + \u2500 \u2500\u2500\u2500\u2500\u2500 \n", "\u23aa \u23ae -0.5 2 2 2 2 2 \n", "\u23aa \u23ae n \u22c5\u03c4 \u22c5(2\u22c5\u03c0) \u22c5\u212f d\u03c4 otherwise \n", "\u23aa \u2321 \n", "\u23a9 0 " ] } ], "prompt_number": 81 }, { "cell_type": "code", "collapsed": false, "input": [ "def normalise_other_prior(alpha, n):\n", " return ( 2 / (alpha * n**(1/2)) ) * (2*sympy.pi)**((1-n)/2) * (alpha/2)**((3-n)/2) * sympy.gamma((n-1)/2)\n", "\n", "normalise_other_prior(alpha, n)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{2}{\\alpha n^{0.5}} \\left(\\frac{\\alpha}{2}\\right)^{- \\frac{n}{2} + \\frac{3}{2}} \\left(2 \\pi\\right)^{- \\frac{n}{2} + \\frac{1}{2}} \\Gamma{\\left(\\frac{n}{2} - \\frac{1}{2} \\right)}$$" ], "metadata": {}, "output_type": "pyout", "png": "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\n", "prompt_number": 82, "text": [ " n 3 \n", " - \u2500 + \u2500 n 1 \n", " 2 2 - \u2500 + \u2500 \n", " -0.5 \u239b\u03b1\u239e 2 2 \u239bn 1\u239e\n", "2\u22c5n \u22c5\u239c\u2500\u239f \u22c5(2\u22c5\u03c0) \u22c5\u0393\u239c\u2500 - \u2500\u239f\n", " \u239d2\u23a0 \u239d2 2\u23a0\n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " \u03b1 " ] } ], "prompt_number": 82 }, { "cell_type": "code", "collapsed": false, "input": [ "sympy.simplify( int1 / normalise_other_prior(alpha, n) )" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{2^{- \\frac{n}{2} + \\frac{1}{2}} \\alpha^{\\frac{n}{2} - \\frac{1}{2}} \\tau^{\\frac{n}{2} - \\frac{3}{2}}}{e^{\\frac{\\alpha \\tau}{2}} \\Gamma{\\left(\\frac{n}{2} - \\frac{1}{2} \\right)}}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAKkAAAA6BAMAAAA5CWTxAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIpnNu0SrdlQQ3e8y\niWbzIQYJAAAEaElEQVRYCe1YW4gbZRQ+mTizM5Nrt75vRLCuKKyuKD45D7pU8CHgDQUx4AVqV42o\nDVW6BhHqY7BFKSKdFXyoVroiKIpCFKzQunRpxT6U1Vis+GKJBS8VdT2X/5/5JzMTgvqg0PNwzvku\n/8lkMpd/F2BMbMvX8iS782D+IlZW38415ErF5j25i5SwnG/IkwqwnlpUvXypxWSXs7k0klgBQzq9\n+zvhOK/OGUBa90lY4S7gbCyFSBKnIe0OSsJJvs0E0i8W5KMChsZSAC2J0ZCc/mbhKFegVo+R6sKp\nMz1qA8bGUgAtsWKeAR+W7hYS8ysww/30pTdHnBdUv2IQUP7soy4ViUhiaEp74YeBMgFUO4vUF1rw\nbDcidRPo5m9Wpwf+0L0J4xaADQpw5uffmb8eatgPo6kiPU/GXkIiG/qUQgDXlN4H56do7V1f9LkP\nKGvATBKZkr3rVnFQVqB4Hqx46lx5hR0BZQ2YSSJTKsJRcVCOgX8+Yg+A9AExArz1Hc0YUYfBkoXf\n9g8Av1fj64aFGBxbY4KTHXIJONshlqNN70NvgI0dYtJhhwBbPl7cVCcicetrcC0pKvawDVoMCXjv\nASxM9RArSYwI7K66rL2rheOsgRXEpGc+4Rg4Q4ArKuhIS1Bu8cqX6DN1aLBDE1hf3LcWIwa1AODU\nzkwJKgMye7OvUpHQwG3AJs3BoY0w6gXMtAG+7iKZlsDvk9nf+I2KhAafAHyjuYxaG+CxZvBEyS2f\nJRbeWj8eZgmKcxpQfaxsnrnY/HTcjnQ+XnThCJeAV3V2XnQywUTgkai70Fw4A//nM0Avmn87hv/N\nE1IOJj0ud2l2n/3mBwdM/x0miPvyZSEC45kcS6Pdc7gZce2mSaunvklJ74ZYD6f5NLMMR7pQSTz8\n9iSQsYSnTrUNJq+9AY7Qi92MRxGcfmpXy+S456nmXi7l0MTq2Tsfh72EDh9696GH8ZVfWMHX05k/\n4aC2RFWmmq++SMpvjrUAcInVwMkvz8GPKadM3Z93glJ+Jmiqg5uxJiKnbeMhj4RM9QcjdBryJo9u\ntyEATa1gIVepbzVoeiJkqhUkyDyg93w01QV4hnwzUPq0T40ZMrWKBzAmpk9ewqre89FUjPsp3Q6W\nbMQJqCicONfG1o73f1oxqrsM0wz13lBNXTA8WW359yxWczNNuFJ6O+Sqpl4jZG4uxDvgDM/2s526\n0GoDqKa+hqT8iKRufoPidWrVj+r9SiAvzmlBbwCNqVrKquOP9Re9RO8N1dTrmD++0NN6VIUrjD2v\nuAOe4gV6A6imPkCk1bPmommqUZydvukM5xPgyZWlOTWVt2l+PX1Iiht/vVa2dPQ8rtM3/syfch+h\nUtdL/dSKq6S+RGJMDqj1WXAzLnbmiu2chWNpZ43lopSElbn99QQ3ISiHbPwyw87ctxnCBNRW8lQz\nDlW4gxOMyLDw/xXuhc9TEnPVRoqfiHDxMMtbX9g2ahbu4lF6Uvw9XlnmH/ZqnXCzk075Z76/AMoE\nn4mH+JgCAAAAAElFTkSuQmCC\n", "prompt_number": 84, "text": [ " n 1 n 1 n 3 -\u03b1\u22c5\u03c4 \n", " - \u2500 + \u2500 \u2500 - \u2500 \u2500 - \u2500 \u2500\u2500\u2500\u2500\u2500\n", " 2 2 2 2 2 2 2 \n", "2 \u22c5\u03b1 \u22c5\u03c4 \u22c5\u212f \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " \u239bn 1\u239e \n", " \u0393\u239c\u2500 - \u2500\u239f \n", " \u239d2 2\u23a0 " ] } ], "prompt_number": 84 }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 85 }, { "cell_type": "code", "collapsed": false, "input": [ "def make_example(n):\n", " x = np.random.normal(size = n)\n", " Sxx = np.sum(x*x)\n", " Sx = np.sum(x)\n", "\n", " def posterior(mu, tau):\n", " return ( (tau / (2*sympy.pi))**(n/2) * sympy.exp( - tau * (Sxx - 2*mu*Sx + n*mu*mu) / 2 ) * tau**(-1/2)\n", " / normalise_my_prior(Sxx-Sx*Sx/n, n) )\n", "\n", " def posterior1(mu, tau):\n", " return ( (tau / (2*sympy.pi))**(n/2) * sympy.exp( - tau * (Sxx - 2*mu*Sx + n*mu*mu) / 2 ) * tau**(-1)\n", " / normalise_other_prior(Sxx-Sx*Sx/n, n) )\n", "\n", " return posterior, posterior1" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 86 }, { "cell_type": "code", "collapsed": false, "input": [ "posterior, posterior1 = make_example(10)\n", "mubins = np.linspace(-1, 1, 50)\n", "taubins = np.linspace(0.1, 2, 50)\n", "\n", "# Slow as our functions use sympy primitives not numpy primitives.\n", "Z = np.zeros([len(mubins),len(taubins)])\n", "Z1 = np.zeros([len(mubins),len(taubins)])\n", "for x, mux in enumerate(mubins):\n", " for y, tauy in enumerate(taubins):\n", " Z[x,y] = posterior(mux, tauy)\n", " Z1[x,y] = posterior1(mux, tauy)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 87 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.contour(mubins, taubins, Z.T)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 88, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAEACAYAAACnJV25AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd8HNW5v5+jLqt3yaqWi2zLcse94m6wgZgeQm4CCSTc\nhITcNJLchNz8cknPhQRCAqYFCIRQDNgYN7nh3otsS7J6s3rvmt8fIzvClu05M7OSdnUef9a7suY9\nczwafffd97znfYWmaSgUCoXCdXDr7wkoFAqFwl6UsCsUCoWLoYRdoVAoXAwl7AqFQuFiKGFXKBQK\nF0MJu0KhULgY1xR2IUS8EGKbEOKUEOKkEOKbVznuKSFEphDimBBikmOmqlAoFAojeFzn++3AtzVN\nOyqE8AcOCSE2aZqWcfEAIcRKYISmaSOFENOBZ4EZjpuyQqFQKK7FNT12TdNKNU072v26AcgAhl52\n2Grg5e5j9gHBQogoB8xVoVAoFAYwHGMXQiQBk4B9l30rFijo8XUhEGd1YgqFQqEwhyFh7w7DvA08\n2u25X3HIZV+rOgUKhULRT1wvxo4QwhP4F/B3TdPe6+WQIiC+x9dx3f92+ThK7BUKhcIEmqZd7jxf\nk+tlxQjgBeC0pml/vMph64D7u4+fAdRomlZ2lcmphw2Pn/70pw4Zd9Gil3n//TOWxljyqsY7GXI2\nn2q7eUd7W/58H65CO/nXAXs9e30c/CXapi9I263XPmKrtlnK5tQFjYQ/anR1mZ/v2rWHuf32twbu\n9RwEDzNcLxQzG7gPWCiEONL9WCGEeEgI8VC3WK8HzgshsoDngK+bmomiX2lsbGPfviIWLkwyPUZ9\nK+wphEXD5OxOc4qxpMoZ1eVByW4Yda+cXX+T+jDkfgj1Bdc/tgdjSeUUp6RsxoTrzxkVUmaf4eab\nR7FpUzatrR3mB1H0OdcMxWiatgsDcXhN0/7Tthkp+oX09FymTh1KQIC36TE+OQ+z4iBQYoh66imj\nlOGMkDvZ6b9Cyn3g6Sdn19/4hMDoL8Lx/4PZvzVsFk88zTRRQTnhRBiyEQJWjIANWTDWmMkVRET4\nMW5cJNu25bJ8ueTPSNFvqJ2nTsiCBQtsH/OTT7JZujTZ0hgfZcLNo+RszpLBSEbhcf3lnn/T2Q4Z\na3Xv1wYccT2vyYRvQ8aL0FZn2MQNN8YwltOcljrVihHwcZbsBD/LqlWj+OCDs4aP7/PrqbgCJexO\niCN+cTZvzmHJkuGm7bs0WJ8JN42Us8sggzGMlTPK+wiCRkDoGDm7q9DnQhSQAHGLIOMlKbMxjOUM\nGdc/sAcLk2BvETS3S5l9hptuGsX69VmG471K2PsfJewKiovrKS1tYNKkaNNjHCmBYB9IDjFu00IL\n+eQxAsl3g9N/g7EPytkMNCZ8Sw/HdHUaNkliGJVUUIdxTz/QGyZGwc58M5PUSU2NoKtLI8NKsF7R\npyhhV7B583kWLkzC3d387fCRCW89i0ziScAHH+NG9QVQuheG3yF3MoM0VVTQ1dEHC4XRM8EnHPLW\nGzZxx52RjOKspNe+dDh8ki07wX8jhGDlyhF89NE584Mo+hQl7Ao2bz7P4sXW4uvrs2Cl5NraGTIY\ng2Q45cyLMPIu8BwiZ3cdWuvq+OjrX+ePSUn8b0AAz6al8fZdd7H95z/n9NtvU56RQWe7hXjG5QgB\nqV/R/z8SmImzL03WF7atcNNNo/joo0xrgyj6DCXsgxxN09i2LZcbb5TMUexBZROcLoc5CcZtOukk\nk3OkMNq4kdYFZ16CMQ9Iz/FaZG7YwDPjxtHZ1sZjhYV8r7KS2159lVGrV9PR0sLxV1/ljVWr+L9h\nw7hwSi7l8JoMvx0Kt0BLtWGTEYykkAJaaTVsM2UoFNRBWW97xg2ycGEShw6VUF9v/LyK/kMiFUHh\nimRnV9PVpTFyZKjpMTbnwLxE8Ja4mwrIJ5gQAgkyblSyCzz8IGKy/CR7obmqio2PPUbe9u2sfuEF\nhi9Zcul70RMnEj1x4meOP/H667y6eDH3bdxI1Pjx1ifgHQzxSyD7bd17N2KCN3HEk0UmqYwzZOPh\nBvMTYWsu3GPM5Ar8/LyYNi2WbdtyWb06xdwgij5DeeyDnG3bcli4MAl9k7E5NmbDMsmEmrOcJQVJ\ngch4CUb/hx7GsEjGO+/wzLhxeAcG8rUTJz4j6lcj7d57Wf5//8erS5dScviw5TkAMOrzcO41KZMU\nRnMO4+mHAIuHwSaL4Zhly4azcaPF3ElFn6CEfZCzbVuupd2mmmZO2M9xRi4M09YAOe/qQmgBTdN4\n/0tfYssPf8gdb73Fiqeewsvf37B96p13ctOzz/LaihUUHThgaS4AJK6EyhNSO1FTSOEcZ+miy7DN\nsuH6z8nkDnV9jGXD2bjRwiqsos9Qwj6I0TSN9PRcFi40H18/XQ5e7iATyammiiaaiLmitP81yHkX\nomeBn/mUTIAja9dSdvw4Dx09SsKcOabGGHPbbax6/nneuPlm6567uzcM/xxk/sOwSQih+OFH0ZW1\n9q7KyDDw9YDjvVZxMsb48VE0NLRx/rzxNQFF/6CEfRCTmVmFh4cbw4YFmx5jcw4sSZaLjmRyjpGM\nwk3m9jv3Goy6T36CPagtKGDLD37ArS+/jKevr6WxUlat4qa//IXXVq7kwsmTlsZixF2Q/U8pk5GM\nIhO59MPlI3Sv3SxCCBYtSmbLFosxHYXDUcI+iNm0KZsbbxxmKb6++bx80a9MMuU2JTWV6bnrw1bL\nnagHmqbx4Ve/yvRHHyVynMkVxMsYc9ttLPvDH3h16VIqzpwxP1DsAqjPhVrjgmlG2JclWxN2gMWL\nh7FlS461QRQORwn7IOaDD85xs2xxlx60d8KOfLgxybhNBx3kkiMn7JlvQtIqSwW/jr70Eg1lZcz+\n/vdNj9Ebaffcw4InnuCfd9xBV6fxXaSfwc0DktdIee0JJFJJBY00GrZZOAz2F0NDm5lJ6ixalMzW\nrTl0dan2CgMZJeyDlIaGNnbvLmDpUvP1YQ4Uw7BgiJDQ2zzyiCCSIUhsMMp83dKiaX1xMZu//31u\nfekl3D09TY9zNSY/+CC+oaEcfekl84OMuFN/AzOIBx4MYxhZGN805O8FNwyFbRYc7oSEIIKDfThx\nwkKwXuFwlLAPUrZuzWHatFgCZWrsXj5GjnwYJptMRsiU6K3LhbrzEL9Y7kQ9+PjRR5ny0EP25J73\nghCCxb/+NdufeIKOlhZzgwydB42FUGdcdUcwkmzk0g+XJuvrIla48cZhbNuWa20QhUNRwj5I2bAh\nkxUrrNXX3parVw+UIZssudrr59+FYbfo4QoTZK5fT8mRI8x9/HFT9kaJmz6d6IkTOfjcc+YGcHPX\n/5/n3zVsMpwRZJOFJtFieLENwr5gQRLp6bnWBlE4FCXsgxBN01i/PouVKyWrdvWgtUOP186VKCPQ\nSCNVVBH3mRa51yF3HSSZWzRta2xk/SOPcNOzz1rOgjHCwv/5H3Y/+SRtjcbj3p9h2G1Swh5KGB54\ncIELhm0mRUNpAxTXm5mgzvz5iezYkUdnp/E8ekXfooR9EHKx/OqYi73TTLC3UG+9FiRRmPE82SQx\nDHfcjRm0VMOFQ3rtchNs//nPiZ81y9CuUjuInjCBxPnz2ffUU+YGiF8EVSehsdSwyXBGSMXZ3d30\nT1lWEltiYgKIivLnuJWkeIVDUcI+CLkYhrGS5pieBwsS5Wz0MIzEYm3+xxA731Qlx/KMDI6uXcvS\n3/9e2tYKC554gr2//z2t9SZcYndvSFiuf0oxyMVwjAyLhlkTdtC9dhVnH7goYR+EbNp03lI2DMCO\nPL2wlAw5nCdZStg36FvuTbDtJz9hzg9/iH9UlCl7s4SnpJC8ZAkHn33W3ABJqyD3A8OHDyOZAvLp\nxHiq5cIkfX3ESnmB+fMT2Wmle4fCoShhH2S0tHSwe3eBpTK9bZ16fH22RHy9miraaSeCSGMGWhfk\nb4SEFdLzqy8pIWfLFiZ/xVjFRLuZ+/jj7Pn972lvbpY3TlgBRduhvcnQ4UMYQgihFFFo+BQpYfrP\nMLdGfnoXmTs3kZ0781Q++wBFCfsgY9eufNLSIgkOlgiOX8bhEhgRqrfCM8p5sklmOAKD4Z/yw+AT\nCoFJ0vM7+uKLjL3jDrwDAqRt7SBy3DjiZ87k8PPPyxv7hOhliQu3GDZJJpnzGN+1KsS/vXazxMUF\nEhTkw8mTxhduFX2HEvZBxiefZLNkibVuSTvyYJ6Etw5wnvMkI3HevA2mvHWtq4vDzz/fb976Reb+\n6Ed8+utf09lmYpuniXBMjoSwg74+YjVEvnz5cDZsUF2VBiJK2AcZW7bkWG6DtyNfLs1RQyOH8wyT\nEfaCTRC/VHpueTt24OXnx9CpU6Vt7WTo1KmEpaRw8k3ju0kvkXSTvr5gMAieSBJFFNKB8V6tC5L0\nn6MVVq4cyYYNqj77QEQJ+yCiqqqZzMxKpk+PMz1Ge6fe8X5BknGbCirwwIMQDNb2bauHiiP6bkxJ\njr36KuPvv99Sxo9dzHzsMfb+4Q9osquUwSkg3KHKWG9TH3wIJ1yujG8otHRAnoU4+8KFwzh0qIS6\nOtUub6ChhH0QsX17LrNmxePlZTCPvBcOFENyCIRLZCDmkkMSEou1xTsg8gbpNMf2pibOvPMO4z9v\nrRmHXYxYvpyO5mZy09PlDIWAuMVScfZEhpGL8RxGIfRwmpXEliFDPJk1K57Nm1UZ34GGEvZBxNat\nOZayYUCvDyNTzRFMCHvhZl3YJDm7bh1Db7iBgKESDTwciHBz44ZHHuHICy/IG8ctgqKthg9PIok8\ncqVOMTfBejhmxYoRKs4+AFHCPojYutVaGzzQGyLLCLuGZkLYt5jabXr8739n/Be+IG3nSMbefjvn\nPvxQfhE17kYo3g5dxvLTE0iUzmefl6gvhFthxYoRfPxxtny4SeFQlLAPEi5caKSwsI5Jk2JMj9Ha\nAfuLYK7ExqRq9DZqIYQYM2iu0Cs6Rk6RmltLTQ15O3Yw+pZbpOwcjX90NOGjR5O7fbuc4ZAo8I3S\n+6EawA8/AgjkAsa3+adFQkkDVBpLme+VUaPCEALOnq00P4jCdpSwDxJ27sxj9ux4PDzM/8gPFMPo\ncJCp9JtPHokkGc9fL9kJMbOkqzmeXbeOYTfeiHdgoJRdXzBq1SrOfWA8ffESQ+fp6w0GSSCBfIy7\n4O5uMG0o7DG+t+kKhBAsWZLMpk2qyfVAQgn7IGH79jwWyKSy9DaGiTIC+eSRgIRR0XYYukDuJMCp\nt95i7B13SNv1BSndwi4drhg6T3+jM0gCieQjFzSfHQ+7C+SmdTlLlgxn0ya1gDqQUMI+SNi+PY/5\nsqp8+RgmhD2PPBKQSHov3q4X/pKgpbaWvB07SFm1Sm5yfURkWhpaVxflp07JGcbM1T12w/nsieRJ\neOwAs2wQ9kWLhrF9ex7t7SZbAypsRwn7IKC6upnz56uZPNl8fL2jSy/VO0dCo5tpppYaoog2ZtBW\nBzWZECEXX8/asIHEefMGZBgG9HDFiJUryfr4YznDwERw94JaY2GOUMLopINajCenz4jTS0RY0eSI\nCD+Sk0M4eLDY/CAKW1HCPgjYs6eQadNi8fQ0n79+rBTigyBUol9FEYUMJdZ4/fWyfXqdFHcvqbmd\n+/BDRg1Qb/0iw5cs4fzmzfKGUTOhbI+hQwWCeOIpwLgLHugNScFwwmLJl4ULk1QZ3wGEEvZBwK5d\n+cyVqQHQC7sLYI5E4yOAAgqIl+mWVLIbYmZLnaOro4OsDRsYddNNcpPrY5IWLqRg9275nqjRM6DU\nmLADxJFAgWScfUactQVU0IV961aLRd4VtqGEfRCwa1c+c2RiKL2NUaAvtMlQSIFcG7zSTyF6ltw5\n9u4lKCGBwDjzZRL6At+QECLGjqVgj3GRBiB6ppSwx5Mg5bGDPQuo8+Ylsm9fEa2txuvVKByHEnYX\np7W1g8OHS5g+Pdb0GJqm/+LLCLuG1i3sBgW3q1MPxUTPkJrbuY8+YuQA99YvkmwmHBMxGWrOQrux\nPqqxxFJGKe20Gz7FvAR9YdzKHqOgIB/GjAln3z7j9WoUjkMJu4uzd28ho0eHExAgkXx+GQV1+uJp\nssE9RqBvTPLEiwAMLmjWnAOfMPCNkJpbzpYtJPdRT1OrJM6bR8GuXXJG7t4QMhYqjho63Asvwgij\nDON9U5NDoEuDvFq5qV3OxSbXiv5HCbuL88kn2Zbb4O0thBmxeuEooxRTRCwSNVsuHNALf0nQUlND\nRUYGcTPkvPz+Im7GDIoPHaKjVbIaYuRUvam3QWKJk6r0KIT+aWyXxbox8+YpYR8oKGF3cTZuzGbZ\nMhuEXTKEXUQRQ5EI/5gQ9rwdO4ibORMPb/OfRvoS78BAwkaOpOTwYTnDiClQLiPssVKt8kBfGLca\nZ58zJ4G9ewtVPvsAQAm7C1Ne3khWVhUzZ0quel7G3iLdY5dBT3WUeDcwKeyJ8+U2M/U38XPmkC8b\njomcKinscdLCPjteXyC3QkiIL8OGhXDkiPEwkMIxKGF3YbZsyWHevERL9dfbO+FYGUyViKpoaJRS\nwlCjoZiuDr3YVcQkqbmVHD7c752SZImfOZOivXvljEJT9U1KHcaaY0cSRQ01tGI85DMxGnKqoVYy\nG/Ny5s5NYOdOFY7pb5SwuzBbtpy33AbvxAV9A4vM2msN1XjhhR9+xgxqs2BINHgZ3zmqaRoXTpwg\nKi3N+MQGADFTplBy5IickbsXBI803FHJHXciiJBaQPV0h0nReqE3K8yeHc9uqzEdhWWUsLswW7bk\nsGiRtcYaB4vhBsm+FSWUEI1E+YKK4xA2XuocjRcuoHV14R9jvkxCfxA2ciRN5eU0V1dLGo43XMIX\nIIahlFIidYoZcfp6ihVmz05g9+4CVZ+9n1HC7qLk5FTT3NzB2LFy6YOXc8CEsJfKCnvVSQiT87wv\nnDhBZFragOhtKoNwcyN64kRKZb32sPFQedzw4THEUGJC2K2moSckBOHl5U52tuQbl8JWlLC7KFu2\n6G3wrAqfeWE3WPgLdE80dJzUOS6cPEmkk4VhLhI9ebJ8ZkxYmpSwRzOUEuTiKtNj9YVyq862Ho6x\nmDupsIQSdhclPd16G7zWDjhXCeOj5OzKuCAn7DVnIHSM1Dkqz50jbNQouYkNECLHjaP8tLF4+SVC\nxkL1GcOHRxFFOeV00WXYJjYAPNwg3+JGpVmz4tljtfiMwhJK2F0QTdNsqb9+8gKMCAUfiWZGbbTR\nQD0hhBoz6OqAuhwIGiE1t+rsbEJHyNkMFMJHj6bijHGRBiAgHlqroa3e0OHeeOOHP9VUGT6FEPqn\ns4NyEZwrmDEjjr1Wg/UKSyhhd0Fycmro7OxixAiD4noVDpeCbAn3ci4QRrjxUr11uXpGjIdEPWCg\nKjub0OHWNl71F+EpKVScOSO3wCjcIGikXjfGIJFEUibRAxVgaoy+YG6FiROjyc6upqbGYu6kwjRK\n2F2Q7dtzWbAgyXJ8/XCJngInwwUuEIVE7KbmLASnSJ2js72duoICgpOS5CY3QBgSoS9oN5WXyxmG\njIZq48IeRbS8sA+1LuxeXu7MmhVPenqutYEUprmusAsh1gohyoQQveZaCSEWCCFqhRBHuh8/tn+a\nChl27Mhn3jxrYRiAo6XmhD2CSOMGtZl6jrYE9UVF+EVF4e4l15BjoCCEIGzkSCozM+UMg1P0YmkG\niSSScuQ6aEyJgUMl1hdQlyxJZvNm1Qe1vzDisb8ILL/OMds1TZvU/fiFDfNSWMCO+utdGpwsl184\nraCccMKNG9TlQoBcrn19cTEBTpa/fjmB8fHUF0nmFgYOg3rjzSwiiKACuU8FUf76mkpBndzULkd1\nVOpfrivsmqbtBK6XlOpcycQuTFlZA5WVTZbz13Oq9TZ4wT5ydhVUyAl7fa4uWBLUl5Q43cakywmM\ni6O2QHKHZuAwfaHZIGGEU0mlVGYM6OUFjlos9zJxYjTFxfWUljZYG0hhCjti7BowSwhxTAixXggx\n1oYxFSbZvbuAmTPjcXOz9l57/AKMl4ioAHR0N1IOJcy4UV0uBCZJnafBRYS9rlAyc0RS2L3xxhdf\n6pDLX5wYZV3Y3d3dmDcvUcXZ+wmJRLarchiI1zStSQixAngP6DXB+Gc/+9ml1wsWLGDBggU2nF7R\nk1278pkt28OuF46VyodhKqkkmGA8ZG6r+lwISJI6T0NpqfOHYuLiKNq3T87ILxZaKqCzVW/AYYBw\nIiingmCMd0mZGA1vnJSbWm/ceKPeB/Xuu+U2nw120tPTSU9PtzSGZWHXNK2+x+sNQohnhBChmqZd\nkUDbU9gVjmHPnkKefHKR5XGOlML9E+RsKqkgTCYM09YAXW3gLdGaCWiuriZijNyGpoHGkPBwmior\n5Yzc3ME3ChqLDYevQgmlikrA+AL1+Ch4fKvc1Hpj/vwknn32oPWBBhmXO71PPPGE9BiWQzFCiCjR\nnVcnhJgGiN5EXeF4Wls7OH68jKkyNXavwtEy/SO5DFVUyYVhmkpgSIxcayagra4Or4AAuckNMLyD\ngmitNbHF02+oLuwGCSWMKolNSqBvSiuuh8Y22cl9lrS0SEpLGygrU3H2vsZIuuMbwKdAihCiQAjx\nZSHEQ0KIh7oPuR04IYQ4CvwRuNtx01VciyNHShk1Kgw/P2tpgFXNUN0Mw+QcaaqoJMzojlPQhd1P\nPqTSWl+Pd6DxEr8DEZ+gIFpMC7vxraGhhFKN3CcDDzdICYeMCtnJfRZ3dzdmz05gl9WeewpprhuK\n0TTtnut8/8/An22bkcI0e/YUMEO21VEvXIyvy66/VlLJWFKNGzR2e+yStNXX4+3kHrtPcHAfeeyh\n0h47wLgIvRa/1Q9/8+YlsHNnPmvWqJyKvkTtPHUh9u0rYoZsc9JeOFYGEyTDMADVVBuvEQPQVAZD\n5E/U1tiIp5/BJh4DFC9/f9oaTIQohkTrn3QMEkIo1VSjIbfjaFykXivIKnPnJrJzp/LY+xol7C7E\ngQPFTJtm3WM/WQ5pkqmOXXRRTx1BBBk3aq0CbxP1bDQN4ebct65wczPXjMInTC8GZhBvvHHHnWaM\ntdW7yJhwOGMxFAMweXIMZ85U0Gg1YK+Qwrl/OxSXqKxsoqKiiZQUiayUq3DqAqRK7m9qoJ4hDJFL\ndWytls6IGfR4h0KLXGgliCBqqZGyGR0OZySTdnrDx8eD8eOjOGC1555CCiXsLsKBA8VMnhxjeWOS\npsGpckiV9NhrqCWIYDkjJezy+ITon3QkCCSIWslNSskhemZMc7uUWa/MnBnHnj2qD2pfooTdRTh4\nsJgbZFsd9UJ+Lfh76eUEZKilRi4MA9aE3RV6apr5P5j02GV3n3q46eJ+zgavfdaseD79VNVn70uU\nsLsIBw8W25K/fqZCj6/KUk89gUimILY3gpd8dou7tzcdLc5d67u9qQkPX8l3T9CvV7vcomsAgdRj\nrEFHT1LCINOGHSkzZsSxf3+RanDdhyhhdxEOHy5hyhTr2+zPVuo5zLI0UI8/kiLd2QLuklXG0HPA\nW+sslh/sZ1pqavANMfFpxd1Hv24S+ONPA/IZOCNCIMsGYY+NDcDNTZBvteeewjBK2F2AoqI6mpra\nSU62Hq8+W6l7arI00IA//nJGHc3gIS/s3mY39wwgmqur8TEj7B6++nWTwLSwh0KW8QScqyKEYNq0\nWPbvlyxTrDCNEnYX4GL9dasdk0AX9lEmMhDrqZcXdpMeu+nt+AOIlpoafIIlF5vBlMfuZ0HYM22I\nsQNMmzZUCXsfooTdBbCjscZFMqtglAmPvdGMxy5RpbAnviEhNFc5dzmipooKhoSZuNDu3qZCMY0m\nhH14iD0eO8ANN8Syf79KeewrlLC7AHv2FDJrlvVSvW2dUNoAiSYcyWZa8EV2MdDNVGZIUEICtfnO\nvZuxOjub4ORkE5Yasn1tfPGlBfnF5thAqGiC1g5p0yuYMiWGo0dL6epSC6h9gRJ2J6epqZ2MjAom\nT7a+cJpXA7EBeqqbLC004yMr7MINJLv7AAQnJVGTmyttN5CoysoidMQIeUOtq/u6Gccbb1pple6k\n5OGm3w9W2+QBhIUNISTEh+xs5/6k5SwoYXdyDh4sZty4SHx8rPdMyanRc5dl6aSTdtrxQrKqpHDT\nhUqSwS3smrSwu+GGN96mvPbEIMiV27R6VSZPjuHwYeN1bhTmUcLu5OzdW8jMmdYLfwGcr4ZhJsIw\nrbTijTdusreTSWEPSkigrrCQrs5OaduBQlVmpnmP3cSvrY/JcMywEP2+sIPJk2M4dEgJe1+ghN3J\n2b+/yJbCX6DvOk2U3DwK/xZ2adx9pFP3ADx8fAiMjaUqK0v+nAOAhtJSOlpbCYw18XPrbDa14OyN\nF220StsNC4Y8mxKQJk6M5qjVZqoKQyhhd3LsKiUAeiw13oSwd9COB57yhl6B0C6/IxJg6NSpFB84\nYMq2v8nfvZv4WbPMVahsqwNv+R+SB560I1/4JSFIf8O3gwkTojh+vMyewRTXRAm7E1Ne3khNTQvD\nh5tIPO+FwjqIM9G/op12PM20z/UKhFZzqhEzdSrFB52zn2b+rl3Ez55tzritDrzkhd0TT9qRT29J\nCLRP2OPiAmlr61St8voAJexOzMGDxUyZMtRyRceLFNZDnImOc+10WPDYzaVcxN5wg9N67AW7d5Mw\nZ44547Za/bpJ4oEHHWY9dpuqNwghGD9eee19gRJ2J+bQIXvqw4CebFFYp+cuy9JBh1wd9ot4BUGr\nuZSLmMmTKTt+nI5W+bhxf9JSW0v56dMMnTrV3ACttSY9dg86THjscYF6+V670s8nTIji2DEl7I5G\nCbsTc/RoKZMmRdsyVn0buAu9ZK88GkJy0wygN7KWaMzcE+/AQCLT0sjfudOUfX9xdt06ht14I55m\nKjsCNBbpfU8lEbhJt8cD8PbQ74kq+TXuXklNjeT06XJ7BlNcFSXsTszRo6VMmGCPsF9ohEgLbUTN\niAZ+cdBovk73yJtuIuPdd03b9wen3nyT1LvuMj9AQwH4W99lLEO0v74j2Q5SUyM4aUczVcU1UcLu\npNTXt1LQc263AAAgAElEQVRS0sAoM4VdesGasJuM8fvHQYN5YR9/332cevNNp6nN3lxdTf7OnaSs\nWmV+kH4Q9ig/sGu9My0tilOnyunokN+/oDCOEnYn5cSJC4wdG4GHmf3/vWDVYzeFf5weWjBJcGIi\nMZMnO43Xfua99xi2aBHegSYWMi7SUKhftz4kyg9KG+0ZKzDQm/j4QBWOcTBK2J2U48fLGD9esjHp\nNahogjCTYV833KTrkADgnwD1+dBlvsrU1K99jT2//e2A786jaRqH/vIXxn/hC9YGqs2CQPniYZ10\nyu8M7ibCD8ptEnZQpQX6AiXsTsrp0+Wkynacvga1rRAsXxodAC88aadN3tBzCPjF6mJlktG33gpA\nxjvvmB6jL8jbvp2WmhpSVq82P0hLpb6hKyBR2lTfa2BqZZxgb/3+sAu1UcnxKGF3Uk6dKic1NcK2\n8WpbIMhEVQAAT7xoM5EjDUDYOKg8ac4WPTd64S9+wbaf/GRA147Z/atfMeu738XN3d38IJUnICwN\nTDRUaaMNLzN7DdDf8GtsXMZQueyORwm7k3LqlB5jtwvrHrtJYQ8dB1XmhR1gxPLl+IaGcuL11y2N\n4yhKjx2j7Phx62GYiuMQNt6Uqe6xDwxhnzAhmmPHygZ8+MyZUcLuhFRVNdPU1E6cmW2iV6G2FQIt\neewmP6uHjYPK4+ZsuxFCcOMvfkH6f/83bY02BoNtYtcvf8n0Rx/Fw9vkBb5IxVHdYzdBO23yZZW7\nCbJZ2GNi/NE0jVK7cigVV6CE3Qk5e7aClJRwW3qcXqS5HYaYc+jwxZdWWunERCgkaiaU7DbVSakn\nSQsWkDB3Lpu+9z1L49hNbno6BXv2cMMjj1gfrHg7xJgrRdBII0Mwl/bk5wnNNnRRuogQgrFjI1Rm\njANRwu6EZGZW2Za/fpHWTjDbq8MNN3zxpYkmeePARPAYAtVnzJ28ByueeorMDz8ka+NGy2PZQXVO\nDv+6915ufu45vPws5pLW5UJ7gx66kqSddjrowAdzsTYfD2ixUdgBxowJ58yZCnsHVVxCCbsTcu5c\nJaNG2VPR8SItHeBtYV3PH38aMFeCl9j5ujdqEZ/gYFavXcu6Bx7o92bXzdXVvL5yJXN++ENGrlhh\nfcCibRC70NTCaSON+OFnruwD+n1hv7BHkJGhhN1RKGF3Qs6dq2TkSJs99g7zHjuAH/40YDK+PXQ+\nFKWbP3kPkhctYsyaNax/5JF+W5zrbGvjrTVrGL5sGdO/8Q17Bi3cCnE3mjJtpAE//E2f2hEe++jR\nymN3JErYnZCsrCpGjLDXY2/vMtfE+iKBBFKHycLdcYugcDN0msiF74XFTz7JhZMn2fjYY3S22TOm\nUdoaGnhj1Sp8Q0NZ+rvf2TNoZzsUbIT4pabMa6klABOF9rvxdNfvDzsZPTqcs2cr7R1UcQkl7E5I\nbm4Nw8w0J70GbgIzZbwuEUYYlZj8RQ1IgNBUyPvIwgz+jaevL19MT6c6K4sX586lOifHlnGvR1NF\nBa8sWkRAbCy3/+Mf1nLWe1KwCYJGQGCSKfNKKgkn3PTpNU2/P+wkPj6Q8vJGWuz+KKAAlLA7HbW1\nLbS1dRIePsTWcQXWam6HEU4lFj5ap3wRzrxs3v4yhoSFcfe6daTedRfPT5/u8Hoytfn5vDh3LkkL\nF7L6hRdw87AQ17qcc6/BqM+bNq+ikjDMh+66NNNl3q6Ku7sb8fFB5Oaaq8evuDZK2J2MvLxakpKC\nbU11hG6P3ZKwW/DYAUbcrsfZm+1LgRNCMPOxx7j3ww/55LHH2PDNb9remEPTNHK2buXFuXOZ9OCD\nLH7ySXt/Nm0N+ieZEXeaHqKCCsKseOzY77EDDB8eQnZ2/y5yuypK2J2M3NwakpLsDcOA/ovbadFj\nr6LSXDEw0Nu9Jd0MZ/9ufhJXIXbaNB46coT6oiJemDmT0qNHLY/Z2dbGyTffZO3s2Xz48MMs+8Mf\nmPWd79gw28vIeReiZ4Gv+V3GlVRY99gdIOzJySFkZ1fbP7DCTD8zRX9SWFhHfLx9O04v4uupb1Iy\nixdeBBFMOReIwmTzj/GPwsdrIO3r4G5xl+Zl+AQHc8fbb3Nk7VpeXbqUsJEjSV66lOFLlhA7bZrh\n0Eltfj6H/vpXjrzwAuFjxjDzsccYfdtt9sXTe6JpcOR3MOMXpoeoo44uughEvp3eRZraYYgDlCIx\nMYiCAps6ZSs+gxJ2J6O4uJ6hQ81nOFwNfy+9PZ4V4oijgALzwh51g76ImvESjHvI2mR6QQjB5Ace\nIO3ee8nftYvzmzbx0de/Tk1uLkkLFpC8ZAkJc+agdXbSXF1NS3U1zVVVl16XnzpFwaefknbffdy/\ndSsRY8bYPsfPkP8x0AWJN5keopACYokzncMOUN8KAfa+zwIQFxfI0aOqGJgjUMLuZBQV1TNnjv0d\ndAJsEPZ44imkgKncYH6QG/4bPrkHxnwJ3M3VNrkenr6+DF+yhOFLlrDk17+moayMnC1bOL9pE/uf\nfhpPX198QkLwDQnRn0ND8QkJIfXuu1nzj39Y30VqlEP/C5N/aCkOUkgB8Vi7X+rb9PvDbuLiAiks\nrLN/YIUSdmejuLie2Fj7QzEBXtBg2WOPZz/7rA0SPROCR8HZV2Dsg9bGMoh/VBRp995L2r339sn5\nDFGyW+8uNeIOS8MUUMB8Flgao77NcR67EnbHoBZPnYySknqio83vIrwadlTwiyKaWmppNLsD9SI3\n/AwOPAGtgzT+qnXB3sdh8g/Azbzv1U47pZQQi7VWejUWavVfi6FDAygurlflex2AEnYno6KiyfYc\ndoAYfyixWEXVHXeSSSaTcxYnMwsSlsOeH1gbx1k5+gfQOvVwlAXOk000MfhisudhN8X14IBlHXx9\nPfH0dKPeagxQcQVK2J0ITdOorGwmzGxz0msQ4w8lJmt49SSFMZzFeqVGZv0Gcj+A4h3Wx3ImKo7B\nkV/B4lcteesAZznDaKwv8BbXQ6wDhB0gIsKPigoTVUEV10QJuxPR2NiOu7vA19dk4fRrMDQAim3o\nezCKFLLJogOLW8W9g2Hen2Drg9DRbH1izkBHM3xyL8z+HQQOszSUhsZZzpDCaMvTKnKQxw4QHj5E\nCbsDUMLuRFRWNhEWZn8YBvRf3CIb1rH88SeSKM6TbX2w5FshfALs/ZH1sZyB3d/ROySNus/yUMUU\n4YW3pRoxF3G0sJeXD7yuV86OEnYnora2lSBHrGIBUf7Q2A51Nuy4T2M8RzhsfSCA+c9A/gY4+Et7\nxhuoHP6NHnZa8Bdbtnke4TBpmGuj15O2Tv0NP9H8/qZrEhzsQ22tvWUeFErYnYrGxjb8/R2T2+0m\nICUM7CiRPYGJZJNFHTZ8BPCNgFu2wtmXdfFzRc68DCf/DKs26iEoi7TSygmOM8XKfoJuzlVCUjB4\nOygx2s/Pk8ZGtXhqN0rYnYjGxnb8/Bwj7ABjI8CONpQ++DCONA5x0PpgAH4xurifek7PGHElcj+C\nT78Pqz4G/1hbhjzBMZJIIshCGYGLnCrX7wtH4e/vRYPVDRSKK1DC7kQ0Nrbh52f/wulFxobbI+wA\n05jOIQ6Ya3DdG/6xcOtWOPE0HH/anjH7m5JPYct/wMr3IcT6Iifoi6YH2M9Uptsy3qkLkKqE3em4\nrrALIdYKIcqEECeuccxTQohMIcQxIcQke6eouEhTUztDhjhO2FMj4fgFe8aKJoZgQjjJVW8beQIS\ndM/96O9h/xPW6gz3J1oXHP8TrL9FT2uMtkeEAfLIpZVWhjPclvFOXIBxkbYM1StDhnjS1GSh+pyi\nV4x47C8Cy6/2TSHESmCEpmkjga8Cz9o0N8VldHVpuLs77kPWzDjYUwidNrVBW8RitrDZeupjTwKT\nYM2n+oLqJ3dDu5OlyjUUwrplcO7v+v8j8aq/WtJoaGxhM/NZiJsNH8Y1DT4t1O8LR+HuLuiy0uFF\n0SvX/elrmrYTuFbR5NXAy93H7gOChRBR9kxP0ZOuLg03R3Q86CbST09rO25Twb1hJBNJpPX6MZfj\nFwO3puulfd+cCHkb7B3fEWganH0N3poMsfPhc7sgeKStpzjHWRppZDwTbBkvqwq83CHBQRkxoFfc\nVMJuP3a4f7FAQY+vC8FicQpFrzha2AHmJsDOfPvGW8oydrKdZmzeZOThA4tfgTl/hJ3fhI9WQ60N\nufOOoKUSNt4Fh/4f3LwBpv7Y8q7Sy+mggw2sZzkrcMee2vC7C8ABhUQ/g5ubcNqI2kDGrrvrcrXp\n9Uf1s5/97NLrBQsWsGDBAptOPzjo6tIc0smmJ3MT4P2z8E2bwr6RRDGaMWwnneWssGfQniSthPhF\netz97emQ+jBM+i54O9DNNEpHC2T/U695M+IuWPwyeNhfDgJgD58STjijSLFtzN0FMNvBwi4EymO/\njPT0dNLT0y2NYYewF8FnCj7Hdf/bFfQUdoU8Hh5udHTYFAC/CouHwTc/hpYO8LHpbf9GFvMMT5NG\nmuVKg73i7g1Tfqjv2Nz3Y/j7CJjwbRj3MPiE2n++61F9Bk79TS89HDEZlryuh18cRAnF7GYnX+Vh\n28bs0mBDFjw2w7Yhe6WjowsPD5Wc15PLnd4nnnhCegw7rug64H4AIcQMoEbTNNUWxQH0RQZBTACM\nj4RPbIxqBBDACm7iHd6mDQemtgXE617x53ZC9Wl4JQneXwwn/gwNvfoa9tHRAudeh3fnw3sL9Teb\n2/fB6o0OFfVWWnmLN1nJzYRa6Gt6OfsK9VLOYxyY6ggX92Y4LtNrsHJdn0wI8QYwHwgXQhQAPwU8\nATRNe07TtPVCiJVCiCygEbBWa1RxVfz8vPokNezOVHjrNKy271M9aYwni0zW8R5ruMNSq7brEjIa\nlvwd2huh4BPIfgf2/QSCRkLybXoNmuAUa1v32+qh/DBcOAAXDkLhFt07H/9NSFoN7o4XKw2ND3if\nRBJtWzC9yL8y4HYHd/4DfW9GTIyDCtEMYq4r7Jqm3WPgmP+0ZzqKa9FXOb9rxsCPturNre0qJCkQ\nrOIW/sZz7GUPM5llz8DXwtOvW8hvg852KE6H8+/CuiXQUqVXUAxMhqDh+nNgsp4rr3XplRY7mqGz\n5d+vWyqg/JAu5PV5EDYeIm+AxJUw80k9FbMPOcJhSijhIb5m67iaBm9nwLq7bR22Vxob2x1WJmMw\no1rjORF+fp59sksv2h8mx8CHmXDHWPvG9cSTe7iXv/EcIYTYUivcMO6eEL9Ef8x/BtrqoC4H6s7r\n2TTVGZD3EdQX6Bkr7j76QqeHD7j76q+9gyFmLkx4TG+63Qde+dUopIBP+Jgv8yBe2CuMewv1NMc0\nB25Mukh9vePqHw1mlLA7EZGRfpSV9U2J04enwFP77BV2gBBC+Txf4O+8gobGGGw+gVG8AvWSwOH2\nhjD6gnIu8Dp/5zbWEIn9W0b+sA++PtWWIpPXpbS0gaioPmoOPohQy9FORFSUP+XljXTatTX0Gnxu\nDOTXwX4HrDnGEsd93M863iOD0/afwIUp5wKv8BJLWW5LE43LyamGLTnwQB8VBnFUc/bBjhJ2J8LL\ny52gIJ8+6Tjj4QaPToPf73XM+Erc5cknj7U8z40sZiKOUd7/2w8PTIQAx5T9v4Li4nqGOqqLxyBG\nCbuTER3tT4nVrtMGeXAybDoPuTWOGb+nuJ/mlGNO4iJkcPpS+GUSkx1yjpoWeOWYfZvTrkdDQxsd\nHV0Oax4zmFHC7mQkJgaRk3Ot0j32Eeitx9p/vM1x54glji/wRdbzER/xgWPz3J2QTjr5hI/5iA+5\nj/tt3Vl6Ob/YoYfg4vooMnL+fDVJScGIvgjmDzKUsDsZqakRnDplU9F0Azw+B3bkwfZcx51jKLE8\nwjdooYVn+BN55DnuZE5EDTWs5XnKKONrPEIcjtvff7ocXj4Ov7zRYae4guPHy0jri9SbQYgSdicj\nNTWyT4Xdzwv+sAwe2QDtNvXM6A1ffFnDHSxlGW/yOhv5mHYGb53uDE7zHM8whrF8ni/gh+MyRzQN\nvrEB/nueXuGzrzh+vIzx41UhWEeghN3JGDcuklOnbOqGYZDPjYbYAHh6v+PPNZZUHuGbVFPFX3iG\nIgodf9IBRDnlvMrLfMLH3MN9zGGuLbXVr8Vbp6GiGb421aGnuQIl7I5D5bE7GWPGhJOZWUVrawfe\njuowfBlCwNMrYNZauHU0JIc49nx++HEX93CC4/ydV0hjArOYTTDWGz0PVGqpZQfpnOIkc5nPPXwe\njz749Syuh29thH/doWdC9RWapnH0aKkKxTgI5bE7Gb6+nqSlRbJ3b996sqPC4KfzYc0/9VIDjkYg\nGM8Evs43cEPwLH/iLf7hch58LbV8yDqe4Wm88eYbfIvZzOkTUW/tgDVv6ZuRZjm4PO/lZGRU4O3t\nQYIju3gMYoTWR1XuhRBaX53L1Xn88S14eLjx858v7NPzahp8/l3wdoe1q/tmZ+JFWmjhEAfZyx6C\nCGI2c0hhtMPDFI6giy7yyOMYR8jgNJOZyhzmOjSOfjmaBg9+oKc4/vMOcHD/liv44x/3cvp0OX/9\n66q+PbETIoRA0zSpn5ASdidky5bz/OQn2/j00wf6/NyNbTD9BT0N8j+n9fnp6aST05ziU3bRTAtT\nmMoYxhCOg+vL2kAppRznKCc4jjc+jGcCk5mCP/59Ppc/H4C/HII9X4b+KNWycuVrfPnLk7j99n4q\nKeFEKGEfJLS0dBAR8RuKih4jMLDvN3ecr4Y5L8JzN8Eqx6VVXxMNjXzyOM4xzpCBF96MZjQpjCGe\neNvaw1mhiy4qqOAMGRznGK20kMYEJjCBKKL7bV7bc+HOf8GnX4Lh/dCHpKWlg8jI35CX9y1CQhzT\nUcqVMCPsavHUCfHx8WDu3AQ+/PAc996b1ufnTw6B9+6Cm9+AZ7v0Mr99jUCQSBKJJHEzqymhmAwy\nWM+H1FBNMsOJJ4EoookiCn/8HVsDHmimmUIKKSCfQgoopABffBnOCG5mFQkk9nvo6NMCuONteP1z\n/SPqABs3ZjFxYrQSdQeiPHYn5a23TvHcc4fYsuX+fpvDkRK46Q19UfWhKf02jSuop55ssiiiiDJK\nKaMUgegW+WiiiCSAQIZc+uOHN97XFf4uumikgdruPzXUUNf9upwL1FJLDEOJJ4F44oknoV/CLFdj\ney7c/ja8eissH9F/81i9+g1uu200X/pSH1Uac3JUKGYQ0draQVzcH9i370GSHZ1/eA2yq2Dpa/DF\n8fCTeX27oGoUDY166imjjDJKuUAZDTTQRCNNNNNME+2049v9R0Ojk67uP510dn/VQQc++BBEEEEE\nf+Y5jDAiiRoQIaDe+OgcfGkd/GMN3Dis/+ZRUlLP2LHPUFDwbVWH3SBK2AcZ3/rWx/j7e/GLX/Th\nPvBeKG2AFa/DrDh4ajm4O1+iCh100EwTLbQgELjhjluPv91xx6P7jzOhaXqFzt/vhXfugOkO6CUu\nw5NP7iIrq4rnn1/dvxNxIpSwDzJOnChj+fLXyMl5FC+v/vUUa1vg1jch1BdeWA3BPv06HQVQ16qX\nCjhWpre56++U8c7OLkaP/jOvvHIrM2f2ceK8E2NG2J3Qt1JcJC0tigkTovjLXw7291QI8oENn9fb\n6qU+C+9k9PeMBjc78mDic+DtAbu+1P+iDvDaayeIivJjxox+/tgwCFAeu5Nz/HgZS5a8SmbmN/ol\n9bE3duXDVz6E0WHwpxWgGuT0HS0d8JNt8NoJ+OvNcPOo/p6RTltbJykpf+KVV25l7tzE/p6OU6E8\n9kHI+PFRLF8+gt/8Znd/T+UScxLg6FdhQhRM/Cs8exC61Hu6w9mRBzc8Dzk1cPzhgSPqAH/96yFG\njw5Xot5HKI/dBcjPr2XSpOc4fvzhAdc/8nQ5fOUD/fXfVsHYgb9B1OnIqoLvb4ZDJfCrxXDn2IGV\nndTY2MaIEU+zfv29TJoU09/TcTrU4ukg5kc/2sKpU+W8++5dA64jTZcGzx3SQwSLk+G/ZsLUof09\nK+cnsxJ+uQs+OKdf00eng69nf8/qSh59dAMVFc289trn+nsqTokS9kFMa2sHs2at5cEHJ/G1r93Q\n39PplbpWeP4w/HGfvnv1v2bCypF9X4DK2TldDv9vJ3xyHr5xg96jdKBmIb37bgbf/vZGjhx5SO00\nNYkS9kHOuXOVzJ69lq1b7yctbeA2MGjvhH+eht/ugeYO+M4MuG88+DhXinifUt8Kb2fAS0fhTCV8\nazo8coPel3agkptbw7Rpf+ODD+5hen8n0DsxStgVvPzyUX796085cOArDBkyAD+X90DTID1XF/j9\nxXqnprtSYX6ic25yspsuTS8D8NIxeP+sfl3+YyLcNBL6edvCdWlr62Tu3Be5886xfOc7s/p7Ok6N\nEnYFmqZx333v4u3tzgsvrB5w8farkVsDb52Cf5zSu/rcPhZuS4F5ieA5wEXMTto7YV8RbMiC109C\ngBd8aSLcOw6iBk7ZmWuiaRrf+tbHnD9fw7p1dzvNPThQUcKuAKCurpXFi19h9ux4fv/7ZU73i3Wu\nEt4+De+e1UsELxsO8xJgbgKMiXC9mHxWFXySrcfM03P1qotLhsGdqTApemBluFwPTdP4yU+28f77\nZ9m+/T8IDVVxdasoYVdcorq6mcWLX2XRomH86leLnU7cL1JQCxuzYWe+/qhrhdnxusjPTYBJMQM/\nLNGTxjZ9i/+RUjhcAul5eqvBpcP1N7BFwyCy7xop2YqmaTz++BbWr89i8+YvEBHhpP+RAYYSdsVn\nqKpqZtGiV1i+fDi//OUipxX3nhTV/Vvkd+br3n1yCIwJ13Pkx0bA2HBICe/fxdiGNsir0UNMpyt0\nIT9Sqv9baqTuiU+K1t+cUiOcyyvvDU3T+MEPNvPJJ+fZtOkLhIcP6e8puQxK2BVXUFHRxLJlf2f6\n9FiefnoF7i62KtnSoYv76XLIqNCfT1fo5YTDhsDQAIjx15+H+kNM99dB3uDnBX6en32+6P1rmr54\n2alBZ5f+3Nap9witaYHqZqhu0R81LVDWAHm1kFuri3lDGyQFQ1KQ3gh8cowu5GPCXW/NQNM0vvvd\nTWzdmsPmzfer8IvNKGFX9EpdXSu33voPvLzcefnlW4lyllU4C7R36uWEi+uhpPu55+v6Nmhs10Mj\nF58b2nRbDV3UBXp2jrvQnz3d9HzxEF8I8el+3f2I8Pu3kCcF6+EUZ/fCjdDY2MbDD3/EmTMVbNx4\nnxJ1B6CEXXFV2ts7eeKJ7axde4QXX7yFZcv6sYXOAEXToKNLF2R3MTiE2Qpnz1awZs1bTJkylGef\nvWnAp9c6K0rYFddl27Yc7r//Pe68cyy//OUivL3VriCFHF1dGn/+836eeGI7//u/i3jwwckusX4z\nUFHCrjBERUUTDzywjsLCOt54Yw2jRoX195QUTkJ2dhVf/vI6Ojq6WLt2NSkp4f09JZdHle1VGCI8\nfAjvvXcXDzwwiVmzXuB//mc7jY1t/T0txQCmvb2TP/5xL9OnP88tt6SwY8d/KFEfwCiPfZCTl1fD\n9763mZ078/jRj+byla9M6fc2e4qBg6ZpvP/+Wb73vU0kJQXz9NMrlKD3MSoUozDN4cMl/OhHWzlz\npoInnljA5z+f5nKpkQrjdHVpfPDBWX71q93U1bXy298uZdmy4SqW3g8oYVdYZseOPB5/fAs1NS38\n+MfzWLNmDJ6ulnituCotLR288soxfve7PQQEePHd785izZqxeHioN/n+Qgm7whY0TWPDhix+85tP\nycys5OGHp/LVr04h0ln3uiuuS1VVM88+e4Cnn97PlClD+e53ZzF/fqLy0AcAStgVtnP8eBlPP72P\nt9/OYNmy4Xz5y5NYtGiYCtO4AB0dXWzblsPrr5/k/ffPcMsto/mv/5pJampkf09N0QMl7AqHUV3d\nzOuvn2Dt2qNUVDRx112p3HbbaKZPj8PN1cotujCaprFvXxFvvHGCN988RXx8EPfeO4677x5HTExA\nf09P0QtK2BV9wrFjpbz99mnee+8sFRVN3HJLCrfeOpobbxymMmoGIJ2dXRw+XML775/ljTdO4unp\nxr33pnHPPeMYOVLtYRjoKGFX9DmZmZW8//5Z3n33DKdPl7N8+QiWLElm/vxEkpNDVIy2n8jOrmLz\n5vNs2nSebdtyiYnxZ+XKkdxzzzgmToxWPxcnQgm7ol8pLW3gww/PsXVrDtu35yEEzJ+fxPz5icyb\nl0hKSpgSFAfQ1aWRmVnJvn1F7NqVz+bN52lp6WDx4mSWLElm8eJkFWZxYpSwKwYMmqaRlVXF9u15\nbN+ex86deTQ1tTNlylCmTIlh8mT9kZgYpMReksrKJvbvL2LfviL27i1k//4iAgK8mT49llmz4lm8\nOJnU1Ah1XV0EJeyKAU1hYR2HD5dw6FAxhw+XcvhwCS0tHUyeHMPEiVGMHh3OqFFhjBoVRmSk36AX\nppqaFk6fLufUqQucOlXe/bhAfX0bN9wwlOnTY5kxI47p0+OIjnb9UsyDFSXsCqejtLSBw4dLOHas\nlLNnKzl3Tn90dHRdEvnhw0OIjw8iLi6Q+PhA4uICCQry6e+pW6a1tYPCwjpycmrIzdUfF1/n5FRT\nV9fKmDERpKZefESSmhpBfHyQykQaRDhE2IUQy4E/Au7A85qm/eqy7y8A3gfOd//TvzRN+0Uv4yhh\nVximsrLpkshnZ1dTWFh36VFQUIcQEBcXSExMAOHhQwgP9yUsbEj3a/0RFOSNv7/XpUdAgLdDsnY6\nO7toamqntraVmpoWamtbqK1tpba2hZqaFiormykra6CsrLH7ob9ubGwjLi6QpKTgXh9xcYFKwBX2\nC7sQwh04CywGioADwD2apmX0OGYB8JimaauvMzkl7Apb0DSNurpWCgrqKCtroKKi6dKjsrKZioom\nysubqKtrpaGhjfr6i89tCAH+/l54e3vg6emGl5c7np7u3c9ul8ondHVpaJrW/ax/3dnZRUtLxxWP\njjRCLGEAAAY6SURBVI4uhgzxJCjIh6Ag70vPwcH6c2ioL9HR/kRF+RMV5UdUlD/R0f6EhPgM+nCT\n4vqYEfbrdVmYBmRpmpbbfYJ/ALcAGZcdp+5ORZ8hhOgWTx/GjZPbJdnW1kl9fSttbZ20tXXS3t7V\n47X+tRD6OdzcBELQ/Sxwdxf4+nri4+PxmYenp5sSaMWA4nrCHgsU9Pi6EJh+2TEaMEsIcQzdq/8v\nTdNO2zdFhcI+vLzcCQsb0t/TUCgcyvWE3Ujs5DAQr2lakxBiBfAeMMryzBQKhUJhiusJexEQ3+Pr\neHSv/RKaptX3eL1BCPGMECJU07Sqywf72c9+dun1ggULWLBggYkpKxQKheuSnp5Oenq6pTGut3jq\ngb54uggoBvZz5eJpFHBB0zRNCDENeEvTtKRexlKLpwqFQiGJ7YunmqZ1CCH+E9iInu74gqZpGUKI\nh7q//xxwO/A1IUQH0ATcbWr2CoVCobAFtUFJoVAoBjBmPHbVLUGhUChcDCXsCoVC4WIoYVcoFAoX\nQwm7QqFQuBhK2BUKhcLFUMKuUCgULoYSdoVCoXAxlLArFAqFi6GEXaFQKFwMJewKhULhYihhVygU\nChdDCbtCoVC4GErYFQqFwsVQwq5QKBQuhhJ2hUKhcDGUsCsUCoWLoYRdoVAoXAwl7AqFQuFiKGFX\nKBQKF0MJu0KhULgYStgVCoXCxVDCrlAoFC6GEnaFQqFwMZSwKxQKhYuhhF2hUChcDCXsCoVC4WIo\nYVcoFAoXQwm7QqFQuBhK2BUKhcLFUMKuUCgULoYSdoVCoXAxlLArFAqFi6GEXaFQKFwMJewKhULh\nYihhVygUChdDCbtCoVC4GErYFQqFwsVQwq5QKBQuhhJ2hUKhcDGUsDsh6enp/T0Fl0JdT3tR17P/\nUcLuhKhfHHtR19Ne1PXsf5SwKxQKhYuhhF2hUChcDKFpWt+cSIi+OZFCoVC4GJqmCZnj+0zYFQqF\nQtE3qFCMQqFQuBhK2BUKhcLFcIiwCyHuEEKcEkJ0CiEmX+O45UKIM0KITCHE9x0xF1dACBEqhNgk\nhDgnhPhECBF8leNyhRDHhRBHhBD7+3qeAx0j95sQ4qnu7x8TQkzq6zk6E9e7nkKIBUKI2u778YgQ\n4sf9Mc+BjhBirRCiTAhx4hrHyN2XmqbZ/gBGA6OAbcDkqxzjDmQBSYAncBQY44j5OPsD+DXwve7X\n3weevMpxOUBof893ID6M3G/ASmB99+vpwN7+nvdAfRi8nguAdf0914H+AOYCk4ATV/m+9H3pEI9d\n07Qzmqadu85h04AsTdNyNU1rB/4B3OKI+bgAq4GXu1+/DNx6jWOlVs8HEUbut0vXWdO0fUCwECKq\nb6fpNBj9/VX343XQNG0nUH2NQ6Tvy/6MsccCBT2+Luz+N8WVRGmaVtb9ugy42g9VAzYLIQ4KIb7S\nN1NzGozcb70dE+fgeTkrRq6nBszqDh+sF0KM7bPZuRbS96WH2TMJITYB0b1863FN0z4wMITKs+zB\nNa7nj3p+oWmado09AbM1TSsRQkQAm4QQZ7q9AYXx++1yD1Pdp71j5LocBuI1TWsSQqwA3kMP0Srk\nkbovTQu7pmlLzNp2UwTE9/g6Hv2daFByrevZvbASrWlaqRAiBrhwlTFKup/LhRDvon9cVsKuY+R+\nu/yYuO5/U1zJda+npmn1PV5vEEI8I4QI1TStqo/m6CpI35d9EYq5WoztIDBSCJEkhPAC7gLW9cF8\nnJF1wBe7X38R3fP5DEKIIUKIgO7XfsBS4Kqr7IMQI/fbOuB+ACHEDKCmRwhM8Vmuez2FEFFCCNH9\nehr6hkgl6vJI35emPfZrIYS4DXgKCAc+EkIc0TRthRBiKPA3TdNu0jStQwjxn8BG9BX2FzRNy3DE\nfFyAJ4G3hBAPALnAnQA9ryf/v507xEEgBqIw/L+EI3AfPBqBRRFOwTk4AMGtRHAWHGcARVLEriUh\nmG0m/2drJs30iUnbcYwzTOdoAZxba7d5yu3Pt35Lsp/WT621a5J1kjvwBHYzlty1X/YT2ACHJG/g\nBWxnK7hjSS7AClgmeQBHxptGf/elXwpIUjG+PJWkYgx2SSrGYJekYgx2SSrGYJekYgx2SSrGYJek\nYgx2SSrmA2Xl6ItKEpdWAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 88 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.contour(mubins, taubins, Z1.T)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 89, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\npTebHW/zkAAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 89 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Marginalise out $\\mu$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Comparing two dimensional distributions is hard: what do \"confidence intervals\" mean, for example? So, let's marginalise out $\\mu$ and get the posterior distribution on $\\tau$. We copy some formula from above." ] }, { "cell_type": "code", "collapsed": false, "input": [ "posterior = (alpha * tau / 2)**(n/2) / (tau * sympy.gamma(n/2)) * sympy.exp(-alpha * tau / 2)\n", "posterior" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{\\left(\\frac{\\alpha \\tau}{2}\\right)^{\\frac{n}{2}}}{\\tau e^{\\frac{\\alpha \\tau}{2}} \\Gamma{\\left(\\frac{n}{2} \\right)}}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAF0AAAA+BAMAAAC7PwoEAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMARDKrEM1mIu+Zdrvd\niVTWGHL+AAADc0lEQVRIDbVWS2gTURS9k5lk8pmkEV2IWht1oYtKCxX8oDDQuqhFmkVBcBURCkXE\ngIgWF61bcRGkKipiVaxQKATdSynFumtAFFTE2VpU4gd/iPHe+95LZzLJTDa90Ps598zrnfdmzgQg\nxMZWToYwvO2VctwLhFR67lwIw9u2YGaDFwmuhuB0IZjRdlfLeqgVT9Wk2OHFuOyooVW9DVkZI5gM\nvisZ0F2r/QNITlNDm3tMoYnpBQBjAe6kjb39AzYSlvAPorCLQhO7gJhego/rDEhx+wF5y+6wufK5\nm4h0ZGEj3mcnN4dtDlvY+90lhIaL0FMEuM5dq0DBOMaFz0VoF6wcvDcBFribKFPot7nwueQkQuaB\n2cFXAJQCxGgFY+ooFz6n5xsh7TsiVu1vIy7qVG8jHvnaiLjraMldUW5+aUTctUV8On1hVRwdD7m1\nMd/TDl4/quZ//cQWl5mB8+tlwUrYibzItJ8iNvfJeYFbRbUu739zMqIa3iFZ3DHkvqTl/xG4z9en\nzdA5oUWn0bW2Q6oVrYgMH74g61bNFzI5pYDmMeUIPCaXl09pczKipry9TtjOnFipJVU0PnGIPP28\nh5OLIXSIOcSIK/2YCuOvSV89v+3F6prM0GrRzMzUgPb8yqK7r2VllXajIv+A34ZMnSCwumhHen0X\nLEG3A2nbjbNoC2DWjXM+AvjMRT2wXgAYuzdHa1tFTweL3aPrH8EQoZGDv/r6lisAKNrGiR/86CX9\nA60uEPmGHwwkoGibR/JAb7IhX6NVkisjPiCfRFuf1iap9Yycy/hbRedcxYGIXwEW7XguUcpiedvF\nVemmtzlOme8Ai/YExLcReoY7d3HBCoy/ucFVPjLJkfk4Sh6rzZBAjQfostEl7p/deR4ySzBOECyC\nuCvJ94h2Tw4JW/njNpGFq0RHGZrnIPnRElfCIYmMTnzf6GyRCzgsouSTCIttwO6wwxSa7Tdn6Azx\n7or9wTNFft3k+vRx+6PAwYEKp2qeXqqkYk/kqDCr6C7jaVIBy7V5jpLPoq0Uu6tILdblh2CI/WQy\nOsnnplJssf86DZC+5X1azWu1/bQai7ZS7JdqsYAoRFso9vEAnmoJ0WbFNgI/N/ICfIHQWLFjZYkF\nhZSDXaHY+Nsi3Fi0hWKPhbORgaItFNtsZxycxZGKnbDbWr+B9B8YVgUXZcrWdgAAAABJRU5ErkJg\ngg==\n", "prompt_number": 94, "text": [ " n \n", " \u2500 -\u03b1\u22c5\u03c4 \n", " 2 \u2500\u2500\u2500\u2500\u2500\n", "\u239b\u03b1\u22c5\u03c4\u239e 2 \n", "\u239c\u2500\u2500\u2500\u239f \u22c5\u212f \n", "\u239d 2 \u23a0 \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " \u239bn\u239e \n", " \u03c4\u22c5\u0393\u239c\u2500\u239f \n", " \u239d2\u23a0 " ] } ], "prompt_number": 94 }, { "cell_type": "code", "collapsed": false, "input": [ "posterior1 = (alpha * tau / 2)**((n-1)/2) / (tau * sympy.gamma((n-1)/2)) * sympy.exp(-alpha * tau / 2)\n", "posterior1" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{\\left(\\frac{\\alpha \\tau}{2}\\right)^{\\frac{n}{2} - \\frac{1}{2}}}{\\tau e^{\\frac{\\alpha \\tau}{2}} \\Gamma{\\left(\\frac{n}{2} - \\frac{1}{2} \\right)}}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAIMAAABBBAMAAAAAkwrqAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMARDKrEM1mIu+Zdrvd\niVTWGHL+AAAD+klEQVRYCdVWTWgTURCebLZZm58m9VSK2oAHUSsNVhBLCwtWoSdz8CSK7bGCGFDQ\ni7T2oF7UHKzQlmoRVKyXHrx5CSJ6ERtQCyJiwJv4E39AT8aZee/lvRer2W0FcShvZr438+2+7G7n\nAwhtO0J3NDZsO9eIhM8fhW+B2NWbOaNtJRRtd2B8lRSw3cuvlqIUH/E1x0oO4i7EljTDlgsVnSwX\nRTImmjKToPFGq9DhJ1Ejg7Z7aHchjXHVKmpI3P0IDL0qutBdq/0AmOf9zpdZXWclGq5H0WEA9z7M\nptyduwd9gGSBtvLOODlhVqJAw5/COFqEd+0uJAiO80kewFddYyUarkdTGKUz0FEGWE+gK3ojJUqk\nWYkCtT+D4b4C9OD9X2H0Ia97+DyyzEokpp1TxTiZhdcewH2GZ2h1ze/bSrjGWuLjmHp980P4KlEI\ncIyWoUE8mDIrUaD20byORdTlo1+slURGq5VoWEWJnIqU78mqKKBvKTYWjmUakSZ5kij4fealio+n\n0qSlcZspLDD0XbTkRH9qRj3GsazF2DyJLoiayzApi7sKzbusinhJpI9AXZ3fC6umSRLBH5DsIuzL\niOi5cCHWz6r2oy+iAwoI7AdU5SERuN8UENh3y8pUTgSxhcCtqjBREdFRCeBXG9bkzImUHdE7GpYA\n699zz9YPb3wKvPDnAIhVqPUS/tMna/XZ/ReL/rRXGFX/6TG3rvrqm/uXp3g7OuivO//YN3ZttWBs\nvMM4ZeQibCuiFqm0W7itFowtohDiwQBxjjtPAJ6ZEKmF2HTnUxMTMVFI8WBstvhOCaUAIk7/997e\nxTKO+WGAvV3Dy3xuTCHEAzYoc5ZG+goufxfOF6EMSC2cuAHpgqqpe6YQ4qGOWQFRQA6A1AL0QYe1\nyQlTSPGgd+vvJ56EKPAgpBZgAqYiukpGTAFCPFibSkkxRQVYLXhVmFhrVVEiKFg8XMNrl8Gbvc3H\nVUqKKfDnGMfiyALMDqO37PThacppSLReP77pJHIWvCJBSklJimiewD8YiYcNrMu8T9Ca5UqppCTF\nr2qhgU6IB3r/omeP3BKbUklJiha+NdXmHXxMllE5ejG2SV+nValSUpJCq4Wq0UcN9PTQC/FAuiw9\nhwuZUlImBehBL4polRjfBT4ygDVzAPinlZQ6SI5APegpEyYxHt/xEmLxPAwV5CY7SSHUgh70ukRi\nLB6iZcJfzM/pbRwgk7VdRMn8xqDXNXL4NxcPSi189HWzihgLIB6kWpCDXnWzZyyAeBjgajXoTQrG\ngoiHbu46avbKmLEg4iFRwY76oDeYBJbMGtBvQlYLatCbNQILJB7eY58a9CYFY8HEg1ALZrMR/y3x\n8BO9K0v7mHafQgAAAABJRU5ErkJggg==\n", "prompt_number": 95, "text": [ " n 1 \n", " \u2500 - \u2500 -\u03b1\u22c5\u03c4 \n", " 2 2 \u2500\u2500\u2500\u2500\u2500\n", "\u239b\u03b1\u22c5\u03c4\u239e 2 \n", "\u239c\u2500\u2500\u2500\u239f \u22c5\u212f \n", "\u239d 2 \u23a0 \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " \u239bn 1\u239e \n", " \u03c4\u22c5\u0393\u239c\u2500 - \u2500\u239f \n", " \u239d2 2\u23a0 " ] } ], "prompt_number": 95 }, { "cell_type": "markdown", "metadata": {}, "source": [ "So actually the only difference is that the \"other\" prior multiplies by $\\tau^{-1/2}$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from scipy.special import gamma\n", "\n", "def make_example(n):\n", " x = np.random.normal(size=n)\n", " alpha = np.sum(x*x) - np.sum(x)**2/n\n", "\n", " def p1(tau):\n", " return (alpha * tau / 2)**(n/2) / (tau * gamma(n/2)) * np.exp(-alpha * tau / 2)\n", " def p2(tau):\n", " return (alpha * tau / 2)**((n-1)/2) / (tau * gamma((n-1)/2)) * np.exp(-alpha * tau / 2)\n", " \n", " return p1, p2\n", "\n", "p1, p2 = make_example(10)\n", "x = np.linspace(0.1, 2, 50)\n", "y1 = p1(x)\n", "y2 = p2(x)\n", "plt.plot(x, y1)\n", "plt.plot(x, y2)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 110, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 110 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }