{
"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",
" Unnamed: 0 | \n",
" num_infected | \n",
" num_interactions | \n",
" num_interactions_condoms | \n",
" run | \n",
" condom_cost | \n",
" max_prob_hookup | \n",
" min_condom_budget | \n",
" min_prob_hookup | \n",
" max_condom_budget | \n",
" min_subsidy | \n",
" max_subsidy | \n",
" grid_size | \n",
" prob_transmit | \n",
" prob_transmit_condom | \n",
" num_people | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" run-20150318-97 | \n",
" 1 | \n",
" 0.2 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 10 | \n",
" 0.9 | \n",
" 0.1 | \n",
" 10 | \n",
"
\n",
" \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" run-20150318-97 | \n",
" 1 | \n",
" 0.2 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 10 | \n",
" 0.9 | \n",
" 0.1 | \n",
" 10 | \n",
"
\n",
" \n",
" 2 | \n",
" 2 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" run-20150318-97 | \n",
" 1 | \n",
" 0.2 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 10 | \n",
" 0.9 | \n",
" 0.1 | \n",
" 10 | \n",
"
\n",
" \n",
" 3 | \n",
" 3 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" run-20150318-97 | \n",
" 1 | \n",
" 0.2 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 10 | \n",
" 0.9 | \n",
" 0.1 | \n",
" 10 | \n",
"
\n",
" \n",
" 4 | \n",
" 4 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" run-20150318-97 | \n",
" 1 | \n",
" 0.2 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 10 | \n",
" 0.9 | \n",
" 0.1 | \n",
" 10 | \n",
"
\n",
" \n",
"
\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",
" Unnamed: 0 | \n",
" agent_a | \n",
" agent_b | \n",
" condom_cost | \n",
" grid_size | \n",
" is_transmission | \n",
" max_condom_budget | \n",
" max_prob_hookup | \n",
" max_subsidy | \n",
" min_condom_budget | \n",
" min_prob_hookup | \n",
" min_subsidy | \n",
" num_people | \n",
" prob_transmit | \n",
" prob_transmit_condom | \n",
" run | \n",
" time | \n",
" use_condom | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0 | \n",
" 2 | \n",
" 5 | \n",
" 1 | \n",
" 10 | \n",
" False | \n",
" 1 | \n",
" 0.2 | \n",
" 1 | \n",
" 0 | \n",
" 0.0 | \n",
" 1 | \n",
" 10 | \n",
" 0.9 | \n",
" 0.1 | \n",
" run-20150318-97 | \n",
" 0 | \n",
" True | \n",
"
\n",
" \n",
" 1 | \n",
" 1 | \n",
" 5 | \n",
" 8 | \n",
" 1 | \n",
" 10 | \n",
" False | \n",
" 1 | \n",
" 0.2 | \n",
" 1 | \n",
" 0 | \n",
" 0.0 | \n",
" 1 | \n",
" 10 | \n",
" 0.9 | \n",
" 0.1 | \n",
" run-20150318-97 | \n",
" 94 | \n",
" True | \n",
"
\n",
" \n",
" 0 | \n",
" 0 | \n",
" 5 | \n",
" 9 | \n",
" 1 | \n",
" 10 | \n",
" True | \n",
" 1 | \n",
" 1.0 | \n",
" 1 | \n",
" 0 | \n",
" 0.8 | \n",
" 1 | \n",
" 10 | \n",
" 0.9 | \n",
" 0.1 | \n",
" run-20150318-0 | \n",
" 0 | \n",
" True | \n",
"
\n",
" \n",
" 1 | \n",
" 1 | \n",
" 5 | \n",
" 7 | \n",
" 1 | \n",
" 10 | \n",
" False | \n",
" 1 | \n",
" 1.0 | \n",
" 1 | \n",
" 0 | \n",
" 0.8 | \n",
" 1 | \n",
" 10 | \n",
" 0.9 | \n",
" 0.1 | \n",
" run-20150318-0 | \n",
" 1 | \n",
" True | \n",
"
\n",
" \n",
" 2 | \n",
" 2 | \n",
" 5 | \n",
" 9 | \n",
" 1 | \n",
" 10 | \n",
" False | \n",
" 1 | \n",
" 1.0 | \n",
" 1 | \n",
" 0 | \n",
" 0.8 | \n",
" 1 | \n",
" 10 | \n",
" 0.9 | \n",
" 0.1 | \n",
" run-20150318-0 | \n",
" 1 | \n",
" True | \n",
"
\n",
" \n",
"
\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",
" mean | \n",
" std | \n",
"
\n",
" \n",
" run | \n",
" min_subsidy | \n",
" min_prob_hookup | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" run-20150318-0 | \n",
" 1 | \n",
" 0.8 | \n",
" 6.04 | \n",
" 3.247128 | \n",
"
\n",
" \n",
" run-20150318-1 | \n",
" 0 | \n",
" 0.0 | \n",
" 1.00 | \n",
" 0.000000 | \n",
"
\n",
" \n",
" run-20150318-10 | \n",
" 0 | \n",
" 0.0 | \n",
" 1.04 | \n",
" 0.196946 | \n",
"
\n",
" \n",
" run-20150318-100 | \n",
" 1 | \n",
" 0.0 | \n",
" 1.00 | \n",
" 0.000000 | \n",
"
\n",
" \n",
" run-20150318-101 | \n",
" 1 | \n",
" 0.4 | \n",
" 2.12 | \n",
" 1.423327 | \n",
"
\n",
" \n",
"
\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
}