{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "# How to debug a model\n", "\n", "There are various levels on which to debug a model. One of the simplest is to just print out the values that different variables are taking on.\n", "\n", "Because `PyMC3` uses `Theano` expressions to build the model, and not functions, there is no way to place a `print` statement into a likelihood function. Instead, you can use the `Theano` `Print` operatator. For more information, see: theano Print operator for this before: http://deeplearning.net/software/theano/tutorial/debug_faq.html#how-do-i-print-an-intermediate-value-in-a-function.\n", "\n", "Let's build a simple model with just two parameters:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Multiprocess sampling (2 chains in 2 jobs)\n", "CompoundStep\n", ">Metropolis: [sd]\n", ">Metropolis: [mu]\n", "100%|██████████| 5500/5500 [00:02<00:00, 2358.30it/s]\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1QAAAEUCAYAAAAspncYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3Xl8VNX9//HXnZlMyAoJJC5IKCAR\nhVIWtyogkiCIIGJkrYCKgljRKiiCiKiRpRX9VVT6RdFiEAhFESmKFgVTESiikYKAQhEFDdkh+2z3\n90fChLCEMTAMcd7Px8PHY+69Z2Y+98M4J585555rmKZpIiIiIiIiIr+YJdABiIiIiIiI1FcqqERE\nREREROpIBZWIiIiIiEgdqaASERERERGpIxVUIiIiIiIidaSCSkREREREpI5UUImIiIiIiNSRCioR\nEREREZE6UkElEiCbNm1i8ODBjBs3jt69ezNgwAA++eQT7rzzTrp378706dPZtGkTffv2rfGco7dF\nRETONvVfIjXZAh2ASDD773//y7Jly7jsssu4++67mTdvHm+++SbFxcV069aN3/72t4EOUURE5Djq\nv0SqqaASCaCLLrqIyy67DICEhASioqKw2+3ExsYSERHBoUOHAhyhiIjI8dR/iVTTlD+RALLb7TW2\nbbaav3EkJiZimqZ32+l0npW4REREaqP+S6SaCiqRc1h0dDQ//fQTeXl5mKbJmjVrAh2SiIjIKan/\nkmCiKX8i5zCLxcKQIUNISUkhLi6O7t27BzokERGRU1L/JcHEMI8ejxURERERERGfacqfiIiIiIhI\nHamgEhERERERqSO/FlRff/01w4cPP27/J598QkpKCoMHD2bp0qUAlJeXM27cOIYNG8Y999xDfn6+\nP0MTERERERE5bX4rqF599VWmTJlCRUVFjf1Op5MZM2bw+uuvk5aWRnp6Orm5uSxevJjExEQWLVrE\nLbfcwiuvvOKv0ERERERERM4IvxVUCQkJzJkz57j9e/bsISEhgYYNG2K32+ncuTObN29my5YtdO3a\nFYBu3bqxYcMGf4UmIiIiIiJyRvht2fRevXqxf//+4/YXFxcTFRXl3Y6IiKC4uLjG/oiICIqKinx6\nn5wc39qJiEjgxcVFnbpREDgTfVdMTDgFBaVnIJr6T7mopDxUUy4qKQ/VTjcXtfVfZ/0+VJGRkZSU\nlHi3S0pKiIqKqrG/pKSE6Ojosx2aiIgIHo+HadOmsWvXLux2O6mpqTRv3tx7fOnSpSxZsgSbzcbY\nsWO5/vrrKSwspFevXiQmJgKQnJzMyJEj/RqnzWb16+vXJ8pFJeWhmnJRSXmo5s9cnPWCqlWrVuzb\nt4/CwkLCw8P54osvGDVqFD/99BOffvop7du3JyMjg86dO5/t0ERERFizZg0Oh4P09HQyMzOZOXMm\nc+fOBSAnJ4e0tDTefvttKioqGDZsGNdeey3ffPMNffv25Yknnghw9CIicradtYJq5cqVlJaWMnjw\nYB577DFGjRqFaZqkpKRw3nnnMXToUCZOnMjQoUMJCQlh9uzZZys0ERERr6Ov6e3QoQPbtm3zHtu6\ndSsdO3bEbrdjt9tJSEhg586dbNu2je3bt3P77bcTGxvLlClTiI+PD9QpiIjIWeTXguqiiy7yLove\nr18/7/4ePXrQo0ePGm3DwsJ48cUX/RmOiIjIKRUXFxMZGendtlqtuFwubDbbSa8DbtmyJe3ateOa\na67hvffeIzU1tdY+LSYm/IxMP9E1adWUi0rKQzXlopLyUM1fuTjrU/5ERETOZcde6+vxeLDZbCc8\nduQ64Pbt2xMWFgZAz549T/kD4Zm4SDwuLkoLM1VRLiopD9WUi0rKQ7XTzUVtxZhfb+wrIiJS33Tq\n1ImMjAwAMjMzvQtNALRv354tW7ZQUVFBUVERe/bsITExkSlTpvDhhx8CsGHDBtq2bRuQ2EVE5OzT\nCJWIiMhRevbsyfr16xkyZAimaTJ9+nTeeOMNEhISSEpKYvjw4QwbNgzTNHnooYcIDQ1l/PjxTJ48\nmcWLFxMWFkZqamqgT0NERM4SwzRNM9BBnA4NY4qI1B+ay1/pTPRdmspTTbmopDxUUy4qKQ/VNOVP\nRERERETkHKSCSkREREREpI5UUImIiIiIiNSRCioREREREZE6UkElIiIiIiJSRyqoRERERERE6kgF\nlYiI1Hv79+9n3bp1uN1ufvzxx0CHIyIiQUQFlYiI1Gvvv/8+Y8eOJTU1lcLCQoYMGcKKFSsCHZaI\niAQJFVQiIlKvvfrqqyxevJjIyEgaN27M8uXLmTdvXqDDEhGRIKGCSkRE6jWLxUJkZKR3Oz4+HotF\n3ZuIiJwdtkAHICIicjpat27NwoULcblc7Nixg0WLFtGmTZtAhyUiIkHCbwWVx+Nh2rRp7Nq1C7vd\nTmpqKs2bNwdgx44dTJ8+3ds2MzOTl19+mfbt29OrVy8SExMBSE5OZuTIkf4KUUREfgWmTp3K3Llz\nCQ0NZfLkyVx99dVMnDgx0GGJiEiQ8FtBtWbNGhwOB+np6WRmZjJz5kzmzp0LwKWXXkpaWhoAH3zw\nAfHx8XTr1o3PP/+cvn378sQTT/grLBER+ZUJDw9n/PjxjB8/PtChiIhIEPJbQbVlyxa6du0KQIcO\nHdi2bdtxbUpLS5kzZw4LFy4EYNu2bWzfvp3bb7+d2NhYpkyZQnx8vL9CFBGRX4E2bdpgGEaNfXFx\ncWRkZAQoIhERCSY+FVT33HMPt956K8nJyYSEhPj0wsXFxTUuErZarbhcLmy26rdctmwZvXv3JjY2\nFoCWLVvSrl07rrnmGt577z1SU1N58cUXf8n5iIhIkNm5c6f3sdPpZM2aNWRmZgYwIhERCSY+LYM0\nevRo/v3vf9OrVy+eeuoptm7desrnREZGUlJS4t32eDw1iimAlStXMnDgQO/21VdfzVVXXQVAz549\n+eabb3w6CREREYCQkBBuvPFGNm7cGOhQREQkSPg0QnXFFVdwxRVXUF5ezurVq3nggQeIjIzktttu\nY9iwYdjt9uOe06lTJ9auXUufPn3IzMz0LjRxRFFREQ6HgwsuuMC7b8qUKdxwww306dOHDRs20LZt\n29M8PRER+bV79913vY9N0+S7777zeTaFiIjI6fL5GqpNmzaxYsUK1q9fT7du3ejTpw+ff/45Y8eO\nZf78+ce179mzJ+vXr2fIkCGYpsn06dN54403SEhIICkpib1799K0adMazxk/fjyTJ09m8eLFhIWF\nkZqaevpnKCIiv2qbNm2qsR0TE8MLL7wQoGhERCTYGKZpmqdqdP3113PRRReRkpJC7969adCgAVA5\njS8lJYXly5f7PdCTyckpCth7i4jILxMXFxXoEM4JZ6LviouLUh9YRbmopDxUUy4qKQ/VTjcXtfVf\nPo1QLViwgIiICBo3bkx5eTn79u2jefPmWCyWgBZTIiISvHr06HHc6n5H+/jjj89iNCIiEqx8KqjW\nrVvH8uXLWb58OXl5edx7773ccccdDB482N/xiYiInNCR+xmKiIgEkk8F1dKlS1m6dCkATZs25Z13\n3mHQoEEqqEREJGCOXIfrcDj49NNPvSvLut1u9u/fz4MPPhjI8EREJEj4VFA5nc4aK/lp9aTg4HK5\n2Lfv+0CHIXJOaN78N8fd+kHODffffz9lZWX88MMPXH755WzevJkOHToEOiwREQkSPv11kJyczMiR\nI7nxxhsB+Oijj+jRo4dfA5PA27fvexg1nPNCQwMdikhAHayoYN/8NFq1ujjQocgJ7N27l48++ohn\nn32WlJQUHn30UY1OiYjIWeNTQfXII4+wevVqNm/ejM1mY8SIESQnJ/s7NjkHnBcaStMGYYEOQyTg\nDgY6ADmpxo0bYxgGLVq0YNeuXdxyyy04HI5AhyUiIkHC5/krrVq1okmTJhxZZX3z5s1cccUVfgtM\nRETEF61bt+aZZ55h6NChTJgwgezsbJxOZ6DDEhGRIOFTQfXUU0+xdu1amjVr5t1nGAZvvvmm3wIT\nERHxxbRp0/jqq6+4+OKLGTduHBs2bGD27NmBDktERIKETwXV+vXrWb16tfeGviIiIueKcePGcfPN\nN+NwOEhKSiIpKSnQIYmISBCx+NKoWbNm3ql+IiIi55JBgwaxZs0akpOTefzxx9m0aVOgQxIRkSDi\n0whVw4YNuemmm+jYsWON5dNnzJjht8BERER80b17d7p37055eTnr1q1j1qxZFBQUsHbt2kCHJiIi\nQcCngqpr16507drV37GIiIjUye7du1m1ahWrV6/mggsuYMSIEYEOSUREgoRPBdWAAQPYv38/u3fv\npkuXLvz88881FqgQEREJlH79+mG1Wunfvz8LFiwgPj4+0CGJiEgQ8amgev/995k7dy7l5eUsWbKE\nIUOG8Oijj9K/f39/xycifuYyTWyGEegwROrsueee45JLLgl0GCIiEqR8WpTi1VdfZfHixURERNC4\ncWOWL1/OvHnz/B2b1DOpebkMzs6qsW9gdha9TrAvNS/Xu730UCG/zcthZn5ujXZzC/K5MucgN2Zn\ncWN2Fn2ys+iRncXE3Gxvm1uzs+h/zOtvKy+jU242LtOkzOOhQ24231SU+dQeIM/tYnxuNjdkZ9E7\nO4uk7Cym5eXg9mFhlkNuN+1zs9lbdVNRl2nyp5xsumUf5MvSUu/xI+eUnJ1FSnaWNz6AOcec95H/\nRuX8slvLjso+yJ+PyemxNpeWMiYn+4TH1hYX070qBzsqyk/6Gql5ubxWmO/NdZ7rl93/p392FksO\nFR63/61DhVxX9e9e5Hb/otc8ma/KShlQdU4Ds7PI0r2KfhVUTImISCD5NEJlsViIjIz0bsfHx2Ox\n+FSLSRBpaFg4+s/u9w4fZrfFQrTH4933YVERPxkGC2JiASj2eHjRUcHvTPjumEGSr11OelksPNM4\nzrsv2+kk6VAB4xwOmoaE8INhEGWarC0u5vqqz+j6sjKaeTzYDIOMkhJCTZPLQsMwTfOU7bOdTgYV\n5HGD1cbKJk0ItVjIcjq5vSCPGfl5TGncpNYcfFZaQpRp0sJuJ8/lZHR+Hm5gWUxj4kNCWFV0mGjT\n5IP4873PeSE/j7GHDvFxXANshsFWl5M+FgvTjjrvutiNyR2htd/q4J3SEhpZTjw6taC0hL42GxNi\naz/nIzn5pLiYGI+HxrYQn2N0eDz8aLHQNTz8uGOLKsr5Y2gDBjVs5PPr1SbL6WRccRF/iYzi9+ER\nzM7PY0ZhAX+N0/QwERERqTufCqrWrVuzcOFCXC4XO3bsYNGiRbRp06bW53g8HqZNm8auXbuw2+2k\npqbSvHlz7/HU1FS+/PJLIiIiAHjllVdwOp1MmDCB8vJy4uPjmTFjBmFhYadxenI2NbIaVLgqH7tM\nk7+Wl3KDxcK6o6aT/b+yEkaE2AmvKshT8/OIN036h4bx6lGjNADfmia3HVUQuEyTvxcdopFpcn5I\nCFvKyrAAf7Dbebm0ukD6yuXkUosVgI0V5bSoGlnypf2kwnzaGxYmH1U4nR8SwuTwSHa7Kked9joq\n+GNhAQsbNyHWWvN/of84Kmhlmvy3vIxxhw/xW8NgduM47FXn+x9HBS2PGel6ICaWhXk5bCgtoWtE\nJN+ZJgNPUQgdMSQ7iyjDIM80yTEMBtlCGBcTS5bTyWGLhSvDwslyOnm8MJ8fTRM3cLXFyrNN4ng+\nP4/VmDTyeFhyqJAhRxUud2UfZIvF4GeXi+aHDnGezcpfSopxAw7gBpuNR2ObkOV0cuOhAjbGNmFj\nRTmtq/6t1xQX8dfSEtyACfwpPIJekVG4TZOpebls9LgJAa612ojwmDQNsdc4r37ZWfxosfBGRTlN\nS0ooMT01Xm98eAQ3REbxdVkZjxQdorVhsMs0SYtpzEMFedxZ9X5He+FQAR2A34dXfue0C7HzqavE\npzxLcDlV/7V06VKWLFmCzWZj7NixXH/99eTn56v/EhEJUj4NM02dOpWDBw8SGhrK5MmTiYyM5Mkn\nn6z1OWvWrMHhcJCens748eOZOXNmjePbt2/ntddeIy0tjbS0NKKionjllVfo27cvixYt4rLLLiM9\nPb3uZyZnXSOLlYqqxy8X5GMHRkZFUVH1R3baoUKcwN2NYgD4b3kZH2IyKTKaS0LtZFssNabd5Vks\nPFdawg3ZWfw+5yB9cw7ys9vDmw1jsBkGGyrKaWaaDI9uxAHDYGNp5R/H35kmnav+QN/mdtGuqug5\nVfsit5sthsE9UTX/EAfoERnJ6EaVo2ot7KG8H3/+ccUUwDduNxXAXUWHMYH/1yTeW0wdOd7WVvN5\nVsMgxDQpcHvIdjopsFh4vrSkxnS/246ZpnjEXsOgkWHwTvz5vBbdkNfdLgrdbjJKS7nI48FuGNxV\nkMdFFgsfxZ/PyibxbPS4WX74EA/GxGIBXm8UW6OYAniiUSPspsn7cedxa3Q0fy0p5tGISN6PP59F\nMY1Z6PFQ4fHwWVkpF3o8hFosbHO76GAL4ZuKMmaWlvBSo1jejz+f56IbklpaCsAz+bl853HzfpN4\n3mkSzxq3i1YnOK8HwyOI83j4IP58QgyDqWWlTI2MYnX8+TwSHsnUssrX21heRoFhcF9UNGviz+eC\nkBCWxJ9/XDEFsN40uSUswrt9wO1Cf+7+Ohw4cIA777yTG264gezsbEaMGMH+/fvr/Hq19V85OTmk\npaWxZMkS5s+fz/PPP4/D4VD/JSISxHwaoQoPD2f8+PGMHz/e5xfesmWLd6n1Dh06sG3bNu8xj8fD\nvn37mDp1Krm5udx2223cdtttbNmyhTFjxgDQrVs3nn/+ee64445fcDoSSLEWKw7DIN/tYrHbxYzw\nSGItNtyGQaHbzWsV5fypQRjWqgJr6uFDXG0YXBEeXllIFRexvbyc34WF8e+SyoJgVdXUuL8XFrDY\nUcHMxpXT8KBySmA7q5VQi4WbLFb+VlxMYmgoOUdNIfufYXBHaKhP7Xc7KjCBdlWjQysOH+Zv5ZV/\nuBcZBneEhHB3VVF1IqZp8r1hYAGebhDOn8tK+GtBPg/HNq5xfKy95uhTttNJqWHQJtRORlkpTT0e\n3j9qSuDJbC8vwwM8VTUl75LQBtgPH+KA08EWZwVtLBY+LimhyDCYWtUm3GKhlWGwy+Xky7IyQqum\nJx7r87Iympmm999qZINw3i8r492yUvI8JqEGhFosfOVwcIlh8eb6kQYNmHe4iHLD4N7CfO/rGVXn\n/77Hw6tRDb3/hvFAe9vxX0ObKypoVfXe80uKSDYsXFU1spQUEcH48lKynU62upzcYFho26D20uhn\np5Niw6gxtfBLp4PWVSOTUr9NnTqVUaNGMXv2bOLi4ujbty8TJ07krbfeqtPr1dZ/bd261XtPRrvd\nTkJCAjt37jzr/Vfmj/8j+7sCSsscfnuP+iQ8zK5coDwcTbmopDxUMgyDnu07EI5vM4B+KZ8KqjZt\n2mAcswpYXFwcGRkZJ31OcXFxjeuurFYrLpcLm81GaWkpt99+O3feeSdut5sRI0bQrl07iouLiaoa\nHYiIiKCoqKgu5yQBEmuz4gT+XFBAGxOuj4zEUXX91MuFBcQAA6IbArCgsID/WSzkeky6Hxl9sVjI\nrKgsqL5wVNDyqM/cHY1iWJydxcuFBd4CZbdpcou9sli6r1Ejeufnsaq4iBiPh/NDQvi2opwyw+Ca\nqj/ET9XejYmnqiBsbAuhf3Q0/aOjqfB4uDo/l9/Za/+fcGt5OU7D4O3ohrSyh2Ix4PGyUgY6HDSz\n29laXo7DMLj6mOuFZh8q4BKPh8TQBrxRVEQLH1fcW19exgWm6Z0++W1FBU7DoKU9lB2eQwwLbcB3\nTkeNwghgr2mSbLXVmA55rK+cDtpUFRvP5+fxicvJuLAIWtntvFNSRLGrcm7nDo+b/vZQvq0oxw10\naBBGatFh7raHckfVSOSOinKswEGXC4dh8LuqaVAOj4cDhsHVJ5jeuN3t4qqqUcafTJMke/V1WZvK\nSgk1TeJsNr41TZ4IP/U4U6npoYFpegu5Co+HL4C5ERG1P1HqhYKCArp06cJzzz2HYRgMGjSozsUU\n1N5/Hd1PQWVfVVxc/Iv7r5iYcGy2uhf00YfDyC4vIDzs+B9EgpVyUUl5qKZcVFIe8K79EBd3/AyW\nM8Gngmrnzp3ex06nkzVr1pCZmVnrcyIjIykpqb4+wePxYKv6JTosLIwRI0Z455dfffXV7Ny50/uc\nBg0aUFJSQnR09C8+IQmcJlUjVGtND4saVU4hs1sshJgmK00Pz0dUfogL3W7+5nRwry2EsU2qR3zu\nyD7Izqo/1L/xuEk+5rqagXY7rzudPGCa5LpcFFgsdKkqlmKtNroZBvMrKriYyuLhs7IyLvB4iKxa\nWOJU7ZuG2GnjdjO1IJ8Xqq57qvB4mFNYQIhpcvkprodYX15GU4+HVlVFW6/IKJaWlfJ4YT5vxp/P\n+vIyzvd4vAWQ2zSZV1hAhmkyv2HD6vO2+fbFl+l0kmsY5LldNLRYeepQAUkWC1Zgf9Wo27aKChY5\nnRS53URZrTyfn4cL6B8VzYN5ObQ5wbRFgF0eD8OrCp2vXE6620LoFRXFtxUVvOd2c73V6l3k49qw\ncDLKSmlumhiGQVPDwqcOB3cAPzocjD1UyISwcHpHRmGhcmXBK8LDebYgjzLDOGFe9xoGD1S9//mG\nwWang0FUrqI4vbiIPlYrJaZJvmFwddjxC1oc6zchdgwqi7tLQxvwaF4uvwU6+vBcOfc1aNCArKws\n7w9/X3zxBfYTjLz6qrb+69hjJSUlREVF/eL+q6CgtM7xAbSMvoCrWiWSk6MfHqHyjyTlQnk4mnJR\nSXmoFtfk9HJRWzH2i5fqCwkJ4cYbb2Tjxo21tuvUqZN3BCszM5PExETvse+//56hQ4fidrtxOp18\n+eWXtG3blk6dOvHpp58CkJGRQefOnX9peBJAsTYbbiDZsHiLCoBQ06SNCddUjQY8lZ/HhabJ2Jia\n0+cutVnZ63HjNk32GQadQkNrHB8c1ZByw2Bl0WE+KyslzuOhkbX6F95x0Y0otFi8U8i+clZPR/Ol\nPcDLMY1xAL1ys+mdnUW/3Gx2uF3MCovAMAy2lZfRLzuLsqNWLjzia5eTNsesfpnaKJYdhsF7hw/z\ntctJvmFwY9VS7D1yDpLpcvL36IZcFhqGyzT50WLhbZfjuCXTj11SHioX7bjJYmVIXi7JOQeJNyw8\nG9uEzWVlRFYt9NArMooeVgs35+XQMzuLL10u/t4ollCLhfMsFj70uFl6zJLlLtPkgMXCNVXFxl3h\nkaxyObk5O4vHDxXQ2DQJxWBreTk24OLQUL5yOmhbldvJjWIowiQ5O4u7C/O5J7QBfaOisRkG99ls\nPFRSxC3ZWfzs8dDM46lxjRlUFmFlhkGnqkLryYYxfO/x0DM7i5S8HK602ngytgkbS0u4wDS9zzdN\nk1uzs1hfcvxCE1bD4PEGYTx4qJAbsrNwYPLSaa6iKOeOxx57jDFjxvD999/Tv39/JkyYwOOPP17n\n16ut/2rfvj1btmyhoqKCoqIi9uzZQ2JiovovEZEgZpjmqW+u8+6773ofm6bJd999x3/+8x+WLVt2\n0uccWSXp22+/xTRNpk+fTkZGBgkJCSQlJfHaa6/xwQcfEBISQv/+/Rk6dCi5ublMnDiRkpISYmJi\nmD17NuEnWE75aKq6/WfPnt2cd9/dND3F9Sly9hW63XQvyOPfMY2Jsuo6IH87UF7GwVdeo1WriwMd\nSr3nr+kWTqeT77//HrfbTcuWLU9rhOpU/dfSpUtJT0/HNE3GjBlDr169fnH/dSb6Lv3yXE25qKQ8\nVFMuKikP1U43F7X1Xz4VVJMmTaqxHRMTw9ChQ2nWrFmdgzpT9CHxHxVU565/Fh3mxbJSPvJh8Qo5\nfSqozpwzWVAd2zcda8aMGWfsvc40FVRnlnJRSXmoplxUUh6q+bOg8ukaqnO5UxIJRn2joukbpWsM\nJbhdeeWVgQ5BRETEt4KqR48ex63yB5XT/wzD4OOPPz7jgYmIiNRmwIAB3sc7duxg48aNWK1Wrr32\nWlq1OtEdzkRERM48nwqqfv36ERISwqBBg7DZbKxcuZL//ve/PPTQQ/6OT0REpFavv/46S5YsISkp\nCbfbzdixYxkzZgwpKSmBDk1ERIKATwXVv//9b9555x3v9siRI7n11ltp2rSp3wITERHxRXp6Ou+8\n84733lF//OMfGTp0qAoqERE5K3xeNv3zzz/3Pl67di0RuiGmiIicAxo2bOi9TxRAeHi4+igRETlr\nfBqhevrpp5k4cSK5uZX3wmnZsiWzZs3ya2AiIiK+aNasGYMHD+amm27CZrPxr3/9i8jISF566SUA\n7r///gBHKCIiv2Y+FVTt2rVj1apV5OfnExoaql/+RETknNGiRQtatGiBw+HA4XBw7bXXBjokEREJ\nIj4VVAcOHGDKlCkcOHCAt956i7FjxzJ9+nQuuugif8cnIiJSK41AiYhIIPl0DdXUqVMZNWoU4eHh\nNGnShL59+zJx4kR/xyYiInJKCxYs4Morr+TSSy/l0ksvpU2bNlx66aWBDktERIKETyNUBQUFdOnS\nheeeew7DMBg0aBBvvfWWv2OTc8DBiopAhyAScPr/4Ny2YMEC3n33XS688MJAhyIiIkHIp4KqQYMG\nZGVleW/u+8UXX2C32/0amARe8+a/Yd/8NA4GOhCRc0Dz5r8JdAhyEq1ataJJkyaBDkNERIKUTwXV\npEmTGDNmDD/88AP9+/fn0KFD/PWvf/V3bBJgNpuNVq0uDnQYIiK1Gj58OP369eN3v/sdVqvVu3/G\njBkBjEpERIKFTwVVXl4ey5Yt4/vvv8ftdtOyZUuNUImIyDnh2WefpV+/frrZvIiIBIRPBdVf/vIX\nunfvTuvWrf0dj4iIyC9it9u10p+IiASMTwVVs2bNmDRpEr/73e9o0KCBd/8tt9zit8BERER8cc01\n1zBz5ky6detGSEiId/8VV1wRwKhERCRY1FpQHTx4kPPOO4+YmBgAvv766xrHVVCJiEigffPNNwBs\n377du88wDN58881AhSQiIkGk1oLq3nvvZfny5cyYMYPXX3+du+66y+cX9ng8TJs2jV27dmG320lN\nTaV58+be43//+99ZtWoVANcfhFxJAAAgAElEQVRddx33338/pmnSrVs3fvOb3wDQoUMHxo8fX4fT\nEhGRYJGWlhboEEREJIjVWlCZpul9vHLlyl9UUK1ZswaHw0F6ejqZmZnMnDmTuXPnAvDjjz/y3nvv\n8Y9//AOLxcLQoUNJTk4mLCyMtm3b8re//a2OpyMiIsHmiy++YP78+ZSWlmKaJh6Ph59++olPPvkk\n0KGJiEgQsNR28Mh9p6BmceWLLVu20LVrV6BypGnbtm3eY+effz6vvfYaVqsVwzBwuVyEhoayfft2\nDh48yPDhw7nnnnv43//+94veU0REgs+UKVNITk7G7Xbzhz/8gebNm5OcnBzosEREJEjUWlAd7eji\nyhfFxcVERkZ6t61WKy6XC4CQkBBiY2MxTZNZs2Zx2WWX0aJFC+Li4hg9ejRpaWmMGTOGRx555Be9\np4iIBJ8GDRqQkpLClVdeSXR0NKmpqWzevDnQYYmISJCodcrfd999R1JSElC5QMWRx6ZpYhgGH3/8\n8UmfGxkZSUlJiXfb4/Fgs1W/XUVFBZMnTyYiIoInn3wSgHbt2nlvynj55ZeTnZ3tfS8REZETCQ0N\npbCwkBYtWvD111/z+9//ntLS0kCHJSIiQaLWgurDDz+s8wt36tSJtWvX0qdPHzIzM0lMTPQeM02T\n++67j6uuuorRo0d797/00ks0atSIe+65h507d3LBBReomBIRkVrdcccdPPTQQ8yZM4fbbruNlStX\n0q5du0CHJSIiQcIwf+nFUT46ssrft99+i2maTJ8+nYyMDBISEvB4PDz88MN06NDB2/7hhx+mZcuW\nPPLII5SWlmK1Wpk6dSqtWrWq9X1ycor8Eb6IiPhBXFyUX173yGyG0tJSvv/+e9q0aYPF4vOs9rPu\nTPRdcXFR6gOrKBeVlIdqykUl5aHa6eaitv7Lpxv71oXFYuHpp5+use/o4ui///3vCZ83b948f4Uk\nIiK/MmvXruXiiy+mWbNmrFmzhmXLlnHppZeSmJh4ThdUIiLy66HeRkRE6qX58+fz0ksvUVFRwc6d\nO5kwYQJJSUmUlpYya9asQIcnIiJBwm8jVCIiIv60YsUK0tPTCQsL47nnnqNHjx4MHDgQ0zTp06dP\noMMTEZEgoREqERGplwzDICwsDIBNmzZ5732oxYxERORs0giViIjUS1arlcOHD1NaWsqOHTu49tpr\nAThw4ECN23SIiIj4k3ocERGpl0aPHs0tt9yCy+XitttuIz4+nvfff58XXniBP/7xj4EOT0REgoQK\nKhERqZd69+5Nx44dKSgooE2bNgBERESQmprKVVddFeDoREQkWKigEhGReuu8887jvPPO825fd911\nAYxGRESCkRalEBERERERqSMVVCIiIiIiInWkgkpERERERKSOVFCJiIiIiIjUkRalEBERqVJeXs4j\njzxCXl4eERERzJo1i9jY2BptXnrpJdatW4fNZmPy5Mm0b9+eb775hjFjxvCb3/wGgKFDh9KnT58A\nnIGIiJxtKqhERESqLF68mMTERMaNG8eqVat45ZVXmDJlivf49u3b+c9//sM//vEPfv75Z8aNG8fb\nb7/N9u3bufPOO7nrrrsCGL2IiASCpvyJiIhU2bJlC127dgWgW7dubNiw4bjjXbp0wTAMLrzwQtxu\nN/n5+Wzbto1169bxhz/8gcmTJ1NcXByI8EVEJAA0QiUiIkHpH//4BwsWLKixr3HjxkRFRQGVNwku\nKiqqcby4uJhGjRp5t4+0ad++PQMHDqRdu3bMnTuXl19+mYkTJ570vWNiwrHZrKd9DnFxUaf9Gr8W\nykUl5aGaclFJeajmr1z4raDyeDxMmzaNXbt2YbfbSU1NpXnz5t7jS5cuZcmSJdhsNsaOHcv1119P\nfn4+EyZMoLy8nPj4eGbMmEFYWJi/QhQRkSA2cOBABg4cWGPf/fffT0lJCQAlJSVER0fXOB4ZGek9\nfqRNVFQUPXv29Lbt2bMnzzzzTK3vXVBQetrxx8VFkZNTdOqGQUC5qKQ8VFMuKikP1U43F7UVY36b\n8rdmzRocDgfp6emMHz+emTNneo/l5OSQlpbGkiVLmD9/Ps8//zwOh4NXXnmFvn37smjRIi677DLS\n09P9FZ6IiMhxOnXqxKeffgpARkYGnTt3Pu74Z599hsfj4aeffsLj8RAbG8uoUaPYunUrABs2bKBt\n27ZnPXYREQkMvxVUR89D79ChA9u2bfMe27p1Kx07dsRutxMVFUVCQgI7d+48bu76559/7q/wRERE\njjN06FC+++47hg4dSnp6Ovfffz8Af/7zn9m6dSvt2rXj8ssvZ/DgwYwbN46pU6cCMG3aNKZPn87w\n4cP58ssvue+++wJ5GiIichb5bcpfcXExkZGR3m2r1YrL5cJms1FcXOydow6Vc9CLi4tr7D/R3PUT\n0bxQERE5U8LCwnjxxReP2//oo496H48bN45x48bVON62bVuWLFni8/ucqb5LfWA15aKS8lBNuaik\nPFTzVy78NkJ17Dxzj8eDzWY74bEjc9CP3n+iuesiIiIiIiLnEr8VVJ06dSIjIwOAzMxMEhMTvcfa\nt2/Pli1bqKiooKioiD179pCYmHjKuesiIiIiIiLnEsM0TdMfL3xklb9vv/0W0zSZPn06GRkZJCQk\nkJSUxNKlS0lPT8c0TcaMGUOvXr3Izc1l4sSJlJSUEBMTw+zZswkPD/dHeCIiIiIiIqfNbwWViIiI\niIjIr53fpvyJiIiIiIj82qmgEhERERERqSMVVCIiIiIiInXkt/tQnUlHFrjYtWsXdrud1NRUmjdv\n7j2+dOlSlixZgs1mY+zYsVx//fUBjDYwTpWjv//976xatQqA6667znuzymByqhwdaTN69GiSkpIY\nOnRogCINrFPl6dNPP+Xll1/GNE3atm3Lk08+iWEYAYz47DtVjl5//XX++c9/YhgG9957Lz179gxg\ntIH19ddf89xzz5GWllZj/yeffMLLL7+MzWYjJSWFQYMGBSjC+seX77Jfk6M/Q/v27eOxxx7DMAxa\nt27Nk08+icVi4aWXXmLdunXYbDYmT55M+/btT9q2vnE6nUyePJkDBw7gcDgYO3YsF198cdDlAcDt\ndjNlyhT27t2LYRg89dRThIaGBmUuAPLy8rj11lt5/fXXsdlsQZuHAQMGeO99e9FFFzF48GCeffZZ\nrFYrXbp04f777z/p92ZmZuZxbevErAc+/PBDc+LEiaZpmuZXX31l3nvvvd5j2dnZZt++fc2Kigrz\n8OHD3sfBprYc/fDDD+aAAQNMl8tlejwec/DgweaOHTsCFWrA1JajI2bPnm0OHDjQXLRo0dkO75xR\nW56KiorMm266yczLyzNN0zTnzZvnfRxMasvRoUOHzOuuu86sqKgwCwsLze7duwcqzICbN2+e2bdv\nX3PgwIE19jscDjM5OdksLCw0KyoqzFtvvdXMyckJUJT1jy/fZb8Wx36GxowZY27cuNE0TdN84okn\n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\nA/0/jwFH+YZECOIAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "\n", "import pymc3 as pm\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import pandas as pd\n", "import theano.tensor as tt\n", "\n", "x = np.random.randn(100)\n", "\n", "with pm.Model() as model:\n", " mu = pm.Normal('mu', mu=0, sd=1)\n", " sd = pm.Normal('sd', mu=0, sd=1)\n", "\n", " obs = pm.Normal('obs', mu=mu, sd=sd, observed=x)\n", " step = pm.Metropolis()\n", " trace = pm.sample(5000, step)\n", "pm.traceplot(trace);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hm, looks like something has gone wrong, but what? Let's look at the values getting proposed using the `Print` operator:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mu __str__ = 0.0\n", "sd __str__ = 0.0\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Sequential sampling (1 chains in 1 job)\n", "CompoundStep\n", ">Metropolis: [sd]\n", ">Metropolis: [mu]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "sd __str__ = 1.4406091401518182\n", "mu __str__ = 0.0\n", "sd __str__ = 0.0\n", "sd __str__ = 0.0\n", "mu __str__ = -0.7642399016472413\n", "mu __str__ = 0.0\n", "sd __str__ = -0.12899381409884816\n", "mu __str__ = 0.0\n", "sd __str__ = 0.0\n", "sd __str__ = 0.0\n", "mu __str__ = 1.2614994475439572\n", "mu __str__ = 0.0\n", "sd __str__ = 0.7329434719007808\n", "mu __str__ = 0.0\n", "sd __str__ = 0.0\n", "sd __str__ = 0.0\n", "mu __str__ = 0.9331983611718919\n", "mu __str__ = 0.0\n" ] } ], "source": [ "with pm.Model() as model:\n", " mu = pm.Normal('mu', mu=0, sd=1)\n", " sd = pm.Normal('sd', mu=0, sd=1)\n", " \n", " mu_print = tt.printing.Print('mu')(mu)\n", " sd_print = tt.printing.Print('sd')(sd)\n", " \n", " obs = pm.Normal('obs', mu=mu_print, sd=sd_print, observed=x)\n", " step = pm.Metropolis()\n", " trace = pm.sample(3, step, tune=0, chains=1, progressbar=False) # Make sure not to draw too many samples" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the code above, we set the `tune=0, chains=1, progressbar=False` in the `pm.sample`, this is done so that the output is cleaner.\n", "\n", "Looks like `sd` is always `0` which will cause the logp to go to `-inf`. Of course, we should not have used a prior that has negative mass for `sd` but instead something like a `HalfNormal`.\n", "\n", "We can also redirect the output to a string buffer and access the proposed values later on (thanks to [Lindley Lentati](https://github.com/LindleyLentati) for providing this example):" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Sequential sampling (1 chains in 1 job)\n", "CompoundStep\n", ">Metropolis: [sd]\n", ">Metropolis: [mu]\n" ] }, { "data": { "image/png": "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\nWz3R0dFUqVLltmoXERGRaxy2zlFWVhbTpk1j0aJFN/z64cOHWbduHc2aNWPgwIEADBgwgJ49ezJ5\n8mT69euHyWRi9uzZmM1mqlatSq9evShXrhydO3e2BZsbGT58OJMmTcLNzQ13d3ciIiLw8fHhxIkT\n9OjRAzc3N1577TXbLFBiYiLPPvvs745p+PDhtk/bubq68sYbb+Dp6Unnzp3p378/ZrOZoKAgunTp\nQm5uLpMnT6Z///7k5+czZcoUypUrR82aNXn++edxd3enRYsWtG3bFoCvvvqK3r174+LiwtixY6lU\nqRIRERGMGTMGs9mMm5ubrYdJRERE7p7JKLqLofxh3Ysp0dI81XorGlfponGVLhpX6VOax3ary2pa\nJENERESkGIUjERERkWIUjkRERESKUTgSERERKUbhSERERKQYhSMRERGRYhSORERERIpROBIREREp\nRuFIREREpBitkC0iIiJSjGaORERERIpROBIREREpRuFIREREpBiFIxEREZFiFI5EREREilE4EhER\nESlG4UjsprCwkBkzZtCnTx9CQ0M5efKko0uyi7y8PCZMmEBISAg9e/bk888/d3RJdnXu3Dnatm3L\n8ePHHV2KXb377rv06dOH7t27s3btWkeXYxd5eXmMGzeOvn37EhISUibO2aFDhwgNDQXg5MmT9OvX\nj5CQEMLCwigsLHRwdXev+LiOHDlCSEgIoaGhDBkyhLNnzzq4urtXfFxFNm/eTJ8+fRxU0b2hcCR2\n8+9//5urV6/y4YcfMm7cOObMmePokuxi06ZNeHt7s2bNGt577z1mzZrl6JLsJi8vjxkzZlCuXDlH\nl2JXcXFxHDhwgH/+85/ExMRw+vRpR5dkFzt37iQ/P5/Y2FhGjhzJ22+/7eiSSmT58uVMmzaN3Nxc\nAN544w1effVV1qxZg2EYpfYPkV+PKzIykunTpxMTE8MTTzzB8uXLHVzh3fn1uAD+97//sW7dOsra\nkokKR2I33377La1btwagcePGfP/99w6uyD6eeuopXnnlFQAMw8DV1dXBFdnP3Llz6du3L1WrVnV0\nKXb11VdfERgYyMiRIxkxYgTt2rVzdEl2Ubt2bQoKCigsLOTSpUuYzWZHl1Qi/v7+REdH2x4fPnyY\n4OBgANq0acPu3bsdVVqJ/HpcCxYsoH79+gAUFBRgtVodVVqJ/HpcmZmZLFiwgClTpjiwqnujdL+z\nxKlcunQJT09P22NXV1fy8/NL/Q/w8uXLA9fGN3r0aF599VUHV2QfH3/8MZUqVaJ169YsW7bM0eXY\nVWZmJj/99BNLly4lJSWFF198kU8//RSTyeTo0krEw8ODU6dO0alTJzIzM1m6dKmjSyqRjh07kpKS\nYntsGIbtHJUvX56LFy86qrQS+fW4iv742L9/P6tWrWL16tWOKq1Eio+roKCAqVOnMnny5FIb9m5F\nM0diN56enmRnZ9seFxYWlvpgVCQ1NZUBAwbQtWtXOnfu7Ohy7GL9+vXs3r2b0NBQjhw5wsSJE0lP\nT3d0WXbh7e1Nq1atsFgs1KlTB6vVSkZGhqPLKrEPPviAVq1asW3bNjZu3MikSZOuu8RR2rm4/PIr\nKTs7Gy8vLwdWY1+ffPIJYWFhLFu2jEqVKjm6nBI7fPgwJ0+eJDw8nLFjx3Ls2DEiIyMdXZbdlI3f\nXOIUmjRpwo4dO3j66ac5ePAggYGBji7JLs6ePcvgwYOZMWMGjz32mKPLsZvif72GhoYSHh6Or6+v\nAyuyn6ZNm/KPf/yDQYMGcebMGXJycvD29nZ0WSXm5eWFm5sbABUrViQ/P5+CggIHV2U/f/7zn4mL\ni6NFixZ8+eWXPProo44uyS42btzIhx9+SExMTJn4PgRo1KgRW7duBSAlJYWxY8cydepUB1dlPwpH\nYjdPPPEEu3btom/fvhiGwezZsx1dkl0sXbqUCxcu8M477/DOO+8A1xoTy1oTc1nSvn179u3bR8+e\nPTEMgxkzZpSJXrHnn3+eKVOmEBISQl5eHmPGjMHDw8PRZdnNxIkTmT59OgsWLKBOnTp07NjR0SWV\nWEFBAZGRkVSrVo1Ro0YB0Lx5c0aPHu3gyuRWTEZZazEXERERKQH1HImIiIgUo3AkIiIiUozCkYiI\niEgxCkciIiIixSgciYiIiBSjcCQicp9FR0dfdxuGIl27dgXg//7v/5g3b55dnis5Odl2e4fvvvuu\nTK1FI3KvaJ0jEREnsXHjRgCOHTvGuXPn7HLMn376ieTkZAAaNmxIw4YN7XJckbJM4UhEypy4uDii\no6Mxm82kpqbSqFEjIiMjOXPmDEOHDsXHxwer1cqKFSuYPXs2e/bswWQy0aVLF4YPH37T/S0WC+vX\nr2flypWYTCYaNGjA9OnTsVgsTJkyhR9++AGAkJAQevfuzdGjR5k1axaXL18mIyODQYMGMWDAgJvW\nHRQUxL59+1i4cCGXL19myZIlDB8+nDfffJOvv/6agoICunfvzvPPP09cXBzz5s2jsLCQgIAAxo4d\ny5QpU7h48SLp6ek888wzjB8/noiICFJSUpg5cyZPPfUUixYtIiYmhsTERGbMmEFWVhYeHh5MnTqV\nRo0aMWnSJDw9ju9R4AAABHZJREFUPTl8+DBpaWmMHDmSHj163K9TJ+IcDBGRMmbv3r1Gw4YNjePH\njxuFhYXGqFGjjBUrVhjJyclGYGCgkZycbBiGYaxatcp46aWXjPz8fOPy5ctGjx49jB07dtx0//j4\neKNDhw5GRkaGYRiGER4ebsyZM8eIi4szhg0bZhiGYWRkZBgTJ040DMMwIiIijN27dxuGYRhJSUlG\n48aNDcMwjIULFxoLFy78Td2BgYGGYRjG+vXrbcdYs2aNMXv2bMMwDCM3N9d47rnnjH379hl79+41\nmjZtaly4cMEwDMN47733jI8//tgwDMO4cOGC8cgjjxjnzp0z9u7dazz33HO216Xo3z169DC2bdtm\nGIZhHDhwwGjXrp2Rm5trTJw40Rg5cqRRWFhoxMfHG8HBwXY7LyKlhXqORKRMat68OXXq1MFkMtG1\na1f27t0LQOXKlalRowZwbYapW7duuLq64u7uTufOndmzZ89N99+3bx/t27fHx8cHgD59+rB3714C\nAgJITExkyJAhbNq0ifHjxwPYbgz77rvvEhUVxeXLl+94HHv27OGLL76ga9eu9OrVi9OnT5OQkABA\n7dq1qVChAgBDhgyhWrVqvP/++0RGRpKXl0dOTs4Nj5mdnU1SUhJPPvkkAI0bN6ZixYqcOHECgJYt\nW2IymQgMDCQrK+uOaxYp7XRZTUTKpOL3UjMMw/a4+D3xCgsLr9vHMAzbjVxvtP+Nts/Pz8fHx4et\nW7eya9cudu7cSbdu3di6dStTp07Fy8uL9u3b8/TTT9tu1HknCgoKmDBhgi3IZGRk4OHhwaFDh64b\ny5w5c0hOTuZvf/sbHTp0YPfu3Rg3uTuUYRi/+VrxsVutVgBMJtMd1ytSFmjmSETKpG+//Za0tDQK\nCwvZsGEDbdq0+c02jz76KBs2bKCgoICcnBw2b95MixYtbrp/cHAwX3zxhW025aOPPqJFixZ8/vnn\njB8/nnbt2jFt2jQ8PDxITU1l165djB49mg4dOrBv3z4AWwC5FVdXV/Lz8201fvTRR+Tl5ZGdnU1I\nSAiHDh36zT67du1iyJAhdOrUidTUVFvtxY9VxNPTEz8/P7Zv3w7AwYMHOXv2LAEBAXfwCouUXZo5\nEpEyqWrVqrz22mukpaXRsmVLevXqRWpq6nXb9OnThx9//JGuXbuSl5dHly5deOKJJ4iLi7vh/q6u\nrrzwwguEhoaSl5dHgwYNmDlzJlarlW3btvHMM89gtVp58sknCQoKYtSoUYSEhODl5UXt2rWpXr06\nKSkpv1t7o0aNWLRoEfPnz+eVV17h5MmTdOvWjfz8fLp3706LFi2Ii4u7bp8XXniB1157DS8vLypX\nrszDDz9MSkoK9evX5+LFi0yYMIGePXvatp83bx7h4eFER0fj5uZGdHQ0FovFPi++SClnMm427yoi\nUkrFxcXZPpXliP1FpHTTZTURERGRYjRzJCIiIlKMZo5EREREilE4EhERESlG4UhERESkGIUjERER\nkWIUjkRERESKUTgSERERKeb/A2Hsg4ejcTWeAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from io import StringIO\n", "import sys\n", "\n", "x = np.random.randn(100)\n", "\n", "old_stdout = sys.stdout\n", "mystdout = sys.stdout = StringIO()\n", "\n", "with pm.Model() as model:\n", " mu = pm.Normal('mu', mu=0, sd=1)\n", " sd = pm.Normal('sd', mu=0, sd=1)\n", "\n", " mu_print = tt.printing.Print('mu')(mu)\n", " sd_print = tt.printing.Print('sd')(sd)\n", "\n", " obs = pm.Normal('obs', mu=mu_print, sd=sd_print, observed=x)\n", " step = pm.Metropolis()\n", " trace = pm.sample(5, step, tune=0, chains=1, progressbar=False) # Make sure not to draw too many samples\n", "\n", "sys.stdout = old_stdout\n", "\n", "output = mystdout.getvalue().split('\\n')\n", "mulines = [s for s in output if 'mu' in s]\n", "\n", "muvals = [line.split()[-1] for line in mulines]\n", "plt.plot(np.arange(0, len(muvals)), muvals)\n", "plt.xlabel('proposal iteration')\n", "plt.ylabel('mu value');" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0., 0., 0., 0., 0.])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "trace['mu']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that for each iteration, 3 values were printed and recorded. The printed values are the original value (last sample), the proposed value and the accepted value. Plus the starting value in the very beginning, we recorded in total `1+3*5=16` value above." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.1" } }, "nbformat": 4, "nbformat_minor": 1 }