{ "metadata": { "language": "Julia", "name": "", "signature": "sha256:0873f733bf1a2bf0f41319321dd5d7d7e3c134a6302623e2802b0167c22e6d10" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "This is the same stick breaking based mixture model found here: http://www.robots.ox.ac.uk/~fwood/anglican/examples/dp_mixture_model/index.html." ] }, { "cell_type": "code", "collapsed": false, "input": [ "using Stochy, Stochy.PyPlotSupport; import PyPlot" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "INFO: Loading help data...\n" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The base distribution $H$ is a Normal-Gamma prior on the mean and variance of the observation distribution." ] }, { "cell_type": "code", "collapsed": false, "input": [ "@pp function H()\n", " local var = 1. / ~Gamma(1, 0.1)\n", " local mean = ~Normal(0, \u221a(10var))\n", " tuple(mean, \u221avar)\n", "end" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 2, "text": [ "H (generic function with 1 method)" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "@pp repeat(H,10)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ "list((-13.010629950984848,3.3658996178312672), (-45.77174192030567,10.200900258898432), (15.659395597870311,5.997636239705596), (12.039330000234095,3.0488993843576835), (20.52601010262235,8.092445274356743), (-1.0594947705851219,2.0572991152389366), (3.418374191308808,4.3797571610579915), (-9.926381117382899,1.9772546235351978), (-3.8764835870871264,2.51166161352619), (-20.563800041458332,14.816846726072166))" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "`params` is a draw from a Dirichlet process with base distribution $H$. (This is often denoted $G$.)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "params = @pp DP(H, 1.72)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ "(anonymous function)" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Making several draws from `params` shows the stochastic memoization effect. Note the repetition of some tuples below." ] }, { "cell_type": "code", "collapsed": false, "input": [ "@pp repeat(params, 10)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ "list((5.6686350451007,2.3294003390617277), (-7.383761228396905,8.57419987206087), (-18.77023112874221,3.8742570516808015), (-7.383761228396905,8.57419987206087), (-0.12056623523626799,2.062902797324893), (-18.77023112874221,3.8742570516808015), (-18.77023112874221,3.8742570516808015), (-7.383761228396905,8.57419987206087), (-18.77023112874221,3.8742570516808015), (-0.5958554634702551,3.853224991821724))" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the current implementation memoization is local to the calling `@pp` block. This means that the following is not equivilant to the cell above. Specifically, this performs one draw from each of 10 draws from the DP, whereas the code above makes 10 draws from a single DP." ] }, { "cell_type": "code", "collapsed": false, "input": [ "[@pp params() for _ in 1:10]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "10-element Array{Any,1}:\n", " (-4.936177893943471,2.5089731258345296) \n", " (-2.048910317484265,2.319143625811254) \n", " (-2.152587850602797,2.883942547573667) \n", " (4.249136700418106,2.437442669739073) \n", " (2.3501738100010194,2.34833772122104) \n", " (8.319155325659535,4.9268395907623574) \n", " (4.234836918935765,2.588754181982078) \n", " (-4.404888763185945,5.874247584713328) \n", " (102.52081478675677,21.85262939132541) \n", " (-0.28919498802963073,1.5104630196787532)" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "dist = @pp pmcmc(250,100) do\n", " observe(Normal(params()...), 10)\n", " observe(Normal(params()...), 11)\n", " observe(Normal(params()...), 12)\n", " observe(Normal(params()...), -100)\n", " observe(Normal(params()...), -150)\n", " observe(Normal(params()...), -200)\n", " observe(Normal(params()...), 0.001)\n", " observe(Normal(params()...), 0.01)\n", " observe(Normal(params()...), 0.005)\n", " observe(Normal(params()...), 0)\n", " # Posterior predictive.\n", " ~Normal(params()...)\n", "end;" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "histogram(dist, bins=300, range=(-300,100), histtype=\"stepfilled\");" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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bIxh/PjxnrH79+/n3nvvpVevXtx88804HA62bt3K3LlzqVevHoMHDy7zeYuIiMjV8alAAxAdHc2YMWOYM2cOiYmJtGjRguXLl9OhQwdPH8uycp1WAnA4HKxYsYLhw4czdepUUlNTadu2LdHR0TRq1MjT76abbqJHjx6sXr2a2bNnk5GRQd26dXnxxRf5v//7PypXrlxmcxUREZGSYRljjLeLsIOc83/btm3TNTQiIqVgwIAB/Pvf35KZuekq9jKUhg1XcuDA/0qsLrl6ZfEz1KeuoREREREpDgUaERERsT0FGhEREbE9BRoRERGxvWIFmpxbpgty+PBhoqOji1uTiIiIyBUpVqDp378/GzZsKHD7pk2beOqpp4pdlIiIiMiVKJVTThcvXsTpdJbGrkVERETyKPKD9Xbu3MnOnTvJeWxNbGxsrqUHciQmJvLee+8Vae0kERERkZJQ5ECzZMkSXnnlFc/X06dPZ/r06fn2rVSpErNnz7766kRERESKoMiBZuDAgTzwwANA1ppLr7zyCvfff3+uPpZlERQURIMGDTyLQYqIiJQlY9ykpqYSGBjo7VKkDBU50ISFhREWFgbA6tWrufXWW6lRo0apFSYiInLlbuD77/cRFBTEihUr8vziLdeuYi1O2bFjxxIuQ0REpCT8BWiBMY9z4sQJbxcjZajYq21/9tlnvP/++/zwww8kJiZ6Lha2LAtjDJZl8cMPP5RYoSIiIr+uOtALeNzbhUgZK1ageeuttxg5ciQhISG0bduWZs2a5eljWdZVFyciIiJSFMUKNP/4xz+45557+PTTT3Xxr4iIiHhdsR6sl5iYSM+ePRVmRERExCcUK9C0bduW7777rqRrERERESmWYgWad999l0WLFjF37tySrkdERETkihXrGprHHnsMl8tFv379eOGFF7jxxhtzrd2Uc5fTrl27SqxQERERkYIUK9BUrVqVatWq0bBhwwL76C4nERERKSvFCjRr164t4TJEREREiq9Y19CIiIiI+JJiHaFZt25dkfrdddddxdm9iIiIyBUptbWcLMvC5XIVZ/ciIiIiV6RYgWb16tV52lwuF0eOHGHGjBm4XC7eeOONqy5OREREpChK/AjNk08+yZ133snatWvp1KlTcesSERERKbISvyjY6XTSq1cv3n///ZLetYiIiEi+SuUup8TERBITE0tj1yIiIiJ5FOuU09GjR/NtT0pK4quvvuKtt97izjvvvKrCRERERIqqWIGmbt26hW6PjIxk+vTpxdm1iIiIyBUrVqD54IMP8rRZlkXlypVp0KABTZo0uerCRERERIqqWIGmf//+JVyGiIiISPEVK9DkMMawd+9ejhw5AkCdOnW49dZbS6QwERERkaIqdqBZunQpL730EocPH87VXq9ePf7+97/z0EMPXW1tIiIiIkVSrNu2V6xYQY8ePbAsiwkTJrBkyRKWLFnChAkTAHjkkUf49NNPS7RQERERkYIU6wjNq6++SrNmzfj6668JCgrytD/00EP8+c9/pkOHDrzyyit07ty5xAoVERERKUixjtDs2rWL/v375wozOYKCgnjyySfZuXPnVRcnIiIiUhTFCjQBAQGcPXu2wO2JiYmUK1eu2EWJiIiIXIliBZpOnToxdepUNmzYkGfbpk2bmDp1Kvfee+9VFyciIiJSFMW6hubNN98kNjaWDh06cPvtt3PzzTcDsG/fPrZs2ULNmjV58803S7RQERERkYIU6whN/fr12blzJ4MHD+bcuXN8/PHHzJs3j6SkJIYMGcLOnTupV69eSdcqIiIikq9iHaHJyMggMDCQyZMnM3ny5Dzbz58/T0ZGBv7+/lddoIiIiMivKdYRmsGDB9OuXbsCt7dv355hw4YVuygRERGRK1GsQPPZZ5/xyCOPFLi9R48eerCeiIgUWVxcHCdOnPB2GWJjxTrldOLECW688cYCt4eGhnLs2LFiFyUiItePo0eP0qpVKwAcjvu9XI3YVbECTZUqVdi3b1+B2/ft20fFihWLXZSIiFw/UlJSsv80D7e7m1drEfsq1imnzp07M2PGDLZv355n27Zt25gxY4aWPRARkStUCwj0dhFiU8U6QvPKK6/w2Wefcfvtt9OtWzeaNm0KwLfffst///tfatSowauvvlqihYqIiIgUpFiBplatWnzzzTeMHj2apUuXsnTpUgAqVqxI3759ef311wkLCyvRQkVEREQKUqxAAxAWFsbs2bNxu92cPn0agOrVq+NwFOssloiIiEixXXX6cDgc1KxZk5o1a5ZYmElPT2fkyJGEhYVRvnx5IiMjWbVqVZHGJiUlMXDgQKpXr05wcDD33HMPcXFxufqkpqby7rvvct999xEWFkbFihVp1aoV7733Hm63u0TmICIiImXHJw+n9O/fn8mTJ9OvXz+mTp2K0+mkS5curF+/vtBxbrebrl27EhMTw6BBg5g4cSIJCQl07NiRgwcPevp9//33DBo0CMuyGDZsGG+//Tb16tXjhRde4Omnny7t6YmIiEhJMz5m8+bNxrIs8/bbb3va0tLSTMOGDU27du0KHTtv3jxjWZZZtGiRp+306dOmcuXKpk+fPp62M2fOmD179uQZ//TTTxvLsszBgwfzbNu2bZsBzLZt24ozLRERKcDevXsNYOBrA6YEXi4DmPfff9/bU5NsZfEz1OeO0CxcuBA/Pz8GDhzoaQsICOCZZ55h48aNHD9+vNCxISEhdO/e3dNWrVo1Hn30UZYtW0ZGRgYAVatW5ZZbbskz/uGHHwYo9Bk7IiIi4nt8LtDExcURHh5OcHBwrvY2bdoAsGPHjkLH5jxt8pdjU1JS2L9/f6HvffLkSSArBImIiIh9+FygiY+PJzQ0NE97Tltha31czdhLly4xZcoU6tev7wlPIiIiYg/Fvm27tKSmphIQEJCnvVy5cp7tBUlLSyv22D//+c/s3buXFStW6NZzERERm/G5n9yBgYGkp6fnaU9LS/NsL+mxb731FrNmzeK1117j/vu1MJqIiIjd+NwRmtDQ0HxPDcXHxwMU+gTi4oz997//zahRo3j++ed5+eWXf7W+IUOGUKlSpVxtvXv3pnfv3r86VkRE5FoXExNDTExMrrakpKRSf1+fCzQtW7Zk7dq1JCcnU6FCBU/75s2bAYiIiChwbEREBLGxsRhjsCwr19igoCDCw8Nz9V+2bBnPPvssjzzyCO+++26R6psyZUq+Fx6LiIhI/r/kb9++ndatW5fq+/rcKacePXrgcrmYMWOGpy09PZ2oqCgiIyOpVasWkHVH0r59+8jMzMw19tSpUyxevNjTdubMGRYsWEC3bt3w9/f3tK9bt45evXrRsWNH5s6dWwYzExERkdLic0do2rZtS8+ePRk9ejQJCQk0aNCA2bNnc/ToUaKiojz9Ro0aRXR0NIcPH6Z27dpAVqCJjIzkqaeeYs+ePVStWpVp06ZhjGH8+PGesUeOHOHBBx/E4XDwyCOPMG/evFw1tGjRgmbNmpXNhEVEpFTMmTOH9PR0nn/+eW+XImXA5wINQHR0NGPGjGHOnDkkJibSokULli9fTocOHTx9LMvKdVoJstaVWrFiBcOHD2fq1KmkpqbStm1boqOjadSokaffoUOHOH/+PJZl8ac//SnXPizLYty4cQo0IiK2ZeFw9GDdug1s2/ayAs11wjLGGG8XYQc55/+2bduma2hERErQvn37sp/e/jXQvgT3/BbBwa+TnJxYgvuU4iiLn6E+dw2NiIiIyJVSoBERERHbU6ARERER21OgEREREdtToBERERHbU6ARERER21OgEREREdtToBERERHbU6ARERER21OgEREREdtToBERERHbU6ARERER21OgEREREdtToBERERHbU6ARERER21OgEREREdtToBERERHbU6ARERER21OgEREREdtToBERERHbU6ARERER21OgEREREdtToBERERHbU6ARERER21OgEREREdtToBERkWuW2+1iz549uFwub5cipUyBRkRErlFBpKQk06RJE6ZNm+btYqSUKdCIiMg1agCwBaezMufPn/d2MVLKFGhEROQa5Q+0wbJu8HYhUgYUaERERMT2FGhERETE9hRoRERExPYUaERERMT2FGhERETE9hRoRERExPYUaERERMT2FGhERETE9hRoRETEa8aN+xuRkR2yv9KPJCk+/esRERGv+eabb/jpp+rA34HW3i5HbMzP2wWIiMj1rjEw1NtFiM3pCI2IiIjYngKNiIiI2J4CjYiIiNieAo2IiIjYngKNiIiI2J4CjYiIiNieAo2IiIjYngKNiIiI2J4CjYiIiNieAo2IiIjYns8FmvT0dEaOHElYWBjly5cnMjKSVatWFWlsUlISAwcOpHr16gQHB3PPPfcQFxeXp9/KlSt55plnaNq0KU6nk3r16pX0NERERKQM+Vyg6d+/P5MnT6Zfv35MnToVp9NJly5dWL9+faHj3G43Xbt2JSYmhkGDBjFx4kQSEhLo2LEjBw8ezNU3JiaGmJgYKleuTK1atbAsqzSnJCIiIqXMpwLNli1bmDdvHm+88QZvvvkmzz77LKtXr6ZOnTqMGDGi0LELFy5k48aNzJ49mzFjxvDCCy+wdu1anE4n48aNy9X39ddfJzk5mdjYWJo3b16aUxIREZEy4FOBZuHChfj5+TFw4EBPW0BAAM888wwbN27k+PHjhY4NCQmhe/funrZq1arx6KOPsmzZMjIyMjztoaGhOJ3O0pmEiIiIlDmfCjRxcXGEh4cTHBycq71NmzYA7Nixo9CxrVq1ytPepk0b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DODYsWP8/e9/5+677+bTTz/1yrxFRESk+HzqGhqA6OhohgwZwpw5cxg8eDAul4vly5d7wgyAZVm5TisBOBwOVqxYwWOPPcbUqVMZMWIENWrUYPXq1bnCDGSd2lq1ahWBgYG89NJLzJo1i2effZaFCxeWyRxFRESkZPncERoRERGRK+VzR2hERERErpQCzWXWrVvHgw8+SO3atQkMDCQ0NJTOnTt7Lkb+pQ0bNtChQweCgoIIDQ1l8ODBXLx4MU8/YwwTJ06kXr16BAYG0qJFCz7++ON89lg2vvzyS55++mnCw8MJCgqiQYMGDBgwgJMnT+bp27FjRxwOR55X586d8/S18zzBvt/PkydPMmrUKH77299SoUIFHA4HX331Vb597fz9hCubK9j3e5qff//73/l+7xwOBwkJCXn6F3XuviY9PZ2RI0cSFhZG+fLliYyMZNWqVd4uq9jWrl1b4Pdty5Ytufru3buX+++/nwoVKlC1alWeeOIJzpw546XKC3bx4kXGjRvH/fffT5UqVXA4HMyenf8yMlcyp/fff59bbrmFwMBAwsPD+ec//3lFdfnUbdveduDAAfz8/Hj++ecJCQnh3LlzfPjhh9x111188skn/P73v/f03bFjB506daJJkyZMnjyZH3/8kUmTJnHgwAFWrFiRa78vv/wyb775JgMHDqRNmzYsXbqUPn36YFkWjz32WFlPk5EjR5KUlETPnj1p1KgR33//Pf/85z9Zvnw5O3bsoGbNmrn633TTTUyYMCFXW37P5LHzPO38/dy3bx8TJ04kPDyc5s2bs3HjxjzXmF3Ort9PuLK52vl7WphXX32VevXq5Wr7zW9+k+vrK5m7r+nfvz+LFi1i6NChNGrUiKioKLp06cKaNWto3769t8srtsGDB3vWJczRoEEDz5+PHTvGXXfdReXKlZkwYQLJyclMmjSJb7/9li1btuDv71/WJRfo9OnTvPrqq9SpU4eIiAjWrl2b7/+HVzKn6dOn8/zzz9OjRw/+8pe/sG7dOgYNGkRKSgojRowoWmGl9si+a0RKSooJCQkx999/f672zp07m1q1auVaGXzWrFm5nkpsjDHHjh0z/v7+5sUXX8w1/q677jI33XSTcblcpTuBfMTGxuZpW7dunbEsy/z1r3/N1X733XebZs2a/eo+7T5PO38/k5OTTWJiojHm5ydhf/XV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cZfLBYvFgvvvvx9+vz+CKySi6cKGhoikpSgK9u3bh/Pnz+P1119Xx5uamtDf3489e/bAYOCPOaIbwYxIL4CIaDJKSkrw2muvoaWlBcuXL8elS5dw4MABbN++HfPnz4/08ohomsQJIUSkF0FENBk+nw9FRUVwu91wu9246667cOzYsUgvi4imERsaIooJ7e3tKC4uhqIoOHfuHObOnRvpJRHRNOLFZSKKCV999RWA4RuFu7q6IrwaIppuPENDRNI7c+YMiouLsWLFCjgcDvT19eHs2bNISkqK9NKIaJqwoSEiqfl8PlitVvz77784c+YMuru7UVxcjIaGBuzcuTPSyyOiacJLTkQktQ0bNuDHH3/Erl27YDabkZeXh/Xr12P37t04fPhwpJdHRNOEZ2iISFodHR2477778MILL2Dbtm3quN/vh81mwx9//AGn08lLT0Q3ADY0REREJD1eciIiIiLpsaEhIiIi6bGhISIiIumxoSEiIiLpsaEhIiIi6bGhISIiIumxoSEiIiLpsaEhIiIi6bGhISIiIumxoSEiIiLpsaEhIiIi6bGhISIiIun9D5Y+Df7wnBWnAAAAAElFTkSuQmCC", "text": [ "Figure(PyObject )" ] } ], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }