{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## CSCS530 Winter 2015\n", "#### Complex Systems 530 - Computer Modeling of Complex Systems (Winter 2015)\n", "\n", " * Course ID: CMPLXSYS 530\n", " * Course Title: Computer Modeling of Complex Systems\n", " * Term: Winter 2015\n", " * Schedule: Wednesdays and Friday, 1:00-2:30PM ET\n", " * Location: 120 West Hall (http://www.lsa.umich.edu/cscs/research/computerlab)\n", " * Teachers: [Mike Bommarito](https://www.linkedin.com/in/bommarito) and [Sarah Cherng](https://www.linkedin.com/pub/sarah-cherng/35/1b7/316)\n", "\n", "#### [View this repository on NBViewer](http://nbviewer.ipython.org/github/mjbommar/cscs-530-w2015/tree/master/)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Reading Model Results\n", "\n", " In this notebook, we'll learn a common pattern for reading the results of a model run. Specifically, we'll:\n", " \n", " * find all model output directories\n", " * read the model output into a new dataset\n", " * visualize the results\n", " * perform a statistical test" ] }, { "cell_type": "code", "execution_count": 105, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Imports\n", "import matplotlib.pyplot as plt\n", "import numpy\n", "import pandas\n", "import scipy\n", "import scipy.stats\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Loading Model Results\n", "\n", " First, we need to find the list of all directories in our model output folder from the ``001-storing-model-results`` notebook. We can do this using the ``glob`` and ``os`` modules, which will allow us to work with directories and list their contents." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['002-reading-model-results.ipynb',\n", " '001-storing-model-results.ipynb',\n", " 'output',\n", " 'hiv_model.pyc',\n", " '.ipynb_checkpoints',\n", " 'hiv_model.py']" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import os\n", "\n", "# Using os.listdir to show the current directory\n", "os.listdir(\"./\")" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['run-20150318-86',\n", " 'run-20150318-97',\n", " 'run-20150318-0',\n", " 'run-20150318-77',\n", " 'run-20150318-95']" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Using os.listdir to show the output directory\n", "os.listdir(\"output\")[0:5]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['output/run-20150318-86',\n", " 'output/run-20150318-97',\n", " 'output/run-20150318-0',\n", " 'output/run-20150318-77',\n", " 'output/run-20150318-95']" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import glob\n", "\n", "# Using glob to list the output directory\n", "glob.glob(\"output/run-*\")[0:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using os.path.join and os.path.basename\n", "\n", " We can also create paths and navigate directory trees using ``os.path.join``. This method helps build file and directory paths, like we see below." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "run-20150318-86\n", "run-20150318-86/parameters.csv\n" ] } ], "source": [ "run_directory = os.listdir(\"output\")[0]\n", "print(run_directory)\n", "print(os.path.join(run_directory,\n", " \"parameters.csv\"))\n", " " ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "output/run-20150318-94\n", "run-20150318-94\n" ] } ], "source": [ "print(run_directory)\n", "print(os.path.basename(run_directory))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Iterating through model run directories\n", " \n", " Next, once we are able to \"find\" all model run directories, we need to iterate through them and read all data from them. In the cells, we create data frames for each CSV output file from out ``001-storing-model-results`` notebook." ] }, { "cell_type": "code", "execution_count": 101, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Create \"complete\" data frames\n", "run_data = []\n", "all_timeseries_data = pandas.DataFrame()\n", "all_interaction_data = pandas.DataFrame()\n", "\n", "\n", "# Iterate over all directories\n", "for run_directory in glob.glob(\"output/run*\"):\n", " # Get the run ID from our directory name\n", " run_id = os.path.basename(run_directory)\n", " \n", " # Load parameter and reshape\n", " run_parameter_data = pandas.read_csv(os.path.join(run_directory, \"parameters.csv\"))\n", " run_parameter_data.index = run_parameter_data[\"parameter\"]\n", " \n", " # Load timeseries and interactions\n", " run_interaction_data = pandas.read_csv(os.path.join(run_directory, \"interactions.csv\"))\n", " run_interaction_data[\"run\"] = run_id\n", " run_ts_data = pandas.read_csv(os.path.join(run_directory, \"timeseries.csv\"))\n", " run_ts_data[\"run\"] = run_id\n", " \n", " # Flatten parameter data into interaction and TS data\n", " for parameter_name in run_parameter_data.index:\n", " run_ts_data.loc[:, parameter_name] = run_parameter_data.loc[parameter_name, \"value\"]\n", " \n", " if run_interaction_data.shape[0] > 0:\n", " for parameter_name in run_parameter_data.index:\n", " run_interaction_data.loc[:, parameter_name] = run_parameter_data.loc[parameter_name, \"value\"]\n", " \n", " # Store raw run data\n", " run_data.append({\"parameters\": run_parameter_data,\n", " \"interactions\": run_interaction_data,\n", " \"timeseries\": run_ts_data})\n", " \n", " # Update final steps\n", " all_timeseries_data = all_timeseries_data.append(run_ts_data)\n", " all_interaction_data = all_interaction_data.append(run_interaction_data)" ] }, { "cell_type": "code", "execution_count": 102, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(12000, 16)\n", "(15602, 18)\n" ] } ], "source": [ "# let's see how many records we have.\n", "print(all_timeseries_data.shape)\n", "print(all_interaction_data.shape)" ] }, { "cell_type": "code", "execution_count": 112, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0num_infectednum_interactionsnum_interactions_condomsruncondom_costmax_prob_hookupmin_condom_budgetmin_prob_hookupmax_condom_budgetmin_subsidymax_subsidygrid_sizeprob_transmitprob_transmit_condomnum_people
0 0 1 1 1 run-20150318-97 1 0.2 0 0 1 1 1 10 0.9 0.1 10
1 1 1 1 1 run-20150318-97 1 0.2 0 0 1 1 1 10 0.9 0.1 10
2 2 1 1 1 run-20150318-97 1 0.2 0 0 1 1 1 10 0.9 0.1 10
3 3 1 1 1 run-20150318-97 1 0.2 0 0 1 1 1 10 0.9 0.1 10
4 4 1 1 1 run-20150318-97 1 0.2 0 0 1 1 1 10 0.9 0.1 10
\n", "
" ], "text/plain": [ " Unnamed: 0 num_infected num_interactions num_interactions_condoms \\\n", "0 0 1 1 1 \n", "1 1 1 1 1 \n", "2 2 1 1 1 \n", "3 3 1 1 1 \n", "4 4 1 1 1 \n", "\n", " run condom_cost max_prob_hookup min_condom_budget \\\n", "0 run-20150318-97 1 0.2 0 \n", "1 run-20150318-97 1 0.2 0 \n", "2 run-20150318-97 1 0.2 0 \n", "3 run-20150318-97 1 0.2 0 \n", "4 run-20150318-97 1 0.2 0 \n", "\n", " min_prob_hookup max_condom_budget min_subsidy max_subsidy grid_size \\\n", "0 0 1 1 1 10 \n", "1 0 1 1 1 10 \n", "2 0 1 1 1 10 \n", "3 0 1 1 1 10 \n", "4 0 1 1 1 10 \n", "\n", " prob_transmit prob_transmit_condom num_people \n", "0 0.9 0.1 10 \n", "1 0.9 0.1 10 \n", "2 0.9 0.1 10 \n", "3 0.9 0.1 10 \n", "4 0.9 0.1 10 " ] }, "execution_count": 112, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Let's see what the data looks like.\n", "all_timeseries_data.head()" ] }, { "cell_type": "code", "execution_count": 114, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0agent_aagent_bcondom_costgrid_sizeis_transmissionmax_condom_budgetmax_prob_hookupmax_subsidymin_condom_budgetmin_prob_hookupmin_subsidynum_peopleprob_transmitprob_transmit_condomruntimeuse_condom
0 0 2 5 1 10 False 1 0.2 1 0 0.0 1 10 0.9 0.1 run-20150318-97 0 True
1 1 5 8 1 10 False 1 0.2 1 0 0.0 1 10 0.9 0.1 run-20150318-97 94 True
0 0 5 9 1 10 True 1 1.0 1 0 0.8 1 10 0.9 0.1 run-20150318-0 0 True
1 1 5 7 1 10 False 1 1.0 1 0 0.8 1 10 0.9 0.1 run-20150318-0 1 True
2 2 5 9 1 10 False 1 1.0 1 0 0.8 1 10 0.9 0.1 run-20150318-0 1 True
\n", "
" ], "text/plain": [ " Unnamed: 0 agent_a agent_b condom_cost grid_size is_transmission \\\n", "0 0 2 5 1 10 False \n", "1 1 5 8 1 10 False \n", "0 0 5 9 1 10 True \n", "1 1 5 7 1 10 False \n", "2 2 5 9 1 10 False \n", "\n", " max_condom_budget max_prob_hookup max_subsidy min_condom_budget \\\n", "0 1 0.2 1 0 \n", "1 1 0.2 1 0 \n", "0 1 1.0 1 0 \n", "1 1 1.0 1 0 \n", "2 1 1.0 1 0 \n", "\n", " min_prob_hookup min_subsidy num_people prob_transmit \\\n", "0 0.0 1 10 0.9 \n", "1 0.0 1 10 0.9 \n", "0 0.8 1 10 0.9 \n", "1 0.8 1 10 0.9 \n", "2 0.8 1 10 0.9 \n", "\n", " prob_transmit_condom run time use_condom \n", "0 0.1 run-20150318-97 0 True \n", "1 0.1 run-20150318-97 94 True \n", "0 0.1 run-20150318-0 0 True \n", "1 0.1 run-20150318-0 1 True \n", "2 0.1 run-20150318-0 1 True " ] }, "execution_count": 114, "metadata": {}, "output_type": "execute_result" } ], "source": [ "all_interaction_data.head()" ] }, { "cell_type": "code", "execution_count": 107, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline\n", "# let's use groupby to find some information.\n", "last_step_data = all_timeseries_data.groupby(\"run\").tail(1)" ] }, { "cell_type": "code", "execution_count": 110, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 110, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": [ "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\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Simple plot\n", "f = plt.figure()\n", "plt.scatter(last_step_data[\"min_subsidy\"],\n", " last_step_data[\"num_infected\"],\n", " alpha=0.5)\n", "plt.xlabel(\"Subsidy\")\n", "plt.ylabel(\"Number infected\")\n", "plt.title(\"Subsidy vs. number infected\")" ] }, { "cell_type": "code", "execution_count": 129, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meanstd
runmin_subsidymin_prob_hookup
run-20150318-010.8 6.04 3.247128
run-20150318-100.0 1.00 0.000000
run-20150318-1000.0 1.04 0.196946
run-20150318-10010.0 1.00 0.000000
run-20150318-10110.4 2.12 1.423327
\n", "
" ], "text/plain": [ " mean std\n", "run min_subsidy min_prob_hookup \n", "run-20150318-0 1 0.8 6.04 3.247128\n", "run-20150318-1 0 0.0 1.00 0.000000\n", "run-20150318-10 0 0.0 1.04 0.196946\n", "run-20150318-100 1 0.0 1.00 0.000000\n", "run-20150318-101 1 0.4 2.12 1.423327" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Let's use groupby with **multiple** variables now.\n", "mean_infected_by_subsidy = all_timeseries_data.groupby([\"run\", \"min_subsidy\", \"min_prob_hookup\"])[\"num_infected\"].mean()\n", "std_infected_by_subsidy = all_timeseries_data.groupby([\"run\", \"min_subsidy\", \"min_prob_hookup\"])[\"num_infected\"].std()\n", "infected_by_subsidy = pandas.concat((mean_infected_by_subsidy,\n", " std_infected_by_subsidy), axis=1)\n", "infected_by_subsidy.columns = [\"mean\", \"std\"]\n", "infected_by_subsidy.head()" ] }, { "cell_type": "code", "execution_count": 134, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 134, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": [ "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\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot a distribution\n", "f = plt.figure()\n", "_ = plt.hist(last_step_data[\"num_infected\"].values,\n", " color=\"red\",\n", " alpha=0.5)\n", "plt.xlabel(\"Number infected\")\n", "plt.ylabel(\"Frequency\")\n", "plt.title(\"Distribution of number infected\")" ] }, { "cell_type": "code", "execution_count": 140, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Perform distribution tests for no subsidy vs. some subsidy\n", "no_subsidy_data = last_step_data.loc[last_step_data[\"min_subsidy\"] == 0,\n", " \"num_infected\"]\n", "some_subsidy_data = last_step_data.loc[last_step_data[\"min_subsidy\"] > 0,\n", " \"num_infected\"]" ] }, { "cell_type": "code", "execution_count": 153, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 153, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": [ "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\n", "I6VNAAAAAElFTkSuQmCC\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot a distribution\n", "f = plt.figure()\n", "_ = plt.hist(no_subsidy_data.values,\n", " color=\"red\",\n", " alpha=0.25)\n", "_ = plt.hist(some_subsidy_data.values,\n", " color=\"blue\",\n", " alpha=0.25)\n", "plt.xlabel(\"Number infected\")\n", "plt.ylabel(\"Frequency\")\n", "plt.title(\"Distribution of number infected\")" ] }, { "cell_type": "code", "execution_count": 147, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(0.6422606706619263, 2.495028184057446e-07)\n", "(0.7675792574882507, 1.284632400455621e-10)\n", "(5.5031636888978275, 0.020650644408257007)\n" ] } ], "source": [ "# Test for normality\n", "print(scipy.stats.shapiro(no_subsidy_data))\n", "print(scipy.stats.shapiro(some_subsidy_data))\n", "\n", "# Test for equal variances\n", "print(scipy.stats.levene(no_subsidy_data, some_subsidy_data))" ] }, { "cell_type": "code", "execution_count": 148, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(2.3313286379544826, 0.021432766613366575)\n", "(2.8181818181818183, 0.0048296452559399346)\n" ] } ], "source": [ "# Perform t-test\n", "print(scipy.stats.ttest_ind(no_subsidy_data, some_subsidy_data))\n", "\n", "# Perform rank-sum test\n", "print(scipy.stats.ranksums(no_subsidy_data, some_subsidy_data))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "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.3" } }, "nbformat": 4, "nbformat_minor": 0 }