Created
March 3, 2015 01:51
-
-
Save ev-br/932b3c193f99fc52bbd7 to your computer and use it in GitHub Desktop.
teen_life.ipynb
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": 1, | |
| "metadata": { | |
| "collapsed": false, | |
| "slideshow": { | |
| "slide_type": "skip" | |
| } | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "import numpy as np" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "slideshow": { | |
| "slide_type": "slide" | |
| } | |
| }, | |
| "source": [ | |
| "<img src='tl.jpeg' width='600px' />" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "n_states = 5\n", | |
| "\n", | |
| "states = [\"Eat\", \"Hang\", \"Study\", \"Talk\", \"Sleep\"]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Transition probability from state $i$ to state $j$ is $A_{i, j}$" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "A = np.array([[0., 0.7, 0.1, 0, 0.2],\n", | |
| " [0.2, 0.4, 0, 0.2, 0.2],\n", | |
| " [0, 1.0, 0, 0, 0],\n", | |
| " [0, 0.3, 0, 0.7, 0],\n", | |
| " [0.1, 0.1, 0, 0, 0.8]])" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([ 1., 1., 1., 1., 1.])" | |
| ] | |
| }, | |
| "execution_count": 7, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# probabilities must sum to one\n", | |
| "\n", | |
| "np.sum(A, axis=1)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Consider an emsemble of teenagers. At each time $t$ each of them can be in either of the states *E*, *H*, *St*, *T*, *Sl*.\n", | |
| "\n", | |
| "A *population vector*, $s_{t}$, is a number of teenagers in each state at time $t$." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 125, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([ 0.068, 0.221, 0.155, 0.279, 0.277])" | |
| ] | |
| }, | |
| "execution_count": 125, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "np.random.seed(1234)\n", | |
| "\n", | |
| "# Initial population vector\n", | |
| "s_0 = np.random.random(n_states)\n", | |
| "s_0 /= s_0.sum()\n", | |
| "\n", | |
| "s_0" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Time evolution of the population:\n", | |
| "\n", | |
| "$$\n", | |
| "s_{t+1} = A^T s_t\n", | |
| "$$" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 16, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([ 0.07186425, 0.40268538, 0.00679945, 0.23934926, 0.27930166])" | |
| ] | |
| }, | |
| "execution_count": 16, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "s1 = np.dot(A.T, s)\n", | |
| "s1" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 126, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "s_sleep = np.array([0, 0, 0, 0, 1.])" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 127, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([ 0.1, 0.1, 0. , 0. , 0.8])" | |
| ] | |
| }, | |
| "execution_count": 127, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "np.dot(A.T, s_sleep)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 117, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "%matplotlib inline\n", | |
| "from matplotlib import style as mstyle\n", | |
| "mstyle.use('ggplot')\n", | |
| "import matplotlib.pyplot as plt\n", | |
| "\n", | |
| "from scipy import linalg" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 131, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "<matplotlib.legend.Legend at 0x5be28d0>" | |
| ] | |
| }, | |
| "execution_count": 131, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| }, | |
| { | |
| "data": { | |
| "image/png": [ | |
| "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\n", | |
| "6ImIJO7/A4JMVJF147qsAAAAAElFTkSuQmCC\n" | |
| ], | |
| "text/plain": [ | |
| "<matplotlib.figure.Figure at 0x5e17690>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "n_steps = [5, 10, 20, 100, 500]\n", | |
| "\n", | |
| "fig, ax = plt.subplots()\n", | |
| "ccycle = ['m', 'b', 'y', 'g', 'r']\n", | |
| "\n", | |
| "for j, n in enumerate(n_steps):\n", | |
| " \n", | |
| " A_n = linalg.funm(A.T, lambda x: x**n) # NB: this is *not* (A.T)**n !\n", | |
| " s = np.dot(A_n, s_0)\n", | |
| "\n", | |
| " ax.bar(np.arange(n_states) + 0.1*j, s, \n", | |
| " width=0.2, alpha=0.5, label=str(n)+' steps', color=ccycle[j])\n", | |
| "\n", | |
| "ax.set_xticks(np.arange(n_states))\n", | |
| "ax.set_xticklabels(actions)\n", | |
| "plt.legend(loc='best')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Equilibrium distribuion:\n", | |
| "\n", | |
| "$$\n", | |
| "s_{e} = A^T s_e\n", | |
| "$$\n", | |
| "\n", | |
| "which corresponds to $A$ having at least one eigenvalue equal to $1$." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 132, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "5.9947164419982275e-18" | |
| ] | |
| }, | |
| "execution_count": 132, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "linalg.det(A.T - np.eye(n_states))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 206, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([ 0.099, 0.297, 0.01 , 0.198, 0.396])" | |
| ] | |
| }, | |
| "execution_count": 206, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "s_stable = linalg.solve(A.T - np.eye(n_states),\n", | |
| " np.ones(n_states))\n", | |
| "s_stable /= s_stable.sum()\n", | |
| "s_stable" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 133, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([-0.139+0.107j, -0.139-0.107j, 0.416+0.j , 1.000+0.j ,\n", | |
| " 0.762+0.j ])" | |
| ] | |
| }, | |
| "execution_count": 133, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "linalg.eigvals(A.T)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "##### Is the model ergodic? I.e. is there only one limiting distribution?|" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 116, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "[[ 0.099 0.099 0.099 0.099 0.099]\n", | |
| " [ 0.297 0.297 0.297 0.297 0.297]\n", | |
| " [ 0.01 0.01 0.01 0.01 0.01 ]\n", | |
| " [ 0.198 0.198 0.198 0.198 0.198]\n", | |
| " [ 0.396 0.396 0.396 0.396 0.396]]\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "B = A.T.copy()\n", | |
| "\n", | |
| "for _ in range(32):\n", | |
| " B = np.dot(B, B)\n", | |
| "\n", | |
| "print B" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "\n", | |
| "#### Simulate the random walk directly instead.\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 180, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "import scipy.stats as stats\n", | |
| "\n", | |
| "np.random.seed(1234)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 237, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# A[i,:] is a vector of transition probabilities from state `i` \n", | |
| "# prob[i] is a corresponding discrete probability distribution\n", | |
| "\n", | |
| "prob = [None] * n_states\n", | |
| "for i in range(n_states):\n", | |
| " prob[i] = stats.rv_discrete(\n", | |
| " values=(np.arange(n_states), A[i, :])\n", | |
| " )" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 264, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "<matplotlib.collections.LineCollection at 0xb09cd10>" | |
| ] | |
| }, | |
| "execution_count": 264, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| }, | |
| { | |
| "data": { | |
| "image/png": [ | |
| "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\n" | |
| ], | |
| "text/plain": [ | |
| "<matplotlib.figure.Figure at 0xaab18d0>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "fig, (ax1, ax2) = plt.subplots(1, 2)\n", | |
| "\n", | |
| "x = np.arange(n_states)\n", | |
| "ax1.vlines(x, 0, prob[1].pmf(x), lw=8)\n", | |
| "ax2.vlines(x, 0, prob[1].cdf(x), lw=8)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 269, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "num_steps = 10000\n", | |
| "histogram = np.zeros(n_states)\n", | |
| "\n", | |
| "state = 0\n", | |
| "for t in range(num_steps):\n", | |
| " state = dists[state].rvs()\n", | |
| " \n", | |
| " histogram[state] += 1." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 270, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([ 0.099, 0.295, 0.012, 0.203, 0.392])" | |
| ] | |
| }, | |
| "execution_count": 270, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "histogram / histogram.sum()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 213, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "array([ 0.099, 0.297, 0.01 , 0.198, 0.396])" | |
| ] | |
| }, | |
| "execution_count": 213, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "s_stable" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "BUT: Drawing random variates one by one is *slow*." | |
| ] | |
| } | |
| ], | |
| "metadata": { | |
| "celltoolbar": "Slideshow", | |
| "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.3" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 0 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment