Created
November 18, 2018 16:52
-
-
Save tanimislam/a155effbd5e961e4fe61914c25e0741f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 24, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import os, sys, pandas, numpy, scipy.stats, pylab, scipy.integrate, scipy.interpolate, time" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"%matplotlib inline" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Here is some code that I have that demonstrates uniform sampling on the following probability density function (PDF): $p(t) = \\frac{t}{10^2}e^{-t/10}$, where $t$ is time." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"First, can you convince me that the above integrates to *unity*, $\\int_{t=0}^{t=\\infty} \\frac{t}{10^2} e^{-t/10}\\,dt = 1$?" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"0.9999999999970992\n" | |
] | |
} | |
], | |
"source": [ | |
"integrated_value = scipy.integrate.quad(lambda t: t/10**2*numpy.exp(-t/10), 0, 300)[0]\n", | |
"print(integrated_value)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Getting a closed form solution of the cumulative distribution function is *hard*! Why not just approximate it with an *interpolated function*?\n", | |
"\n", | |
"First, we run `scipy.integrate.odeint` to get the *cumulative distribution values* as a function of `t` from 0 to $\\infty$. But what does `scipy.integrate.odeint` do and how do we make it do what we want to do?" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Help on function odeint in module scipy.integrate.odepack:\n", | |
"\n", | |
"odeint(func, y0, t, args=(), Dfun=None, col_deriv=0, full_output=0, ml=None, mu=None, rtol=None, atol=None, tcrit=None, h0=0.0, hmax=0.0, hmin=0.0, ixpr=0, mxstep=0, mxhnil=0, mxordn=12, mxords=5, printmessg=0, tfirst=False)\n", | |
" Integrate a system of ordinary differential equations.\n", | |
" \n", | |
" .. note:: For new code, use `scipy.integrate.solve_ivp` to solve a\n", | |
" differential equation.\n", | |
" \n", | |
" Solve a system of ordinary differential equations using lsoda from the\n", | |
" FORTRAN library odepack.\n", | |
" \n", | |
" Solves the initial value problem for stiff or non-stiff systems\n", | |
" of first order ode-s::\n", | |
" \n", | |
" dy/dt = func(y, t, ...) [or func(t, y, ...)]\n", | |
" \n", | |
" where y can be a vector.\n", | |
" \n", | |
" .. note:: By default, the required order of the first two arguments of\n", | |
" `func` are in the opposite order of the arguments in the system\n", | |
" definition function used by the `scipy.integrate.ode` class and\n", | |
" the function `scipy.integrate.solve_ivp`. To use a function with\n", | |
" the signature ``func(t, y, ...)``, the argument `tfirst` must be\n", | |
" set to ``True``.\n", | |
" \n", | |
" Parameters\n", | |
" ----------\n", | |
" func : callable(y, t, ...) or callable(t, y, ...)\n", | |
" Computes the derivative of y at t.\n", | |
" If the signature is ``callable(t, y, ...)``, then the argument\n", | |
" `tfirst` must be set ``True``.\n", | |
" y0 : array\n", | |
" Initial condition on y (can be a vector).\n", | |
" t : array\n", | |
" A sequence of time points for which to solve for y. The initial\n", | |
" value point should be the first element of this sequence.\n", | |
" args : tuple, optional\n", | |
" Extra arguments to pass to function.\n", | |
" Dfun : callable(y, t, ...) or callable(t, y, ...)\n", | |
" Gradient (Jacobian) of `func`.\n", | |
" If the signature is ``callable(t, y, ...)``, then the argument\n", | |
" `tfirst` must be set ``True``.\n", | |
" col_deriv : bool, optional\n", | |
" True if `Dfun` defines derivatives down columns (faster),\n", | |
" otherwise `Dfun` should define derivatives across rows.\n", | |
" full_output : bool, optional\n", | |
" True if to return a dictionary of optional outputs as the second output\n", | |
" printmessg : bool, optional\n", | |
" Whether to print the convergence message\n", | |
" tfirst: bool, optional\n", | |
" If True, the first two arguments of `func` (and `Dfun`, if given)\n", | |
" must ``t, y`` instead of the default ``y, t``.\n", | |
" \n", | |
" .. versionadded:: 1.1.0\n", | |
" \n", | |
" Returns\n", | |
" -------\n", | |
" y : array, shape (len(t), len(y0))\n", | |
" Array containing the value of y for each desired time in t,\n", | |
" with the initial value `y0` in the first row.\n", | |
" infodict : dict, only returned if full_output == True\n", | |
" Dictionary containing additional output information\n", | |
" \n", | |
" ======= ============================================================\n", | |
" key meaning\n", | |
" ======= ============================================================\n", | |
" 'hu' vector of step sizes successfully used for each time step.\n", | |
" 'tcur' vector with the value of t reached for each time step.\n", | |
" (will always be at least as large as the input times).\n", | |
" 'tolsf' vector of tolerance scale factors, greater than 1.0,\n", | |
" computed when a request for too much accuracy was detected.\n", | |
" 'tsw' value of t at the time of the last method switch\n", | |
" (given for each time step)\n", | |
" 'nst' cumulative number of time steps\n", | |
" 'nfe' cumulative number of function evaluations for each time step\n", | |
" 'nje' cumulative number of jacobian evaluations for each time step\n", | |
" 'nqu' a vector of method orders for each successful step.\n", | |
" 'imxer' index of the component of largest magnitude in the\n", | |
" weighted local error vector (e / ewt) on an error return, -1\n", | |
" otherwise.\n", | |
" 'lenrw' the length of the double work array required.\n", | |
" 'leniw' the length of integer work array required.\n", | |
" 'mused' a vector of method indicators for each successful time step:\n", | |
" 1: adams (nonstiff), 2: bdf (stiff)\n", | |
" ======= ============================================================\n", | |
" \n", | |
" Other Parameters\n", | |
" ----------------\n", | |
" ml, mu : int, optional\n", | |
" If either of these are not None or non-negative, then the\n", | |
" Jacobian is assumed to be banded. These give the number of\n", | |
" lower and upper non-zero diagonals in this banded matrix.\n", | |
" For the banded case, `Dfun` should return a matrix whose\n", | |
" rows contain the non-zero bands (starting with the lowest diagonal).\n", | |
" Thus, the return matrix `jac` from `Dfun` should have shape\n", | |
" ``(ml + mu + 1, len(y0))`` when ``ml >=0`` or ``mu >=0``.\n", | |
" The data in `jac` must be stored such that ``jac[i - j + mu, j]``\n", | |
" holds the derivative of the `i`th equation with respect to the `j`th\n", | |
" state variable. If `col_deriv` is True, the transpose of this\n", | |
" `jac` must be returned.\n", | |
" rtol, atol : float, optional\n", | |
" The input parameters `rtol` and `atol` determine the error\n", | |
" control performed by the solver. The solver will control the\n", | |
" vector, e, of estimated local errors in y, according to an\n", | |
" inequality of the form ``max-norm of (e / ewt) <= 1``,\n", | |
" where ewt is a vector of positive error weights computed as\n", | |
" ``ewt = rtol * abs(y) + atol``.\n", | |
" rtol and atol can be either vectors the same length as y or scalars.\n", | |
" Defaults to 1.49012e-8.\n", | |
" tcrit : ndarray, optional\n", | |
" Vector of critical points (e.g. singularities) where integration\n", | |
" care should be taken.\n", | |
" h0 : float, (0: solver-determined), optional\n", | |
" The step size to be attempted on the first step.\n", | |
" hmax : float, (0: solver-determined), optional\n", | |
" The maximum absolute step size allowed.\n", | |
" hmin : float, (0: solver-determined), optional\n", | |
" The minimum absolute step size allowed.\n", | |
" ixpr : bool, optional\n", | |
" Whether to generate extra printing at method switches.\n", | |
" mxstep : int, (0: solver-determined), optional\n", | |
" Maximum number of (internally defined) steps allowed for each\n", | |
" integration point in t.\n", | |
" mxhnil : int, (0: solver-determined), optional\n", | |
" Maximum number of messages printed.\n", | |
" mxordn : int, (0: solver-determined), optional\n", | |
" Maximum order to be allowed for the non-stiff (Adams) method.\n", | |
" mxords : int, (0: solver-determined), optional\n", | |
" Maximum order to be allowed for the stiff (BDF) method.\n", | |
" \n", | |
" See Also\n", | |
" --------\n", | |
" solve_ivp : Solve an initial value problem for a system of ODEs.\n", | |
" ode : a more object-oriented integrator based on VODE.\n", | |
" quad : for finding the area under a curve.\n", | |
" \n", | |
" Examples\n", | |
" --------\n", | |
" The second order differential equation for the angle `theta` of a\n", | |
" pendulum acted on by gravity with friction can be written::\n", | |
" \n", | |
" theta''(t) + b*theta'(t) + c*sin(theta(t)) = 0\n", | |
" \n", | |
" where `b` and `c` are positive constants, and a prime (') denotes a\n", | |
" derivative. To solve this equation with `odeint`, we must first convert\n", | |
" it to a system of first order equations. By defining the angular\n", | |
" velocity ``omega(t) = theta'(t)``, we obtain the system::\n", | |
" \n", | |
" theta'(t) = omega(t)\n", | |
" omega'(t) = -b*omega(t) - c*sin(theta(t))\n", | |
" \n", | |
" Let `y` be the vector [`theta`, `omega`]. We implement this system\n", | |
" in python as:\n", | |
" \n", | |
" >>> def pend(y, t, b, c):\n", | |
" ... theta, omega = y\n", | |
" ... dydt = [omega, -b*omega - c*np.sin(theta)]\n", | |
" ... return dydt\n", | |
" ...\n", | |
" \n", | |
" We assume the constants are `b` = 0.25 and `c` = 5.0:\n", | |
" \n", | |
" >>> b = 0.25\n", | |
" >>> c = 5.0\n", | |
" \n", | |
" For initial conditions, we assume the pendulum is nearly vertical\n", | |
" with `theta(0)` = `pi` - 0.1, and is initially at rest, so\n", | |
" `omega(0)` = 0. Then the vector of initial conditions is\n", | |
" \n", | |
" >>> y0 = [np.pi - 0.1, 0.0]\n", | |
" \n", | |
" We will generate a solution at 101 evenly spaced samples in the interval\n", | |
" 0 <= `t` <= 10. So our array of times is:\n", | |
" \n", | |
" >>> t = np.linspace(0, 10, 101)\n", | |
" \n", | |
" Call `odeint` to generate the solution. To pass the parameters\n", | |
" `b` and `c` to `pend`, we give them to `odeint` using the `args`\n", | |
" argument.\n", | |
" \n", | |
" >>> from scipy.integrate import odeint\n", | |
" >>> sol = odeint(pend, y0, t, args=(b, c))\n", | |
" \n", | |
" The solution is an array with shape (101, 2). The first column\n", | |
" is `theta(t)`, and the second is `omega(t)`. The following code\n", | |
" plots both components.\n", | |
" \n", | |
" >>> import matplotlib.pyplot as plt\n", | |
" >>> plt.plot(t, sol[:, 0], 'b', label='theta(t)')\n", | |
" >>> plt.plot(t, sol[:, 1], 'g', label='omega(t)')\n", | |
" >>> plt.legend(loc='best')\n", | |
" >>> plt.xlabel('t')\n", | |
" >>> plt.grid()\n", | |
" >>> plt.show()\n", | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"help(scipy.integrate.odeint)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Now we create tabulated result of *cumulative values* $y$ over some $0 \\le t \\le 300$. We need to also define a function $dy/dt = \\frac{t}{10^2}e^{-t/10}$." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 33, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"times = numpy.linspace(0.0, 300.0, 3001)\n", | |
"def dydt(y, t):\n", | |
" return t/10**2*numpy.exp(-t/10)\n", | |
"y = scipy.integrate.odeint(dydt, 0, times)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Can we convince ourselves that $y$ are values of the cumulative distribution function? And let's make an interpolated function `yfunc` using `scipy.interpolate.odeint` by ensuring that the value of `yfunc` at $t = 300$ is 1.0." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f6bcbea7390>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"fig1, ax1 = pylab.subplots( )\n", | |
"fig1.set_size_inches([ 12.8, 9.6 ])\n", | |
"ax1.plot( times, y, linewidth = 5, label = 'cumulative values')\n", | |
"ax1.set_xlabel('time', fontsize=28, fontweight='bold')\n", | |
"ax1.set_ylabel(r'$y$ values', fontsize=28, fontweight='bold')\n", | |
"ax1.set_xlim(0, 300)\n", | |
"ax1.set_ylim(0, 1.0)\n", | |
"\n", | |
"yfunc = scipy.interpolate.interp1d( times, y[:,0] / y[-1,0])\n", | |
"\n", | |
"ax1.plot( numpy.linspace(0.0, 300.0, 1001), yfunc( numpy.linspace(0.0, 300.0, 1001)), '--', linewidth = 5, label = 'cumulative interpolated values')\n", | |
"\n", | |
"leg = ax1.legend( )\n", | |
"for txt in leg.texts: txt.set_fontsize( 26)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Success! Now we just need to do a proper sampling of our random variable! From that, we define an *inverse* function, `yfunc_inverse`, that converts a cumulative probability $0 \\le P \\le 1$ into a time $0 \\le t \\le 300$. It's pretty easy to do!" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"yfunc_inverse = scipy.interpolate.interp1d( y[:,0] / y[-1,0], times, kind = 'cubic')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(array(300.), array(0.))" | |
] | |
}, | |
"execution_count": 8, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"yfunc_inverse( 1.0 ), yfunc_inverse( 0.0 )" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Finally, we demonstrate that `yfunc_inverse` can be used to get a PDF that matches $p(t) = \\frac{t}{10^2}e^{-t/10}$.\n", | |
"\n", | |
"First, create an uniformly distributed random variable with $10^6$ points, $P$." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"P = numpy.random.random_sample(1000000)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Now we show that the sample of times $T$ matches the initial PDF." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAyUAAAJMCAYAAADkGAm5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xd4lGXa9/HvlV4hQEJHiqIoFlDEsqgootifFXUFXRf0taz90VXBsouuuuraHld3seDiqmvDVcSuKCCCDWVRpDcJBEgjBdImud4/Jhmm3BOSSTKTzPw+xzFHJtfdzskkcJ9zldNYaxEREREREYmUuEgHICIiIiIisU1JiYiIiIiIRJSSEhERERERiSglJSIiIiIiElFKSkREREREJKKUlIiIiIiISEQpKRERERERkYhSUiIiIiIiIhGlpERERERERCIqIdIBdCTZ2dl2wIABkQ5DRERERKRdWbJkSYG1NifU45WUNMOAAQP47rvvIh2GiIiIiEi7YozZ1JLjNXxLREREREQiSkmJiIiIiIhElJISERERERGJKM0pERER6UBqamrIzc2lsrIy0qGISAxKSUmhb9++JCYmtup5lZSIiIh0ILm5uWRmZjJgwACMMZEOR0RiiLWWwsJCcnNzGThwYKueW8O3REREOpDKykq6deumhEREws4YQ7du3dqkp1ZJiYiISAejhEREIqWt/v1RUiIiIiIiIhGlpERERESkDYwePRpjDJMmTWr2sRs3bsQY4/jo3LkzhxxyCNdeey0rVqxwPH7atGmOx2ZkZNCnTx+GDx/OZZddxnPPPUdJScle4wl2PqfHzJkzm/16AT788EPGjRtHTk4O8fHxGGMYNmxYSOfqqCZNmoQxhtGjR0c6lLBTUiIiIiIdxsyZMz03v7GqtLSUn376iaeeeorDDjuMp59+usnH7tq1i61bt7J06VKef/55Lr/8cnr37s1NN91ERUVFG0bduLfffpvTTjuNjz76iIKCAurq6iIWS1toWJhi2rRpkQ6l3VJSIiIiItKOTZ06lbKyMsrKyigtLWXdunU8/PDDpKamUlNTw9VXX80XX3wR9Pjly5d7ji8qKmLdunV89NFHTJ06le7du7N7924ee+wxjjzySHbs2LHXeLzP5/S4+OKLm/0aH3jgAQCGDh3KN998Q3FxMWVlZSxevLjZ55KOSUmJiIiISDuWlJRERkYGGRkZZGZmMmjQIG6++WaeeeYZAOrq6vjLX/4S9Pi0tDTP8V26dGHQoEGccsop3H///WzcuJFLL70UcCcb48ePx+VyNRqP9/mcHgkJza848eOPPwJw+eWXc+SRR5KVlUVGRgapqanNPldHNnPmTKy1zJs3L9KhhJ2SEhEREZEO6KKLLmLQoEEAzJ8/n9ra2mafIzU1lRkzZnDuuecCsHDhQl555ZVWjbMpdu/eDUDnzp3Dfm1pH5SUiIiISLO5XC4+//xzbrzxRg4//HA6d+5MYmIi3bt355RTTmHmzJlNukkuKiriz3/+M8cccwzZ2dmkpKQwYMAATj75ZJ566ikKCgqAPRO/J0+e7DnWf4K19+Tgps49aWysf2VlJe+99x5XXHEFBx98MBkZGSQlJdG7d2/OPvts3n777ab9sNqIMYYDDzwQcN/UFxUVhXyuJ554wtPD8eijj7ZKfHszb968gPdo8uTJPu/pxo0bgdZ5P/0XHvjkk0847bTTyMnJISUlhQMPPJB77rmnSXNrPvnkEy666CIGDhxIamoqXbt25bDDDuP3v/898+fP9+zXMHF906ZNANx9990Bv7fevSJNmeheUlLCPffcwxFHHEHnzp1JTU1l0KBBXHbZZSxfvjzocQ2LFQwYMACAVatWMXnyZPr27UtycjL9+vXj8ssvJzc3d6+vvy2ooruIiIg021NPPcWNN94Y0J6fn88nn3zCJ598wksvvcScOXOCDsH54IMPmDhxIjt37vRp37RpE5s2bWLu3Lnk5+dHbHLw1KlTefzxxwPa8/LymDNnDnPmzOHiiy/mX//6V8Qm3sfHx3ueW2tDPk+fPn045ZRTeP/991m6dCn5+fnk5OS0Rojt0gMPPMDtt9/u8zNbuXIlf/rTn5g7dy5z5851HIa2a9cuLrnkEv7zn//4tFdWVlJcXMyyZcuYPn16i96LxixdupTTTjuNbdu2+bRv2LCBDRs28MILL/DYY49x3XXXNXqeTz/9lF//+teUl5d72nJzc3nuued47733WLx4Mf3792+T1xCMekpERESk2ZKTkznrrLOYOXMmX3/9NZs3b2bbtm18++233HrrraSlpTF37lzuuOMOx+O//PJLzj77bHbu3EmPHj34v//7P1atWuWZiP3qq68yfvx4z41h//79KSsrY/r06Z5z+E+w/uCDD1r1NWZkZPCb3/yGV199lSVLlrB161a2bNnCl19+yVVXXUVCQgIvvfQSf/vb31r1us3RsCRwcnIyXbt2bdG5jj32WM/zr7/+ukXnaorjjjvO8941mD59us972hY3xvPnz+f2229nwoQJfPPNNxQWFrJ8+XImTpwIwIIFCxxXNLPWcsEFF3gSknPPPZe5c+eybds2duzYweLFi7nnnns8PREATz/9NGVlZeyzzz6A76IFDY/jjjuuSXHn5+czbtw4tm3bRmZmJo899hgbNmxgx44dzJkzh4MPPpja2lquv/563nrrraDn2blzJxdccAEHHnggH3zwATt27GDTpk3cf//9xMXFkZeXxx/+8Iem/jhbjXpKREREpNmuuuoqrrrqqoD2Hj16MGLECMaMGcOpp57K008/zbRp0+jUqZNnn7q6Oi699FJcLhd9+vRh8eLF9OvXz7O9YTL2b37zG8+k64YaG8nJyZ79MjIy2vAVwp///GfH9t69e3PssccyfPhwrrzySv76179y3XXXhb235D//+Q9r1qwBYNSoUSFNMPc2ePBgz/O8vLyg++3evdvnE3ZvSUlJJCUlNel68fHxAe9hcnJym7+vGzdu5JprruHJJ5/0tHXt2pWXXnqJ1atX89133/HCCy9wzTXX+Bz38ssv8/777wPwxz/+kbvvvttne05ODkcffTRTp071tCUnJ5OcnOz53WhYtCAU99xzD9u3bycuLo733nvPJ5k588wzGTVqFEcddRSrV6/muuuu46yzznL8nSgpKWHEiBEsWLCAlJQUT/vUqVMpLCzkkUceYfbs2ZSUlIR1jo96SkRERKTVnXLKKeTk5LB79+6AZV0/+ugjVq9eDcBjjz3mk5D4a+mNdltqWPo2NzfX83rCIT8/n2effdazahbALbfc0uLzet+ANjY/ZejQoWRmZjo+br311hbH0dbS09O5//77A9qNMZ73dOnSpdTU1Phsb+gRO/jgg/nTn/4U9Pxt8Tvrcrn417/+BcCECRMce1eysrI8Sytv2bKFjz76KOj5HnjgAZ+EpMFvf/tbAGpqali6dGlrhN5kSkpEREQkJKWlpTzyyCOceOKJ9OjRg6SkJJ8JvPn5+QABN+yfffYZ4O7p+PWvfx32uJtj+/bt3H333fzqV7+iW7duJCYmel5fenq6Z7+2TEr8J0d3796dK664gpKSEowx3H///Zx66qktvo73PIhoLk559NFH+/TceWvoLaqpqaG4uNjTXlpaynfffQe4Vz2LiwvvLfSPP/5IaWkpAOPHjw+635lnnumZwxWsdk1ycjInnHCC4zbv3rLt27eHGm5I2u/HDyIiItJu/fzzz5x66qlNWqmnpKTE5/t169YBcNBBB7XrnpD58+fz61//2ufmNBj/19iW4uLi6NOnDyeccALXXnstRx11VKuc1/s1dOnSJeh+GzZs8Jk30dH06tUr6La0tDTPc+9VuDZu3OipMn/YYYe1XXBBNKzeBe6/m2ASExMZPHgwy5Yt45dffnHcJycnJ+jfXbDXHw7t918CERERaZdcLhfjx48nNzeXzMxMbr75ZsaOHcuAAQNIT0/3rAh10EEHsXnz5oBifA0TmzMzM8Mee1Pt3LmT8ePHU1xcTM+ePfnDH/7A8ccfT79+/UhLSyMuLg5rrecT970VHGyJqVOncvvttwPuHoy0tLQ26clomJ8Cjd+4d3TeK5Y1xrvnyHsyfiR+b73n8OxtTkpDfN4xewvl9YeDkhIREZGOKBwVn4PUSpg3bx4rV64E4M0332Ts2LGO+zUMN/G3t5um1tDUm/ZgycSsWbMoLCwkPj6ezz//nCFDhgTs47+UcVtpyeTo5vCe+3P00Ue3+fWao6XvZ0t5JyJt+XsbjPf7H2yRAf/t7Tnpd6KkRJqvthYKC6GkBMrLoaYGrIXEREhNhU6doFs3cJhAJSIiHd+yZcsA9xCfYAlJbm5u0CFN++23H+AeAuZyudpkCJf3JN6KigrHWikul8tTnNFfw2s85JBDHBMSgJ9++qkVIm0ftm7dyscffwzA8OHDyc7OjnBEvlr6frbUwIEDiY+Pp7a2lmXLlnHaaae1yXWC8R4ut2LFCg444ADH/Vwul2d+U7jrjLSUJrpL01VXw9q1sGgR/PwzC+cvZeGStSxctomFP/7Cwu/XsfDLn2DNGvjqK/jhBygocCcsIiISNaqqqgAardj+73//O+i2MWPGAO5PdJtbFT0xMdHzvLHr9+zZ0/Pce1iStwULFnhei7+WvsaO5sYbb/T0Mtx8880RjiZQS9/PlsrMzOTII48E3EsDN3doU8PvbWO/T4055JBDPKujvfnmm0H3e++99zxzQUaNGhXStSJFSYnsnbWwZQt8/TXk5rp7SpqipAR++smdnESgq1NERNrGwIEDAffwrPnz5wdsX7NmjeOSqw3Gjh3r+aT3pptuYsuWLUH39R+O061bN8/zxmppDBs2zHMj+PLLLwdsr6qq8qkn4a/hNa5cuZK1a9cGbP/yyy959tlngx7fUVRVVXHllVfyxhtvAHD88cdz4YUXRjiqQC19P1vDtddeC7hXwrr33nuD7uc0hKzh97ax39nGxMfHc8kllwDwyiuvsGjRooB9SktLue222wDo27dvq6zIFk5KSqRxLhf8+KO79yPE7J7SUliyxN3LUr9yhYiIdFynnnqqZ7z6hAkT+Pe//82WLVvIzc3l2WefZdSoUaSkpAStMB4XF8eMGTNISEhg8+bNjBgxgr/97W+sWbOGnTt3snHjRv7zn//wm9/8xlN3ocGwYcM8y7FOmzaNzZs3U1NTg8vl8vkUunPnzpxzzjkAPPLIIzz44IPk5uZSUFDARx99xAknnMDatWuDFoc799xziYuLo6amhjPOOIN3332Xbdu2sWHDBh5++GHGjRvns3xqe9ZQ7LC8vNzz8/3000+58847GTBgAM888wzg/jR+1qxZTZ4IHU4tfT9bw8SJEznjjDMAd/HECy64gM8//5z8/HwKCgr49ttv+ctf/sL+++8fcOzhhx8OwOzZs5k7dy6lpaW4XC5cLleTe13uuusuevToQW1tLaeddhpPPPEEmzZtIj8/n/fff5/jjjuOVatWAfDEE0+065XtnHSsaCW8Kith2TLYvZuFa/Nbfr7cXHfvydChmm8iItJSQSahh0OXLl148sknmTx5Mnl5eVx00UU+2zt16sQ777zD7373u6BF+H71q1/x9ttvM2HCBLZt28b111/vuN+BBx7o833Pnj05//zzee2115gxYwYzZszwbDvhhBOY57UAwMMPP8yXX35JXl4eU6ZMYcqUKZ5tmZmZvP3221x66aWOc1/2339/7r77bu666y5Wr17NWWed5bO9V69ezJo1i6FDhzr/kNqRvcWYnp7OlVdeyX333edYUK+9aMn72RqMMbz22mtMnDiRd955hzfeeMPTw7Q3V111Fc899xwFBQWcfPLJPts+//xzRjfh7zknJ4cPP/yQ0047jW3btnHDDTdwww03+OwTHx/PY4891u7r/zhRT4k4q6qCpUth927HzTYunqrsHpQNOoCdQ4exc+hw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fRvaZs+ezbhx4+jZsyfx8fHceOONjjGfddZZ9OzZk+TkZLp3786pp57KSy+9hPUv5FwvXO97a0hJSWHQIHe5g1ynofJNlJCQwBNPPOH5vrFel2jRISq6G2PGAf8HxAPPWWsf8NueDPwLOAIoBH5jrd1ojBkJPNOwGzDNWvtW/TEbgTKgFnBZa0eE47VE3JYtAdXb6xKTqe7SLUIBBarM6UlyUSEJ5aU+7Wl5uVB5GKS0XVFHERFpmvvvv5877rjDp62qqopdu3axceNGvvjiC4qLi3n88cd99hk7dqzjDff69etZv349L774Ik8++SRXXXVVo9cvKSnh2GOP9Ulidu/ezZtvvsmnn37K559/zrBhw7jiiit47rnnfI796quvGD9+PE8//TRXXHFFo9f5+9//znXXXUedV2/9qlWruPfee3n99deZN28evXo1/4O9L774gnPPPZcCvw8Kf/nlF1588UVefvllHn/8ca677jrH46+++mr+8Y9/+LQtXbqUpUuXMmfOHCZOnNjsmFrilltu4eGHHw66vbKykgkTJgSs3JWfn8/HH3/Mxx9/zMyZM3nrrbfIzMwMep5wve8t0TBUKliS1VQjR47koIMO4ueff+azzz6jrq6OuDCVbIiEdv/KjDHxwFPAacBBwARjzEF+u10GFFtr9wMeAx6sb/8JGGGtHQaMA542xngnYidaa4fFTEJiLWzfHtBc2b0ntGDJwFZnDOX7DMSdR3qxddDIpDEREQmPlStXctdddwHuJOPjjz/ml19+YceOHfzwww+8/vrrnH/++Z5hLN769OnDtddey/vvv8+PP/5Ifn4+69ev57333mPcuHHU1tZy7bXX8v333zcaw4033siGDRt48skn2bRpEzt27ODll1+mc+fOlJSUcM011/DEE0/w/PPPc8stt7B8+XIKCwuZP38+Bx3kvo246aabApICb2vWrOHGG29k5MiRzJ07l/z8fFauXMltt91GXFwcq1ev5rzzzmv2zefy5cs59dRTKSgo4JBDDuGVV17hl19+obCwkMWLFzN+/Hjq6uq4/vrree+99wKOf+qppzwJyXHHHce8efMoKChg+fLl/O///i8LFizgL3/5S7NiavDBBx9QVlbG1KlTAdhnn318Jkw//fTTAcd8+umnPPzww5x33nksWrSIgoICVqxYwQUXXODZ5+qrr/Yk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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f6bc9b33e10>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"T = yfunc_inverse( P )\n", | |
"fig2, ax2 = pylab.subplots( )\n", | |
"fig2.set_size_inches([ 12.8, 9.6 ])\n", | |
"ax2.hist( T, normed = True, bins = 200, alpha = 0.35, label = 'sampled from PDF')\n", | |
"ax2.plot( times, times/10**2 * numpy.exp(-times/10), linewidth = 5, color = 'red', alpha = 0.25, label = 'actual PDF function')\n", | |
"ax2.set_xlim(0, 100)\n", | |
"ax2.set_xlabel('time', fontsize=28, fontweight='bold')\n", | |
"ax2.set_ylabel('probability density', fontsize=28, fontweight='bold')\n", | |
"leg = ax2.legend( )\n", | |
"for txt in leg.texts:\n", | |
" txt.set_fontsize( 26 )" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Now let's try this thing called [Monte Carlo Markov Chain](https://en.wikipedia.org/wiki/Markov_chain_Monte_Carlo), which I described in the math modeling class a few hours ago. I am going to use a very powerful and easy-to-use Python implementation called [emcee](http://dfm.io/emcee/current/). That website fleshes out most of what [emcee](http://dfm.io/emcee/current/) does, but we only have to handle problem setup\n", | |
"```python\n", | |
"import numpy as np\n", | |
"import emcee\n", | |
"\n", | |
"def lnprob(x, ivar):\n", | |
" return -0.5 * np.sum(ivar * x ** 2)\n", | |
"\n", | |
"ndim, nwalkers = 10, 100\n", | |
"ivar = 1. / np.random.rand(ndim)\n", | |
"p0 = [np.random.rand(ndim) for i in range(nwalkers)]\n", | |
"\n", | |
"sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=[ivar])\n", | |
"sampler.run_mcmc(p0, 1000)\n", | |
"```\n", | |
"Then handling something called burn-in, where we 1) run the chains for a few iterations and get the final state `pos`; 2) reset the MCMC object; and 3) start with the new state `pos`.\n", | |
"```python\n", | |
"pos, prob, state = sampler.run_mcmc(p0, 100)\n", | |
"sampler.reset( )\n", | |
"sampler.run_mcmc(pos, 5000)\n", | |
"```\n", | |
"A little caveat: this part of the notebook might not work on other public Jupyterhub servers, because those environments might not have the [emcee](http://dfm.io/emcee/current/) Python package." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"First, remember $p(t) = \\frac{t}{10^2}e^{-t/10}$? The `EnsembleSampler` object takes the *log-probability* input function to run. Here $\\ln p = \\ln t - t/10 - \\ln 100$. The constant term does not matter in the *log-probability* function.\n", | |
"\n", | |
"Second, let's start with 50 chains with random *time* variables for $0 \\le t \\le 300$." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 26, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import emcee\n", | |
"p0 = numpy.random.random_sample((50,1)) * 300.0" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Third, our sampler object is one-dimensional and there are 50 chains." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 27, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def lnprob( t ):\n", | |
" if t <= 0: return -numpy.inf\n", | |
" return numpy.log(t) - t / 10\n", | |
"sampler = emcee.EnsembleSampler( 50, 1, lnprob)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We are going to run 100 iterations to *burn-in*, then to get $10^6$ final points that would sample that PDF, each chain has $10^6 / 50 = 2\\times 10^4$ iterations." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 30, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"this whole process took 8.426 seconds\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"(array([], dtype=int64),)" | |
] | |
}, | |
"execution_count": 30, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"time0 = time.time( )\n", | |
"pos, prob, state = sampler.run_mcmc(p0, 100)\n", | |
"sampler.reset( )\n", | |
"sampler.run_mcmc(pos, 20000);\n", | |
"print( 'this whole process took %0.3f seconds' % ( time.time( ) - time0 ))\n", | |
"#\n", | |
"## check all the final points (times) are >= 0\n", | |
"numpy.where( sampler.flatlnprobability == -numpy.inf)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Now check the distribution of all points and compare to the actual PDF. **IT DOES**!" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 35, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAyUAAAJMCAYAAADkGAm5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xd8VFX6x/HPTa8kkEIJXUAQFXBRLBQVQbGuoiLIsqA/xIYFG4gFsWADXFddLLiwilhAAVelC6hgAUFYpGOAQIAUCAkhde7vj8mMM5k76cmkfN+v17yYnFvmDJNyn3vOcx7DNE1ERERERER8xc/XHRARERERkYZNQYmIiIiIiPiUghIREREREfEpBSUiIiIiIuJTCkpERERERMSnFJSIiIiIiIhPKSgRERERERGfUlAiIiIiIiI+paBERERERER8KsDXHahLYmNjzbZt2/q6GyIiIiIitcqGDRtSTdOMq+jxCkrKoW3btqxfv97X3RARERERqVUMw9hXmeM1fUtERERERHxKQYmIiIiIiPiUghIREREREfEp5ZSIiFSR/Px8kpKSyMnJ8XVXREREqkVISAgtW7YkMDCwSs+roEREpIokJSURGRlJ27ZtMQzD190RERGpUqZpkpaWRlJSEu3atavSc2v6lohIFcnJySEmJkYBiYiI1EuGYRATE1MtMwIUlIiIVCEFJCIiUp9V1985BSUiIiIiIuJTCkpERKTBufjiizEMg5EjR5b72MTERAzDsHxERUVx1llnce+997Jt2zbL4ydNmmR5bEREBAkJCfTo0YPbb7+d9957j4yMjFL74+18Vo9Zs2aV+/0CLF68mCuuuIK4uDj8/f0xDIPu3btX6Fx11ciRIzEMg4svvtjXXRGplxSUiIhIlZg1a5bz4rehOnHiBP/73/9488036datG2+//XaZjz158iSHDh1i06ZNvP/++4wePZoWLVowbtw4Tp06VY29LtmCBQsYNGgQS5YsITU1FZvN5rO+VAfHwhSTJk3ydVdEGjQFJSIiIhU0YcIEMjMzyczM5MSJE+zZs4dXX32V0NBQ8vPzufvuu/nuu++8Hr9161bn8enp6ezZs4clS5YwYcIE4uPjyc7OZvr06Zx77rkcPXq01P64ns/qMXz48HK/xxdffBGArl278vPPP3Ps2DEyMzNZt25duc8lIuKNghIREZEKCgoKIiIigoiICCIjI2nfvj0PPfQQ77zzDgA2m40pU6Z4PT4sLMx5fOPGjWnfvj0DBw7khRdeIDExkdtuuw2wBxuDBw+moKCgxP64ns/qERBQ/koAW7ZsAWD06NGce+65REdHExERQWhoaLnPVZfNmjUL0zRZtWqVr7siUi8pKBEREalit956K+3btwdg9erVFBYWlvscoaGhzJw5kxtuuAGA77//nrlz51ZpP8siOzsbgKioqBp/bRFpOBSUiIjUMwUFBXz77bc88MADnHPOOURFRREYGEh8fDwDBw5k1qxZZbpITk9P59lnn+WCCy4gNjaWkJAQ2rZty2WXXcabb75Jamoq8Gfi96hRo5zHFk+wdk0OLmvuSUlz/XNycvjqq6+44447OPPMM4mIiCAoKIgWLVpw7bXXsmDBgrL9Z1UTwzDo0qULYL+oT09Pr/C5Xn/9decIx7Rp06qkf6VZtWqVx2c0atQot880MTERqJrPs/jCA8uWLWPQoEHExcUREhJCly5dmDx5cplya5YtW8att95Ku3btCA0NpUmTJnTr1o277rqL1atXO/dzJK7v27cPgGeeecbj+9Z1VKQsie4ZGRlMnjyZv/zlL0RFRREaGkr79u25/fbb2bp1q9fjHIsVtG3bFoAdO3YwatQoWrZsSXBwMK1atWL06NEkJSWV+v5F6ipVdBcRqWfefPNNHnjgAY/2lJQUli1bxrJly/jwww/58ssvvU7B+eabbxg2bBjHjx93a9+3bx/79u1jxYoVpKSk+Cw5eMKECbz22mse7cnJyXz55Zd8+eWXDB8+nP/85z8+S7z39/d3PjdNs8LnSUhIYODAgXz99dds2rSJlJQU4uLiqqKLtdKLL77I448/7vZ/tn37dp5++mlWrFjBihUrLKehnTx5khEjRvD555+7tefk5HDs2DE2b97MjBkzKvVZlGTTpk0MGjSIw4cPu7X/8ccf/PHHH8yePZvp06czduzYEs+zfPlyrr/+erKyspxtSUlJvPfee3z11VesW7eONm3aVMt7EPEljZSIiNQzwcHBXHPNNcyaNYuffvqJAwcOcPjwYX755RceffRRwsLCWLFiBRMnTrQ8/ocffuDaa6/l+PHjNG3alH/84x/s2LHDmYj98ccfM3jwYOeFYZs2bcjMzGTGjBnOcxRPsP7mm2+q9D1GREQwZMgQPv74YzZs2MChQ4c4ePAgP/zwA3feeScBAQF8+OGH/POf/6zS1y0Px5LAwcHBNGnSpFLnuvDCC53Pf/rpp0qdqyz69Onj/OwcZsyY4faZVseF8erVq3n88ccZOnQoP//8M2lpaWzdupVhw4YBsGbNGssVzUzT5Oabb3YGJDfccAMrVqzg8OHDHD16lHXr1jF58mTnSATA22+/TWZmJq1btwbcFy1wPPr06VOmfqekpHDFFVdw+PBhIiMjmT59On/88QdHjx7lyy+/5Mwzz6SwsJD77ruPL774wut5jh8/zs0330yXLl345ptvOHr0KPv27eOFF17Az8+P5ORkHn744bL+d4rUKRopERGpZ+68807uvPNOj/amTZvSs2dP+vfvz+WXX87bb7/NpEmTaNSokXMfm83GbbfdRkFBAQkJCaxbt45WrVo5tzuSsYcMGeJMunbU2AgODnbuFxERUY3vEJ599lnL9hYtWnDhhRfSo0cPxowZwyuvvMLYsWNrfLTk888/Z9euXQD07t27Qgnmrjp27Oh8npyc7HW/7OxstzvsroKCgggKCirT6/n7+3t8hsHBwdX+uSYmJnLPPffwxhtvONuaNGnChx9+yM6dO1m/fj2zZ8/mnnvucTtuzpw5fP311wA89dRTPPPMM27b4+LiOP/885kwYYKzLTg4mODgYOf3hmPRgoqYPHkyR44cwc/Pj6+++sotmLn66qvp3bs3vXr1YufOnYwdO5ZrrrnG8nsiIyODnj17smbNGkJCQpztEyZMIC0tjalTp7Jw4UIyMjKU4yP1jkZKREQamIEDBxIXF0d2drbHsq5Llixh586dAEyfPt0tICmushfa1cmx9G1SUpLz/dSElJQU3n33XeeqWQCPPPJIpc/regFaUn5K165diYyMtHw8+uijle5HdQsPD+eFF17waDcMw/mZbtq0ifz8fLftjhGxM888k6efftrr+avje7agoID//Oc/AAwdOtRydCU6Otq5tPLBgwdZsmSJ1/O9+OKLbgGJw9/+9jcA8vPz2bRpU1V0XaRWUVAiIlIPnThxgqlTp3LJJZfQtGlTgoKC3BJ4U1JSADwu2FeuXAnYRzquv/76Gu93eRw5coRnnnmGiy66iJiYGAIDA53vLzw83LlfdQYlxZOj4+PjueOOO8jIyMAwDF544QUuv/zySr+Oax5EfS5Oef7557uN3LlyjBbl5+dz7NgxZ/uJEydYv349YF/1zM+vZi9ttmzZwokTJwAYPHiw1/2uvvpqZw6Xt9o1wcHB9OvXz3Kb62jZkSNHKtpdkVqr9t7mEhGRCvn999+5/PLLy7RST0ZGhtvXe/bsAeCMM86o1SMhq1ev5vrrr3e7OPWm+HusTn5+fiQkJNCvXz/uvfdeevXqVSXndX0PjRs39rrfH3/84ZY3Udc0b97c67awsDDnc9dVuBITE51V5rt161Z9nfPCsXoX2H9uvAkMDKRjx45s3ryZ/fv3W+4TFxfn9efO2/sXqS9q718cEREpt4KCAgYPHkxSUhKRkZE89NBDDBgwgLZt2xIeHu5cEeqMM87gwIEDHsX4HInNkZGRNd73sjp+/DiDBw/m2LFjNGvWjIcffpi+ffvSqlUrwsLC8PPzwzRN5x330goOVsaECRN4/PHHAfsIRlhYWLWMZDjyU6DkC/e6znXFspK4jhy5JuP74vvWNYentJwUR/9c++yqIu9fpL5QUCIiUtVqouKzl1oJq1atYvv27QDMnz+fAQMGWO7nmG5SXGkXTVWhrBft3oKJefPmkZaWhr+/P99++y2dO3f22Kf4UsbVpTLJ0eXhmvtz/vnnV/vrlUdlP8/Kcg1EqvP71hvXz9/bIgPFt9fmoF/EV5RTIiJSj2zevBmwT/HxFpAkJSV5ndLUoUMHwD4FrLouIl2TeL1NQykoKHAWZyzO8R7POussy4AE4H//+18le1l7HDp0iKVLlwLQo0cPYmNjfdwjd5X9PCurXbt2zhEGx/dGTXKdLudYBtpKQUGBM79JdUZEPCkokTJbuOmg5UNEao/c3FyAEiu2f/TRR1639e/fH7Df0S1vVfTAwEDn85Jev1mzZs7nrtOSXK1Zs8b5Xoqr7Husax544AFngPjQQw/5uDeeKvt5VlZkZCTnnnsuYF8auLxTmxzftyV9P5XkrLPOcq6ONn/+fK/7ffXVV86grXfv3hV6LZH6TEGJlJtfbg6hyQeJ3LWNxr9tgDVrYPVqWLsWNm6EPXvg+HHQnFeRGteuXTvAPj1r9erVHtt37dplueSqw4ABAzj99NMBGDduHAcPer/xUHwkJSYmxvm8pFoa3bt3d14Izpkzx2N7bm6uWz2J4hzvcfv27ezevdtj+w8//MC7777r9fi6Ijc3lzFjxvDZZ58B0LdvX2655RYf98pTZT/PqnDvvfcC9pWwnnvuOa/7WY3+Ob5vS/qeLYm/vz8jRowAYO7cuaxdu9ZjnxMnTvDYY48B0LJlyypZkU2kvlFQImXmn33SHohs+ZWwg/sIyjiGX34u2Gz2ACQvDzIy4MAB2LQJfvzR/ryCd59EpPwuv/xy53z1oUOH8tFHH3Hw4EGSkpJ499136d27NyEhIV4rjPv5+TFz5kwCAgI4cOAAPXv25J///Ce7du3i+PHjJCYm8vnnnzNkyBBn3QWH7t27O5djnTRpEgcOHCA/P5+CggK3u9BRUVFcd911AEydOpWXXnqJpKQkUlNTWbJkCf369WP37t1ei8PdcMMN+Pn5kZ+fz1VXXcV///tfDh8+zB9//MGrr77KFVdc4bZ8am3mKHaYlZXl/P9dvnw5TzzxBG3btuWdd94B7Hfj582bV+ZE6JpU2c+zKgwbNoyrrroKsBdPvPnmm/n2229JSUkhNTWVX375hSlTptCpUyePY8855xwAFi5cyIoVKzhx4gQFBQUUFBSUedTlySefpGnTphQWFjJo0CBef/119u3bR0pKCl9//TV9+vRhx44dALz++uu1emU7EV/RT4WUzmaDvXuJ/v03y83f707xemjv3FxISoIOHSAurrp6KFK7eElCrwmNGzfmjTfeYNSoUSQnJ3Prrbe6bW/UqBGLFi3i73//u9cifBdddBELFixg6NChHD58mPvuu89yvy5durh93axZM2666SY++eQTZs6cycyZM53b+vXrxyqXBQBeffVVfvjhB5KTkxk/fjzjx493bouMjGTBggXcdtttlrkvnTp14plnnuHJJ59k586dXHPNNW7bmzdvzrx58+jatav1f1ItUlofw8PDGTNmDM8//7xlQb3aojKfZ1UwDINPPvmEYcOGsWjRIj777DPnCFNp7rzzTt577z1SU1O57LLL3LZ9++23XFyGn+e4uDgWL17MoEGDOHz4MPfffz/333+/2z7+/v5Mnz691tf/EfEVjZRIyXJyYMMGe2BRUbm5sHUrbNkCxarwikjVGzFiBMuXL2fgwIE0atSI4OBg2rVrx5gxY/j111+9FmdzddVVV7Fnzx6eeOIJevToQVRUFCEhIbRr144BAwbw1ltvMXbsWI/jZs2axaRJkzj77LPd6ioU16ZNG37++WdGjx5Ny5YtCQwMJCEhgb///e9s2LCBSy+9tMT+PfHEE3z22Wf07t2b8PBwwsLCOP3003nooYfYuHFjifUiaqvQ0FCaNWtGt27dGDVqFO+++y6HDh1i6tSptToggcp/nlUhPDychQsX8uWXXzJ48GASEhIICgoiJiaGs88+m7vvvps1a9Z4HHf22WezatUqrrvuOpo1a1bhUYzu3buzfft2Jk2aRI8ePYiMjHT+7N12221s2rTJ8mdGROwMrXVddj179jQdVWMbhMxMeyCRlweUPCLiTe8OxUZHQkLgjDPAS8Vekbps27ZtHqMHIiIi9Y3V3zvDMDaYptmzoufU9C2xlpUFv/0GXpYEtQUFkxPblPyoaApCQsEw8MvLJTArk6BjaQRleKmynJNjzzfp0kXTuUREREQEUFAiVnJyvAckhh8nE1qTE98M/Nxn/9lCQskNCSU3Nh7/U6cIS0q0Pr/NBr//Dp06QT2uTCwiIiIiZaOgRNwVFnrN/bAFBnOiY2cKw8JLP01oKJkdu0BCEOzY4RngmKa93WaDhISq6r2IiIiI1EEKSsTdzp18/1uiR7MtOISMLmdiCwou1+kWHszDL7A5kft3EpCd5Wx35prs2gUBAdC0aWV6LSIiIiJ1mFbfkj8dOWJ/FGMLDCbj9K7lDkicxweHkHF6V/IbRVvvsH07pKVV6NwiIiIiUvcpKBG73Fz7qEUxpp8/Jzp2rnBA4uTvz4mOXchrHOu5zTTtOSZZWZ7bRERERKTe0/QtsduzxzKx/WSb9mXKISkTwyCzfUci99gslxe2/bGS413O4tpz21XN64mIiIhInaCREoFjx+DoUY/m3CZx5MZU8bK9hkFm+07kR3pO5fLLyyVy7y77yImIiIiINBgKSho6mw127vRoNgMCOdmqbfW8pp8fmad1ojDUs9pzYGYGJCZWz+uKiIiISK2koKShS06GU6c8mk+2bIMZGFhtL2sGBHDitNMxAyxeY98+++iNiIiIiDQICkoaMpvNHgAUUxDRqOqnbVm9fEgoJ07rBBieG7dtg7y8au+DiDQ8hmFgGAazZs3yyevPmjXL2YeKysjI4NFHH6Vz586EhoY6z7dgwYIq7GndsWrVKuf/gevDz8+Pxo0b85e//IXx48dz4MABy+NHjhxpeXxkZCStWrXivPPO46677mLOnDmcsriRV9bzWT1WrVpVxf8b1aMqvm997eKLL3b7v1+3bl2px7z//vtux9x5552lHnP06FGmTp3KwIEDad26NaGhoYSHh9O2bVv++te/MmPGDI5Z3HxNTEx0e63OnTuX6X317dvX7bgff/yx1GPWrVvHuHHj6NGjB/Hx8QQFBdGkSRO6devGmDFjWLZsGTabrUyvX1UUlDRkBw9aXvhntW4HNfRLpyAyiuwWLT035OXZlwoWERE3hYWF9O/fn1deeYUdO3aQk5Pj6y7VWqZpcvz4cX799VdeeuklzjjjDBYtWlTm47OyskhKSuKXX35hxowZDB8+nISEBJ5//nkKCwursedSE+bMmVPqPh9++GGZz2eaJi+++CKnnXYaDz/8MMuWLePAgQPk5OSQnZ3Nvn37WLhwIXfddRetW7fmhRdeKPF8O3bsYP369SXus2/fPr7//vsy9zE5OZmrr76aCy+8kOnTp7Np0yZSUlLIz8/n2LFjbN68mXfeeYeBAwdy9tlns3bt2jKfu7IUlDRUhYWwf79ne1xc1a22VUanmrckPzLKc0N6Ohw+XKN9ERGp7ZYtW8aGDRsAeOGFF0hKSiIzM5PMzEyuueYaH/fO92bMmOH8/zhx4gTbtm1j4sSJ+Pv7k5WVxS233MLu3bu9Hu84NjMzk9TUVHbt2sXChQu5//77adSoEceOHeOJJ56gf//+ZGdnl9of1/NZPfr06VOVb1/KoFGjRgB88sknFFisPOqQlJTE6tWr8fPzIyIiosRz2mw2hg8fzoQJE8jKyqJZs2Y8//zz/Pzzzxw6dIgjR47w66+/8sorr3DmmWeSlZXFyy+/XGofSwuK5syZg2mazv1LsnPnTs4//3y++uorAC655BJmz57Njh07SEtL448//mDp0qWMHTuWiIgItm7dyqefflrqeauKgpKG6tAhyM/3bG/btsa74lgq2BYQ5Llt9257DRUREQFgy5YtAERHRzNhwgQSEhKIiIggIiICf39/H/fO94KDg53/H5GRkXTu3JnnnnuOSZMmAXDq1CmmTZvm9XjHsREREcTExNChQweuvfZaXnvtNRITE7nyyisBWL16Nbfddlup/XE9n9WjrnxmI0eOxDRNzHqwQmavXr1ISEggNTWVJUuWeN3vo48+wmaz0a9fP2JiYko857PPPstHH30EwDXXXMOuXbt4/PHHOffcc2nevDnx8fH06NGDhx9+mN9++4133nmHsDDPBX8cbrjhBgA+/vjjEkflHKM9gwcPLrF/2dnZ3HDDDezfvx9/f39mzpzJypUrGTFiBJ06daJJkya0bduWAQMG8Prrr7Nnzx6GDBlS4jmrmoKShsg07VO3imvaFMJrdpTEwQwMIqvtaZ4bCgpgx46a75CISC3luDsfFWUxwixePfzww4SGhgKwYsWKCp2jcePGLFy4kF69egH2O+3fffddlfVRaoafnx9Dhw4FSh6JcGwbPnx4iefbuXMnkydPBqBHjx7Mnz+/xJEVPz8/Ro8ezfLly73uc9lll9G0aVOOHDnidb9ff/2V33//ndDQUGcQ482UKVPYunUrAC+99FKpAXV8fDwff/wxY8aMKXG/qqSgpCFKTQWrOcht2tR8X1zkRzcmt4lFgr2mcYmU2+rVq7nlllto27YtISEhRERE0K5dO/r27cszzzzDdoucrdTUVGbPns2NN95Iu3btCAkJISwsjNNOO41Ro0axceNGr6/nmqC5atUqcnJyeP755znrrLMIDw+nWbNm3Hjjjfz+++9ux3366adcfPHFxMbGEh4ezgUXXMDnn3/u9XUcCcQXX3wxYE9wvuaaa2jatCmhoaF07tyZJ598kqysrIr9xxU5fvw4zz77LOeddx5NmjQhODiYNm3aMGLECDZt2lTq8fPnz+fiiy8mOjqayMhIevTowdSpU8m3GqEuI0eSruOO/759+9ySW0eOHOmxr6Nt4cKFXHHFFTRr1gx/f38eeOAByz5fc801NGvWjODgYOLj47n88sv58MMPvd4dr6nPvSqEhITQvn17wD4tp6ICAgJ4/fXXnV+XNOpSHYp/tlZcE/8TLZbZz8zM5Pnnn6dXr15ER0cTGBhIfHw8Z555Jn/729+YM2eOx935khLdi38f5Obm8tJLL3H22WcTHh5OdHQ0/fv355tvvin1/S1fvpxBgwYRExNDeHg4Xbt2ZfLkyWRnZ5f6vsrj1ltvBWDRokWWvy+2bNnCli1bCAkJKXUUYtq0ac6k8H/84x8ElnH10jPOOMPrNn9/f2655RbAe+6LI2i67rrrSgyCsrOzeeuttwDo2LEjDz74YJn6B9ClS5cy71tZqujeECUleVRUz4tqTObOY4Bvl+I92bod5Fkk4O/ZAzExUI3LFIvUFy+88AITJ050a8vNzeXkyZMkJiby3XffcezYMV577TW3fQYMGGB5wb1371727t3LBx98wBtvvFHq6jMZGRlceOGFbkFMdnY28+fPZ/ny5Xz77bd0796dO+64g/fee8/t2B9//JHBgwfz9ttvc8cdd5T4Om+99RZjx451WyFmx44dPPfcc3z66aesWrWK5s2bl3gOK9999x033HADqampbu379+/ngw8+YM6cObz22muMHTvW8vi7776bf/3rX25tmzZtYtOmTXz55ZcMGzas3H2qjEceeYRXX33V6/acnByGDh3qsXJXSkoKS5cuZenSpcyaNYsvvviCyMhIr+epqc+9MhxTpSo7Bem8887jjDPO4Pfff2flypXYbDb8/OrGfd6DBw/St29f9u7d69aekpJCSkoKW7du5cMPP+Sqq64iOtqz0HFpMjMz6du3Lz///LNb+8qVK1m5cmWJn/Fzzz3Hk08+6db2+++/8/TTTzNv3jznaERV6N69O127dmXr1q188cUX/O1vf3Pb/sEHHwBw9dVXlzoq6fjZ6dixY5XmCA0fPpx//OMffPHFF2RnZ7tN9yosLOTjjz927leS1atXk56eDsDf//73Wvu9Wjt7JdUnMxMyMjyac5qW/w93dTADAuD00z035OdDsV+gIuJp+/btzj/qAwYMYOnSpezfv5+jR4+yceNGPv30U2666SbnNBZXCQkJ3HvvvXz99dds2bKFlJQU9u7dy1dffcUVV1xBYWEh9957L7/++muJfXjggQf4448/eOONN9i3bx9Hjx5lzpw5REVFkZGRwT333MPrr7/O+++/zyOPPMLWrVtJS0tj9erVzjuH48aN8wgKXO3atYsHHniA8847jxUrVpCSksL27dt57LHH8PPzY+fOndx4443lvvjcunUrl19+OampqZx11lnMnTuX/fv3k5aWxrp16xg8eDA2m4377rvPmSzq6s0333QGJH369GHVqlWkpqaydetWHnzwQdasWcOUKVPK1SeHb775hszMTCZMmABA69at3RKm3377bY9jli9fzquvvsqNN97I2rVrSU1NZdu2bdx8883Ofe6++27nRdXQoUP55ZdfSE1NZePGjfzf//0fYJ/uVPyirbia+NwrIz8/35ng3qJFi0qf78ILLwTgxIkTHiNBtdmjjz7K3r17CQsLY+rUqfz++++kpqayZ88eVq9ezbPPPsvpVn+Hy+j+++9n+/btTJ8+nb1795KamsrXX3/tHKV68MEHOXr0qMdxixYtcv7u6t69O4sXLyYlJYU9e/YwZcoUdu3axUMPPVThfllxjJYUn8Jls9mYO3eu2z7e7Nq1iyNHjgDQu3fvKu1fz549Of3008nKymLhwoVu21asWEFycjKxsbFcfvnlJZ7HdXWu2rywQp0YKTEM4wrgH4A/8J5pmi8W2x4M/Af4C5AGDDFNM9EwjPOAdxy7AZNM0/yi6JhEIBMoBApM0+xZE+/F5yxySQpDw8hvVP67IdUmJgbi46H4L63kZGjeHMqwwoRIQ7V06VJsNhtNmzblq6++cpt/v6gQAAAgAElEQVRGEBcXR/fu3bnpppssj/3vf//r0RYbG0u7du248sorGTZsGHPnzmXatGklzsM+ePAgP/zwA+eee66zbdiwYeTk5HD77bezbt06fvnlF4/Rhr59+/LFF1/QpUsXTp48ybx587yOyhw6dIhzzjmHlStXOgOs2NhYXnzxReLj43nooYdYu3Yt8+bN8/p+rdxxxx2cOnWKs88+mx9//NEteDv//POZN28eI0eOZPbs2TzyyCNceeWVzuksp06d4oknnnDuu3z5coKC7At4xMTEMG3aNGJiYpz7lJejL45zGoZR6opABw8eZMSIEcyePdvZ5pqwu2HDBv79738DMHr0aN555x23/d59912aNGnCyy+/zMKFC1m8eDFXXHGF19eq7s+9Mv75z38683Ec0/8qo2PHjs7nycnJnHnmmZb7lTSVMDg4uMxTfaqKYwrVlClTuO+++5ztMTExtG/fnr59+1b4exTgwIEDfPfdd5x//vnOtkGDBrFgwQLOPvtssrOzmTdvHnfffbfbcY888ggAnTp1YvXq1c7VpGJjYxk/fjwdO3bkxhtvrHC/rNx6661MnDiRFStWcOTIEZo2bQrYp78lJSXRuHFj58IG3vzxxx/O52WtK1LePj711FPMmTPHmQcDfwZSQ4YMISCg5Mv56u5jVan1IyWGYfgDbwKDgDOAoYZhFJ+EdztwzDTNDsB04KWi9v8BPU3T7A5cAbxtGIbrJ3eJaZrdG0xAUlgIKSkezafia8coiZsOHcDqh2znTnuivohYcswDj42NrfKLHccUgdKShIcOHep2Yepw0003OS/gW7Vqxb333uuxT6dOnejRoweAx/SP4qZMmWI54vPAAw/Qrl07gHIV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hL8/i7NDPd7H9xv3WgZdIg3V888/T8eOHXniiSdYsWIFSUlJHDt2jJ07d/Lmm28yevRowL4+v+tSko4Cgzt27OC6667jp59+IjU11blE8Pjx451/0GqDFi1asGXLFi699FK+/fZb0tLS2LlzJxMmTHAWYbvwwgvLXWxt5syZREREkJqaynnnncezzz7Lb7/9Rnp6OkePHuXXX39lxowZXHbZZR6JwKGhoc4aJj/++CMDBgxgzZo1pKWlsW3bNsaNG8cTTzzhnDJVG5xzzjnOwORf//oXw4cPZ8OGDaSnp7N582bGjBnDiy/a6xVfe+21Xgsn1ieuyz+np6ezd+9e/vvf//Lggw/Spk0b5936Sy65hPfee6/G+3fTTTcRFhaGaZr89a9/ZcmSJaSnp5OYmMjrr7/OwIEDadWqleWxKSkptGvXjuuvv57Zs2ezdetW0tLSSE5OZvXq1dxwww3OqZzluRNfWYZhOKeLbd++nX79+rF06VLS0tJITEzk5ZdfZtiwYc4pltUhOjqazp0707lz51IXiLDy9NNPM2TIEMA+otOxY0emTJnC+vXrOXLkCEePHmXjxo1MnTqVbt26MXr0aGcxz7Jq06YNnTt3rtD/Q3h4OJ9//jktW7akoKCA2267jUsvvZQPPviAXbt2cezYMfbt28eyZcu477776NChg3MJ4ppSF1bfkkoIOJmFX37xJUAN8qKbWO5fm+XGxBF6JBn/U8XuPiQmQmws1KF14kWq0969e3n++ed5/nnrQeDY2Fg+++wzt+KKI0eO5LPPPmPJkiUsXrzYmezpcOGFF/L444/XaI2NknTs2JHHH3+csWPHcumll1punzdvXrnrBnTt2pUVK1YwePBgkpKSeOqpp3jqqacs93VdZtPhnnvuYevWrfzrX/9izZo19OvXz217nz59GD58OGPGjClXv6rTm2++SXp6OgsWLGDOnDnOZUdd9e/f37kMaX1XWiJ/kyZNePjhh3nsscdqNJfEIS4ujunTpzNmzBh2797tESief/75TJw40bk0eHEFBQUsWLCABQsWeH2NkSNHOm9g1JTrr7+eSZMmMWnSJH799VePeidnnnkmzzzzDIMHDwYotYp5TfP392fu3LmcddZZTJkyheTkZB5//HEef/xxy/0bNWrEE088UaN97Ny5Mz/99BO33347ixcv5ttvv+Xbb7/1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\n", | |
"text/plain": [ | |
"<Figure size 921.6x691.2 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"T_mcmc = sampler.flatchain\n", | |
"fig3, ax3 = pylab.subplots( )\n", | |
"fig3.set_size_inches([ 12.8, 9.6 ])\n", | |
"ax3.hist( T_mcmc, density = True, bins = 200, alpha = 0.35, label = 'sampled from PDF using MCMC')\n", | |
"ax3.plot( times, times/10**2 * numpy.exp(-times/10), linewidth = 5, color = 'red', alpha = 0.25, label = 'actual PDF function')\n", | |
"ax3.set_xlim(0, 100)\n", | |
"ax3.set_xlabel('time', fontsize=28, fontweight='bold')\n", | |
"ax3.set_ylabel('probability density', fontsize=28, fontweight='bold')\n", | |
"leg = ax3.legend( )\n", | |
"for txt in leg.texts:\n", | |
" txt.set_fontsize( 26 )" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Final note: you can try `Jupyter` on your own at http://jupyter.org/try.\n", | |
"\n", | |
"You can also run `Jupyter` AND save your `Jupyter` notebooks on [Microsoft Azure Notebooks](https://notebooks.azure.com)." | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 2", | |
"language": "python", | |
"name": "python2" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 2 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython2", | |
"version": "2.7.15" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment