{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Code - Pandemic Flu Spread Using “Green” Simulation Method for Small Sample of Elementary Students " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This paper studies a pandemic flu spread case applying a “green” simulation method, using pseudo-random numbers as presented in the paper by Wilson S., Alabdulkarim A. and Goldsman D. W, [“Green Simulation of Pandemic Disease Propagation”](http://www.math.uwaterloo.ca/~mbfeng/papers/GreenSimWSC.pdf) in a simulation environment build in Python. The scenario is an elementary school with twenty-one kids and the impact of infection when one infected kid enters the system. The findings and answers to the questions are presented at the end of the paper. The paper can be read [here](https://www.carlosaordonez.com/fastpages_3/2020/11/27/Pandemic-Flu-Spread-Using-Green-Simulation-Method-for-Small-Sample-of-Elementary-Students.html)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "#hide\n", "import numpy as np\n", "import pandas as pd\n", "import random\n", "\n", "# probability update function\n", "def pandemic (n, k, p ):\n", "#n number of students, k number of days and p probability\n", "\n", " def p_infected(q, q_t_1):\n", " out= 1 - q **(q_t_1)\n", " #print(out)\n", " return round(out,5)\n", "\n", " # Number of susceptibles \n", " #n = 21\n", " ## Number of days\n", " #k = 30\n", " U = np.random.uniform(0,1,n)\n", " #print(U)\n", " #infected Io =1 \n", " Io=1\n", " #gama rate of infection\n", " gama=1/3\n", " #probability of infection p Bernoulli original at p=0.02 testing with 0.2\n", " #p=0.02\n", " q=1-p\n", " #q=beta/gama\n", " po=1.0-q**Io\n", " po\n", " countPRN=0\n", " # Create a list of days length k\n", " days = np.arange(1,n+1)\n", " probs = np.zeros(n)\n", " probs[0] = p\n", " ## Initial state and PRN\n", " state = np.empty(n, dtype=object)\n", " prn = np.random.uniform(0,1,n)\n", " state[:] = 'S'\n", " # Metadata to count days infected\n", " t_infected = np.zeros(n)\n", " # Generate random Infected'\n", " infected_idx = random.randint(0,n-1)\n", " state[infected_idx] = 'I'\n", " t_infected[infected_idx] = 0\n", " days_sim = list()\n", " days_sim.append(pd.DataFrame(data= {'prn': prn, 'state': state, 't_infected': t_infected}))\n", "\n", " #print(days_sim)\n", "\n", " summary_df = pd.DataFrame(data= {'day':[], 'infected':[], 'susceptible':[],'recovered':[],\n", " 'probability':[], 'count_prn':[] })\n", " last_recovered = pd.DataFrame(data= {'day':[], 'infected':[], 'susceptible':[],'recovered':[],\n", " 'probability':[], 'count_prn':[] })\n", "\n", " for d in range(1,k):\n", " # Get initial data\n", " prn = np.zeros(n)\n", " #prn = np.random.uniform(0,1,m)\n", " prev_df = days_sim[d-1]\n", "\n", " state = prev_df['state'].copy()\n", " t_inf = prev_df['t_infected'].copy()\n", "\n", " # print('================== Day', d, '======================') \n", " # print('p:', p)\n", " # print('Infected:', m)\n", " # print('Susceptible:', s_i)\n", " # print('Removed:', r_i)\n", " # print('m:', m)\n", "\n", " #print(state)\n", " # Simulate current day\n", " for index,rand in enumerate(prn):\n", " # If student is infected, then check how many days he has been infected\n", " # if it's less than 3 then increase the count, else move him to state R\n", " # and leave the count as is (it will no longer be used)\n", "\n", " if state[index] == 'I':\n", " if t_inf[index] < 3:\n", " t_inf[index] = t_inf[index] + 1\n", " else:\n", " state[index] = 'R'\n", "\n", " # Else if the student is still sucseptible \n", " elif state[index] =='S':\n", " countPRN=countPRN+1\n", " prn[index] = random.uniform(0,1)\n", " if prn[index] < p:\n", " state[index] = 'I'\n", " t_inf[index] = 1\n", " \n", " #updating p\n", " #print('prn:', prn)\n", " #print('state:', list(state))\n", " m = len(state[state == 'I'])\n", " p = p_infected(q, m)\n", " s_i = len(state[state == 'S'])\n", " r_i = len(state[state == 'R'])\n", " metrics = {'day': int(d),'infected':int(m), 'susceptible':int(s_i),'recovered':int(r_i), 'probability':p, 'count_prn':countPRN } \n", " # metrics = {'day': [d],'infected':[m], 'susceptible':[s_i],'recovered':[r_i], 'probability':[p], 'prn':[countPRN] } \n", " summary_df = summary_df.append(metrics, ignore_index = True)\n", " #print(summary_df)\n", " if r_i == n:\n", " print (f'All {r_i} removed: in day {d}')\n", " break\n", "\n", " # print('================== Day', d, '======================') \n", " # print('p:', p)\n", " # print('Infected:', m)\n", " # print('Susceptible:', s_i)\n", " # print('Removed:', r_i)\n", " #print(pd.DataFrame(data= {'prn': prn, 'state': state, 't_infected': t_inf}))\n", " days_sim.append(pd.DataFrame(data= {'prn': prn, 'state': state, 't_infected': t_inf})) \n", " #print(summary_df)\n", " last_recovered= last_recovered.append(metrics, ignore_index = True)\n", " return summary_df, last_recovered\n", " #return metrics\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Modeling\n", "This section creates the replications. The input here are: The number of kids, the number of days and the probability of infection" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# This code creates the replications\n", "replications=100\n", "kids=21\n", "days=30\n", "p=0.02\n", "#initializes the data frame of replications\n", "summary_df_replications = pd.DataFrame(data= {'day':[], 'infected':[], 'susceptible':[],'recovered':[],\n", " 'probability':[], 'count_prn':[] })\n", "#initializes the list of last recovered which I will be saving in a data frame for every iteration\n", "summary_last_recovered=summary_df_replications\n", "\n", "mean_per_day =pd.DataFrame(data= {'day':[], 'infected':[], 'susceptible':[],'recovered':[],\n", " 'probability':[], 'count_prn':[] })\n", "\n", "#runs every iteration\n", "for i in range (0, replications):\n", " metrics_result, info_last_recovered = pandemic (kids, days+1, p )\n", " #n number of students, k number of days and p probability\n", " #in this case 21 students with a lenght of 365 days and probability of 0.02\n", " \n", " #creates a single data frame for all replications\n", " summary_df_replications=pd.concat([summary_df_replications, pd.DataFrame(data=metrics_result)])\n", " #creates a single data frame for all replications last recovered\n", " summary_last_recovered=pd.concat([summary_last_recovered, pd.DataFrame(data=info_last_recovered)])\n", " " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "#calcuates the day that there is are no longer infections\n", "def getDayNoInfection(df, infected='infected'):\n", " counter = 0\n", " index = 0\n", " #print(df.head())\n", " for index,d in df.iterrows(): \n", " if d[infected] == 0:\n", " counter = counter + 1\n", " if counter == 0:\n", " index = d['day']\n", " if counter >= 3:\n", " break\n", " return index-1\n", "def getDaysOfNoInfectionsMean(df):\n", " days_change = []\n", " for i in range(replications):\n", " day = getDayNoInfection(df[i*60: i*60 + 60])\n", " days_change.append(day)\n", " out= sum(days_change)/len(days_change)\n", " #print(out)\n", " return (out, days_change)\n", " \n", "last_infected= getDaysOfNoInfectionsMean(summary_df_replications)\n", " #print(counter) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Results" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Table of Replications\n" ] }, { "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", "
dayinfectedsusceptiblerecoveredprobabilitycount_prn
01.01.020.00.00.0220.0
12.01.020.00.00.0240.0
23.01.020.00.00.0260.0
34.00.020.01.00.0080.0
45.00.020.01.00.00100.0
.....................
2526.00.014.07.00.00393.0
2627.00.014.07.00.00407.0
2728.00.014.07.00.00421.0
2829.00.014.07.00.00435.0
2930.00.014.07.00.00449.0
\n", "

3000 rows × 6 columns

\n", "
" ], "text/plain": [ " day infected susceptible recovered probability count_prn\n", "0 1.0 1.0 20.0 0.0 0.02 20.0\n", "1 2.0 1.0 20.0 0.0 0.02 40.0\n", "2 3.0 1.0 20.0 0.0 0.02 60.0\n", "3 4.0 0.0 20.0 1.0 0.00 80.0\n", "4 5.0 0.0 20.0 1.0 0.00 100.0\n", ".. ... ... ... ... ... ...\n", "25 26.0 0.0 14.0 7.0 0.00 393.0\n", "26 27.0 0.0 14.0 7.0 0.00 407.0\n", "27 28.0 0.0 14.0 7.0 0.00 421.0\n", "28 29.0 0.0 14.0 7.0 0.00 435.0\n", "29 30.0 0.0 14.0 7.0 0.00 449.0\n", "\n", "[3000 rows x 6 columns]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Last Day of The Iteration per Replication\n" ] }, { "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", "
dayinfectedsusceptiblerecoveredprobabilitycount_prn
030.00.020.01.00.0600.0
030.00.017.04.00.0520.0
030.00.06.015.00.0318.0
030.00.07.014.00.0329.0
030.00.013.08.00.0446.0
.....................
030.00.020.01.00.0600.0
030.00.016.05.00.0492.0
030.00.015.06.00.0472.0
030.00.06.015.00.0303.0
030.00.014.07.00.0449.0
\n", "

100 rows × 6 columns

\n", "
" ], "text/plain": [ " day infected susceptible recovered probability count_prn\n", "0 30.0 0.0 20.0 1.0 0.0 600.0\n", "0 30.0 0.0 17.0 4.0 0.0 520.0\n", "0 30.0 0.0 6.0 15.0 0.0 318.0\n", "0 30.0 0.0 7.0 14.0 0.0 329.0\n", "0 30.0 0.0 13.0 8.0 0.0 446.0\n", ".. ... ... ... ... ... ...\n", "0 30.0 0.0 20.0 1.0 0.0 600.0\n", "0 30.0 0.0 16.0 5.0 0.0 492.0\n", "0 30.0 0.0 15.0 6.0 0.0 472.0\n", "0 30.0 0.0 6.0 15.0 0.0 303.0\n", "0 30.0 0.0 14.0 7.0 0.0 449.0\n", "\n", "[100 rows x 6 columns]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "###### This code is to check the outputs ###\n", "#show the table of summary_df_replications\n", "#print(summary_df_replications[0:days])\n", "print (\"Table of Replications\")\n", "display(summary_df_replications)\n", "\n", "\n", "#testing to see the tail of the entire dataframe\n", "#print (summary_df_replications.tail())\n", "#test to see data from the daya of last recovered\n", "print (\"Last Day of The Iteration per Replication\")\n", "display(summary_last_recovered)\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "day 30.00\n", "infected 0.00\n", "susceptible 14.03\n", "recovered 6.97\n", "probability 0.00\n", "count_prn 457.01\n", "dtype: float64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summary_last_recovered.mean()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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RETKR2lagO8DDkgbdiHwiru3B16J70VEREREqqysE2B3fwNYlDb4IOD++Pp+4ODyCUtEREREpGKUtQ9wS3efG19/D7Qs4/xERERERCpUud0E5+4OeKYyMxtqZh+Y2QcrV64sr0WKiIiIiJRaWRPgeWa2OUD8Pz/TSO5+p7t3dfeudevWLeMiRUREREQ2XFkT4DHACfH1CcDoMs5PRERERKRCleYxaI8CbwPbm9m3ZnYycA3Qz8xmAH3jexERERGRKqtWtiO6+1FFFO1bTrGIiIiIiFQ4/RKciIiIiCSKEmARERERSRQlwCIiIiKSKEqARURERCRRlACLiIiISKIoARYRERGRRFECLCIiIiKJogRYRERERBJFCbCIiIiIJIoSYBERERFJFCXAIiIiIpIoSoBFREREJFGUAIuIiIhIoigBFhEREZFEUQIsIiIiIomiBFhEREREEkUJsIiIiIgkihJgEREREUkUJcAiIiIikihKgEVEREQkUZQAi4iIiEiiKAEWERERkURRAiwiIiIiiaIEWEREREQSRQmwiIiIiCSKEmARERERSRQlwCIiIiKSKEqARURERCRRlACLiIiISKLUKo+ZmNlsYCmwBljt7l3LY74iIiIiIuWtXBLgaG93/6Ec5yciIiIiUu7UBUJEREREEqW8EmAHxpnZZDMbWk7zFBEREREpd+XVBaKHu88xs82A8Wb2qbu/UVgYk+KhAB1bNyqnRYqIiIiIlF65tAC7+5z4fz7wNNAtrfxOd+/q7l3r1q1bHosUEREREdkgZU6AzayhmTUufA3sB0wt63xFRERERCpCeXSBaAk8bWaF83vE3V8sh/mKiIiIiJS7MifA7j4L6FwOsYiIiIiIVDg9Bk1EREREEkUJsIiIiIgkihJgEREREUkUJcAiIiIikihKgEVEREQkUZQAi4iIiEiiKAEWERERkURRAiwiIiIiiaIEWEREREQSRQmwiIiIiCSKEmARERERSRQlwCIiIiKSKEqARURERCRRlACLiIiISKIoARYRERGRRFECLCIiIiKJogRYRERERBJFCbCIiIiIJIoSYBERERFJFCXAIiIiIpIoSoBFREREJFGUAIuIiIhIoigBFhEREZFEUQIsIiIiIolSq7IXuGJOAdMv/6iyFysiIiIiAqgFWEREREQSRgmwiIiIiCRKpXeBmN9qK66/8P7K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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#collapse\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "fig = plt.figure(figsize=(12, 10))\n", "\n", "########## Plotting the first iteration #################\n", "ax = [fig.add_subplot(311, axisbelow=True)]\n", "\n", "pal = sns.color_palette(\"tab10\")\n", "max_infected=max(summary_df_replications[\"infected\"][0:days])\n", "#top plot\n", "ax[0].stackplot(summary_df_replications[\"day\"][0:days],\n", " summary_df_replications[\"infected\"][0:days],\n", " summary_df_replications[\"susceptible\"][0:days],\n", " summary_df_replications[\"recovered\"][0:days],\n", " colors=pal, alpha=0.7)\n", "ax[0].set_title(f'Susceptible, Infected,and Recoveredwith with {kids} kids, in {days} days, p={p}. First iteration')\n", "ax[0].set_xlabel('Days')\n", "ax[0].legend([\n", " 'Infected', \n", " 'Susceptible', \n", " 'Recovered'], \n", " loc='best')\n", "ax[0].set_xlim(1, days-1)\n", "ax[0].set_ylim(0, kids)\n", "\n", "#this plots a line with the max infected\n", "ax[0].annotate(\"Max infected(%.2f)\"%(max_infected),\n", " (0, max_infected),(0+3, max_infected+3), \n", " #(max_infected, max_infected),\n", " arrowprops=dict(arrowstyle='->'))\n", "ax[0].plot(np.array([0, days-1]), [max_infected, max_infected], lw=3, label='Max Infected')\n", "\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "summary_df_replications_Table= summary_df_replications.rename(columns={\"day\": \"Day\",\"infected\":\"Infected\", \"susceptible\":\"Susceptible\",\n", " \"recovered\":\"Removed\",\"probability\": \"Probability\", \n", " \"count_prn\": \"Cumulative PRNs\" } )\n", "#summary_df_replications_Table.iloc[0:int(last_infected)]\n", "#type summary_df_replications_Table = summary_df_replications_Table.astype({\"Day\": int, \"Infected\": int}) " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "#collapse\n", "##################### Calculating the Means for each day ####################\n", "#calculates the mean per replications\n", "#not correcto start\n", "mean_replications = pd.DataFrame(summary_last_recovered.mean(axis=0)).T\n", "mean_replications\n", "# not correcto end\n", "\n", "#mean of first iteration\n", "#print(summary_df_replications[\"infected\"][0:days].mean())\n", "\n", "#mean of the day 1 \n", "#print(f'Mean of day 1 :{summary_df_replications[\"infected\"][0].mean()}')\n", "\n", "#mean of all days 1\n", "mean_of_days_infected=[]\n", "mean_of_days_susceptible=[]\n", "mean_of_days_removed=[]\n", "\n", "#calculating the variance per day\n", "var_of_days_infected=[]\n", "var_of_days_susceptible=[]\n", "var_of_days_removed=[]\n", "\n", "#creating a table only for the infected values \n", "#if the mean is taking for all of the days including the 0 the mean will also include zero values\n", "\n", "#set the range of the days\n", "\n", "x=range(1,days)\n", "\n", "for i in range(0,days-1):\n", " mean_of_days_infected.append(summary_df_replications[\"infected\"][i].mean())\n", " mean_of_days_susceptible.append(summary_df_replications[\"susceptible\"][i].mean())\n", " mean_of_days_removed.append(summary_df_replications[\"recovered\"][i].mean())\n", " #for the variance\n", " var_of_days_infected.append(summary_df_replications[\"infected\"][i].var())\n", " var_of_days_susceptible.append(summary_df_replications[\"susceptible\"][i].var())\n", " var_of_days_removed.append(summary_df_replications[\"recovered\"][i].var())\n", " \n", " #print(summary_df_replications[\"infected\"][i].mean())\n", "\n", "#print(f'mean of each day {mean_of_days_infected}')\n", "dataframe_means= pd.DataFrame(data={'Day':x,\n", " 'mean_per_day_infected':mean_of_days_infected,\n", " 'mean_of_days_susceptible':mean_of_days_susceptible,\n", " 'mean_of_days_removed':mean_of_days_removed})\n", "#creates a dataframeof the variances\n", "dataframe_variance=pd.DataFrame(data={'Day':x,\n", " 'Variance per day Infected':var_of_days_infected,\n", " 'Variance per day Susceptible':var_of_days_susceptible,\n", " 'Variance per day Recovered':var_of_days_removed} )" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Day that no more kids gets infected 21th day\n", "\n" ] } ], "source": [ "#Calculates the day that there is not more infected from the means of each replications\n", "last_infected_mean= getDayNoInfection(dataframe_means,'mean_per_day_infected')\n", "print(f'Day that no more kids gets infected {last_infected_mean}th day')\n", "dataframe_means\n", "print()\n", "mean_days, array_days= getDaysOfNoInfectionsMean(summary_df_replications)\n", "End_total_infection = summary_df_replications[summary_df_replications[\"infected\"]<1]\n", "#End_total_infection[]\n", "#getDaysOfNoInfectionsMean(summary_df_replications)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.62\n" ] }, { "data": { "text/plain": [ "Text(0, 0.5, 'Expected Value and Variance of Infected')" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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8RawJ3AE8BPQBsgIN6g6a/77sH1lpKMwJjQZ650Hv/jyIx1JrZaenk7nzp1ZsmQJAKNGjeKVV14BnFLM66+/nq5du3LooYcW1a9dtmwZRx55JH379mXw4MEsXrwYgA0bNnDiiSfSs2dPevbsyfTp07n11ltZtmwZvXr14qabbgLgkUce4YADDqBHjx7cddddRbE88MADdOrUiUGDBhXFE8zj8XDaaacxfvz4on7jx49n1KhRzJw5k4MOOojevXtz8MEHlzh98VLvbt26sWLFCgDefvtt+vfvT69evbj00kvx+/27Tf/DDz/Qu3dvunfvzgUXXEBeXh6vvvoqH3zwAXfccQejR48udTtPmTKFoUOHcsopp7DffvsxevRoVLXE6UvbPm+++SY9evSgZ8+enH322UyfPp3PPvuMm266iV69erFs2bJS983y5cs56KCD6N69O7fffnupcRpjTEnCTaj3VdU7gCxVfQM4Bjgw/LDqoA0LYdHnkY7CmIrZ8g/88hQEApGOpFbIycnZpcrH+++/T+PGjXn22Wc577zzGD9+PNu2bePiiy8GICsri379+vHXX39xyCGHcM899wBwySWX8MwzzzBnzhweffTRotLna665hkMOOYQ//viDuXPn0rVrVx5++GH22Wcf5s2bxyOPPMKkSZNYunQpM2fOZN68ecyZM4epU6cyZ84cxo8fz7x58/jqq6+YNavkEvxRo0YVJdR5eXl89dVXnHzyyey33378/PPP/P7779x7773897//DXm7LFq0iPfff59ffvmFefPm4fV6eeedd3YZJzc3l/POO4/333+fP//8E5/PxwsvvMBFF13EcccdxyOPPLLbNMX9/vvvPPnkkyxcuJB///2XX375ZbfpS9s+f/31F/fffz8//vgjf/zxB0899RQHH3xw0bTz5s1jn332KXXfXHvttVx++eX8+eeftGzZMuRtY4wxEH4rHwXu/+0i0g1YD7QIc551T36206qHPQ3R1EVrZ8Oc1+CAiyIdScSVVuVjxIgRTJgwgSuvvJI//vijqL/H4+H0008H4KyzzuKkk04iMzOT6dOnc+qpO9v8zsvLA+DHH3/kzTffBJz62o0bN2bbtm27LGvSpElMmjSJ3r17A5CZmcnSpUvJyMjgxBNPJCEhAYDjjjuuxHXo168fmZmZLFmyhEWLFnHggQeSmprK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0g4dOpRbbrmF/v3706lTJ37++WfAScj/85//0K1bN3r06MEzzzwDwJw5czjkkEPo27cvRxxxxG6P/C6Mdfjw4fTo0YNDDz2UVatWMW/ePG6++WY+/fRTevXqRU5OTqnrnpSUxG233UbPnj0ZMGAAGzZsKHH6SZMmcdBBB9GnTx9OPfXUona4Z82axcEHH0zPnj3p378/6enp3Hnnnbz//vv06tWL999/n6ysLC644AL69+9P7969ix75nZOTwxlnnEGXLl048cQTy4zTGGNqq3CflNhZVYueJ6qqC4D680zWZT/C2lr4yHNj6jSFjYtgzutOcv3vT5EOCIDU1FT69+/P119/DTil06eddhoiwgMPPMDs2bOZP38+P/30E/Pnzy+armnTpsydO5czzjhjl/ldddVVzJo1iwULFpCTk8MXX3xRNMzn8zFz5kyefPJJ7rnnHgBefvllVqxYwbx585g/fz6jR4+moKCAq6++mokTJzJnzhwuuOACbrvttt1iv/rqqzn33HOLprvmmmvo1asX9957L6effjrz5s0jPj6+1HXPyspiwIAB/PHHHwwZMoRXXnllt+mzsrK4//77+f7775k7dy79+vXj8ccfJz8/n9NPP52nnnqKP/74g++//57ExMRdpj399NN54IEHGD58ODNnzmTy5MncdNNNZGVl8cILL5CQkMCiRYu45557mDNnTlj70RhjIiHcmxLni8irwNtu92hgfhnj1x0ZG5zSNGNMNVKY8SJExQGNIh1MUbWP448/nvHjxzN27FgAPvjgA15++WV8Ph9paWksXLiQHj16AHD66SXX9Z48eTL/93//R3Z2Nlu3bqVr164ce+yxAJx00kkA9O3blxUrVgDw/fffc9lllxEV5VyWU1NTWbBgAQsWLGDEiBGAU4rdsmXL3Zb166+/8tFHHwFw9tlnc/PNN1dovWNiYhg5cmRRTN99991u4/z2228sXLiQgQMHApCfn89BBx3EkiVLaNmyJQcccAAAjRqVvB8nTZrEZ599xqOPPgpAbm4uq1atYurUqVxzzTUA9OjRo2i7GmNMXRJuQn0+cDlwrds9FQjt7p3aLBCAX58FX16kIzGm/tMATH8aulUsCawOxx9/PNdffz1z584lOzubvn37snz5ch599FFmzZpFSkoK5513Hrm5uUXTJCYm7jaf3NxcrrjiCmbPnk3btm25++67d5kmNjYWAK/Xi8/nKzUeVaVr1678+uuvVbiWu4uOjkZEyoxJVRkxYgTvvffeLv3//PPP3cYtiary4Ycf0rlz5/ADNsaYWiasKh+qmquqT6jqie7rCVXNLX/KWm7hJ04TYMaYmhHwQe4OKIhs/dmkpCSGDRvGBRdcwKhRowDYsWMHiYmJNG7cmA0bNhRVCSlLYfLcrFkzMjMzi+pVl2XEiBG89NJLRcns1q1b6dy5M5s2bSpKqAsKCvjrr792m/bggw9m/PjxALzzzjsVao0jVAMGDOCXX37hn3/+AZxqIn///TedO3cmLS2NWbNmAZCRkYHP5yM5OZmMjIyi6Y844gieeeaZorrkv//+OwBDhgzh3XffBWDBggW7VKcxxpi6IqwSahEZCNwN7BU8L1XdO7ywImjrv87jxY0xNUwhYz0kt4TouHKbuasuo0aN4sQTTyxKUHv27Env3r3Zb7/9aNu2bVGVh7I0adKEiy++mG7durHnnnsWVYcoy0UXXcTff/9Njx49iI6O5uKLL+aqq65i4sSJXHPNNaSnp+Pz+bjuuuvo2rXrLtM+88wznH/++TzyyCM0b96c119/vXIrX4bmzZszbtw4Ro0aRV6e8+vd/fffT6dOnXj//fe5+uqrycnJIT4+nu+//55hw4bx8MMP06tXL8aMGcMdd9zBddddR48ePQgEAnTo0IEvvviCyy+/nPPPP58uXbrQpUsX+vbtW+WxG2NMdZPC0oJKTSyyGLgemAP4C/ur6pbwQ9upX79+Ont2Ddwc6MuHb26FHfWroRJj6oJFna6kS4fWIF5o1BKiYiMdkjG7WbRoEV261J9776tT9ze6F73/89zQqgYZUxuIyBxVrVBj+OHWoU5X1fJ//6wr5r1jybQxkaZ+yEiDRq3AGxPpaIwxxphyhZtQTxaRR4CPgKI7+EJ9UmKtkjYf/v420lEYYwACfthRmFRHRzoaY4wxpkzhJtQHuv+Di8UVGB7mfGtWXib89gJO6MaYiFBFVYtamyDgc0qqk1uBN9xLlTHhC6eKpDGmfgvrU8p9WmLd5suHnx+FnNrzxDZjGqK4vE1syWhK0+S4nUm1v2Bn9Q+PN7IBmgZNVdmyZQtxcXGRDsUYUwuFXewjIscAXYGiq4yq3hvufGtEIAC/POU8tc0YE1Ft1n7JGmBTbHMoTKgLeVZDXGOQcB/uakzlxcXF0aZNm0iHYYyphcJtNu9FIAEYBrwKnALMrIK4qp+6T2izR4sbUytE+7PpsGpC6SM06wTDb7fWP4wxxtQ64Rb3HKyq5wDbVPUe4CCgU/hh1YDf34blP0U6CmNMqDb/DVMfcaqBGGOMMbVIuAl14WPNskWkFVAAtAxzntVv4aew+ItIR2GMqaj1f8K0J51WQIwxxphaItyE+gsRaQI8AswFVgDvhjnP6rXsR5hXu0M0xpRh7Wz49Vmn2pYxxhhTC4Tbysd97tsPReQLIE5V08MPq5qsngUzX4l0FMaYcK2cDlHxcOAlkY7EGGOMCbuEuoiq5tXqZHrDQpj+FGgg0pEYY6rCsh9gzhuRjsIYY4ypuoS6Vtu6HKb+n93MZEx9s+QrmP9BpKMwxhjTwNX/hDpjPUx5CApyyh/XGFP3LPgQFn4W6SiMMcY0YGEl1OI4S0TudLvbiUj/qgmtCmRvhR/vh9zaWxPFGFMF5r0Df0+KdBTGGGMaqHBLqJ/HaXt6lNudATwX5jyrRn6WUzKdtSnSkRDwRLMqqRd+T3SkQzGm/pr9GiyfGukojDHGNEDhPnr8QFXtIyK/A6jqNhGJqYK4wuPLh5/+B9tXRTQMBVYk9+X1zANZuzWBtrEHc3Hyz7TO+DOicRlTPyn89gJ4Y6HdgZEOxhhjTAMSbkJdICJenNwREWkORLYZjYAfpj0Bm5ZENIxNiZ14N38w87ekFPVbnZfAnXlHcEjjnpwSmERC3sYIRmhMPaQBmP40RP0HWvWOdDTGGGMaiHCrfDwNfAy0EJEHgGnAg2FHVVnqllCtmxuxEDLiWvF2/Ghu3XYc87NSShznp/Q9uSHzLH5NPhy/J/IF+sbUKwEf/PyY01SmMcYYUwPCfbDLOyIyBzgUEOAEVV1UJZFVxtw3YcXPEVl0XnRjfogdzkdb90aRcscvUA+vbunB17H7cnHSNNpmzq+BKI1pIPwFTrWvQ++EpvtEOhpjjDH1XLitfLQDsoHPgc+ALLdfzfvrY6dN2hrm88bxW/IIbsi5gA+37hNSMh1sbV4Cd289nDfjzyIrrkU1RWlMA+TLhckPwraVkY7EGGNMPRduHeovcepPCxAHdACWAF3DnG/F/PM9/DG+RhcZEC9/Jx3IuB192LQlLuz5/ZS+J9PlLM5J/YsDsybjDeRXQZTGNHD5mfD93dCyBzTrBE07QmoH8FqLO8YYY6pOuFU+ugd3i0gf4IqwIqqoVTNg1tgaXeTa5O68kT2QZVuSqnS+Beph7JbufB2zL5ckTaNt5h9VOn9jGqSCbFj1m/MC8ERBSntouq+TZDfrCEn265AxxpjKC7eEeheqOldEaq69qvULnDv6tWYaFtmW0J4J/kOYsaV5tS5nXX48d28dwZBG3TmF70jM3VCtyzOmQQn4YMs/zuvvb5x+cY2d0utm+zr/m+4L0eH/8mSMMaZhCCuhFpEbgjo9QB9gXTnTtAXeBPbAqS7ysqo+VeGFb1kGUx9xPhyrWXZsc772DuOr7TVbPXzqjj35VUZzdspfDMi2aiDGVJvcdFg723kBiAcat3GriezrlGI3ag1SsXskjDHGNAzhllAnB7334dSp/rCcaXzAjW5pdjIwR0S+U9XQ27jasQ6mPOzcdFSN8qOT+CV2KO9t64Rfw21hsHIK1MNrW7vzTcy+XJz0C+0y50UkDmMaFA04D4bavsq5RwMgOmFnct3MLcWOTS57PsYYYxqEcOtQ31OJadKANPd9hogsAloDoSXU2Vth8gOQt6Oiiw5ZwBPNH0kDeWN7TzKyasfNS+vy47ln62EMbtSNU60aiDE1ryAb1s93XgAIJO/pJNcte0H7gZGMzhhjTARVKqEWkc9xn45YElU9LsT5tAd6AzNCWnBehpNMZ20OafSKUmB5cj9ezziQdZvjq2UZ4fp5x55Ml9Gck7qQg7In4/Xn1diyA+Il4Ikmyl+9vwwYUzcoZKQ5r+VTIe0P6H+xtSBijDENUGVLqB8Nd8EikoRTPeQ6Vd2tuFlELgEuAWjXrh348pwHNaSvCXfRJdqQuB/v5g1iwZYm1TL/quRXD69v6cY3sftwcfJ09sr4Pbz5eaLJj25MjjeZLG8jMkgknSS2BhLZEkhkky+e9fnxbM13nuoYLQGaxeTRLCqP1KhcmnhyaCy5JEs2SWSTqFnEB7KI82cR7c8iypdVwda5jamDlv8EO9bC4BshITXS0RhjjKlBolpqQXP1LVQkGvgC+FZVHy9v/H79+ursR06BtHlVGkdAoliV1INJ+d2ZkVG9LXdUp4MbbeR0JpGUu36X/j5PLPnRjcmOSiZbkkmXJHYUJsr+eDYUJLC+II4dvup9/LlXAjSNzqdZdB5NvTk09uTRxJNDsmSTTDYJ5BAfyCTOn0WMP5PogkxLwE3dFZ/iJNXNOkY6EmMiqvsbO1vW/fPcPyMYiTEVIyJzVLVfRaYJt5WPjsBDwP44D3YBQFX3LmMaAcYCi0JJpgHI3FSlyXRObFN+j+nHJzs6sWVLbJXNN1Km72jBDDmT4Y3SyAzEsNEXx/r8eLLyo6AW1M7wq4eN+XFszI8DGpc7fpzHT/u4TNrFZNDKm04LtpES2Eaybwtx+VuRGmom0ZhKydnmPEym/8Ww99BIR2OMMaYGhNvKx+vAXcATwDDgfMp/nPlA4GzgTxGZ5/b7r6qW/tzw/MwwwwRFSEvan8n+nkxOb1nhR4TXdn718F1660iHUSVyA14WZzdmcXZjoM0uw7wSoH1cFu1iMmnlTWcP2U6qbqWRbwvxeVvwaPU3o2hMuQI++O0F2LYCep8Dnsi0EmSMMaZmhJtQx6vqDyIiqroSuFtE5gB3ljaBqk6Dmstm86MbsSCuL59kdmHt1oSaWqypJn71sCwnmWU5yUDLXYYJSqvYHDrE7KB11A728KbTNLCVxr6tJORvsna8Tc1b8jVsXw2DrrMm9owxph4LN6HOExEPsFRErgLWAlX7PO5K2py4Lz9rb75Nb0tBlpUONQSKsDYvgbV5CcCeuw1vEZ1Dh7hMWkftoJkngyaSSaPADhL96cT50q3utqkeGxbAt/+FITdBk5p9OJQxxpiaUdlm8/ZU1fXAtUACcA1wH061j3OrLryK8Xnj+TuhD59nd+XvbY0iFYappTYWxLOxIB4o+QbUaAnQMjaHltHZNPdm08ybSRMyaEwGSf4dxPvSiS1Ix6P+mg3c1H2ZG2HS7XDQVdC2f6SjMcYYU8UqW0I9T0QWAO8BS1V1DU796YhIj2/Hb97efJHegeyccAvdTUNVoB5W5SayKjex1HEEpVl0Hi1jctgjKptm3ixSPJk00R0kBzJI8KcTV5BOlD+nBiM3dYIvD35+HLqdDN1PsceYG2NMPVLZ7LM1cBhwBvCgiPyGk1x/qqo1kkkEPNEsT+zFN3ndmZtubb6amqEImwri2FQQB6SUOl6i10er2Bz2jMqiuTebVE8mKWSSrDvc0u7tRBfssComDY7CgomwfaVTWh0dV/4kxhhjar1KJdSq6ge+Bb4VkRjgKJzk+kkR+UFVR1dhjLvIjm3B7Jh+fJK+L+lbqrf9ZGMqK8sfxdLsZJZS+o1oXgmwZ0wuLaOzaRGVTTNPFimSQSMySQ6kk1BYxSRQUIORmxqxZpZTBWTITZC8R6SjMcYYE6aw60eoar6ILAQWAX2BLmFHtRthdXJPfijozs87dr/ZzJi6yK+eoJsoS9ckOp/W0dnsEe1UMUkVp253k8A2UnNWWusldVX6audmxYHXQssekY7GGGNMGCqdUItIW5xS6VFAIk6Vj+NUdXEVxVZkLc25e8uIqp6tMXXC9oIYthfE8BdNdhvmlQA9E7fTIzaNvXUNzfOWE1MQfrvtpobkZ8KUh6D3WbDfMZGOxhhjTCVVtpWP6Tj1qD8ALlbVOVUaVTEFajVNjSmJXz3MzUxlbmYq0BWAjgkZ9IlLo6OsZc+8FcTnb4lskKZsGoC5b8K2lc7TFb3RkY7IGGNMBVW2geZbgfaqelN1J9PGmIpZmp3M+1s7cf+WYVyVeT53cCWfJZ7MkuQBZMS1QiMdoCnZ8p+cR5Znb41oGF6vl169ehW9Hn744QpN3759ezZv3hzy+BMmTKBLly4MGzZsl/4rVqygW7dulZ4+FOPGjWPdunVF3RdddBELFy6s8HzK8vvvv3PhhRcC8M4779CjRw+6d+/OwQcfzB9//FE03gUXXECLFi3KXGdV5ZprrmHfffelR48ezJ07t2jYG2+8QceOHenYsSNvvPFGUf/DDjuMbdu2Vek6GWN2V9mbEqdWdSDGmOqxLj+eT/M7AB0Ap072AQmb6BK1lnb+VTTOWW1ta9cWW/5x6lUPvhGadYxICPHx8cybN6/Gljd27FheeeUVBg0aVOPTjxs3jm7dutGqVSsAXn311UrFUJYHH3yQ22+/HYAOHTrw008/kZKSwtdff80ll1zCjBkzADjvvPO46qqrOOecc0qd19dff83SpUtZunQpM2bM4PLLL2fGjBls3bqVe+65h9mzZyMi9O3bl+OOO46UlBTOPvtsnn/+eW677bYqXzdjzE72CEFjGpjtBTF8l96ap7f05z/bT+HqgmsYG3cOMxsdxsbEzvg91npOROVsc0qq/50S6Uh20b59e+666y769OlD9+7dWbzYuV1my5YtHH744XTt2pWLLroI1ZJ/A3nvvffo3r073bp145ZbbgHg3nvvZdq0aVx44YXcdNNNpS573LhxnHTSSRx55JF07NiRm2++ucTp/X4/N910EwcccAA9evTgpZdeKprH//73P7p3707Pnj259dZbmThxIrNnz2b06NH06tWLnJwchg4dyuzZs0uNFyApKYnbbruNnj17MmDAADZs2AA4JeXdunWjZ8+eDBkyBICMjAzmz59Pz549ATj44INJSXGa2xwwYABr1qwpmu+QIUNITS27CdhPP/2Uc845BxFhwIABbN++nbS0NL799ltGjBhBamoqKSkpjBgxgm+++QaA4447jvfee6/M+RpjwmdPQTGmgcsNeJm+owXTaQH0woPSI3EbPePSaM86muWnEZ+30drMrkkBH/z2AmxbAb3PAU/NlX3k5OTQq1evou4xY8Zw+umnA9CsWTPmzp3L888/z6OPPsqrr77KPffcw6BBg7jzzjv58ssvGTt27G7zXLduHbfccgtz5swhJSWFww8/nE8++YQ777yTH3/8kUcffZR+/fqVGde8efP4/fffiY2NpXPnzlx99dW7Tf/yyy/TuHFjZs2aRV5eHgMHDuTwww9n8eLFfPrpp8yYMYOEhAS2bt1Kamoqzz77bInLLi3eE044gaysLAYMGMADDzzAzTffzCuvvMLtt9/Ovffey7fffkvr1q3Zvn07ALNnzy61CsfYsWM56qijKrBnYO3atbRt27aou02bNqxdu7bU/gApKSnk5eWxZcsWmjZtWqHlGWNCV9mbEm8oa7iqPl65cIwxkRZAmJeVyrysnTc6Jnp9dE3Yzr4xW2jHBlr41pOcl2ZtZFe3JV/D9tUw6DqILb1N86pUVpWPk046CYC+ffvy0UcfATB16tSi98ccc0xRCWywWbNmMXToUJo3bw7A6NGjmTp1KieccELIcR166KE0btwYgP3335+VK1fukkQCTJo0ifnz5zNx4kQA0tPTWbp0Kd9//z3nn38+CQlOE5XllQSXFW9MTAwjR44s2g7fffcdAAMHDuS8887jtNNOK9pOaWlpRfMINnnyZMaOHcu0adNCXv9wtGjRgnXr1llCbUw1qmwJdeGVvTNwAPCZ230sMDPcoIwxtUuWP4qZGc2YSTOc0x48KJ0S0ukSu429PBvZM7CeJnnriPZlRTbY+mbDAqde9YGXQbPO4I3cD4uxsbGAc+Oiz+eLyLLLWr6q8swzz3DEEUfs0v/bb7+tsjiio6MR97HxwXG8+OKLzJgxgy+//JK+ffsyZ84c4uPjyc3N3WX6+fPnc9FFF/H1119XOMFt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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#collapse\n", "#this plots the info in a stack\n", "fig = plt.figure(figsize=(12, 10))\n", "ax = [fig.add_subplot(311, axisbelow=True),\n", " fig.add_subplot(312, axisbelow=True)]\n", "\n", "plt.xticks(np.arange(min(x), max(x)+1, 1.0))\n", "\n", "max_infected_means=max(dataframe_means[\"mean_per_day_infected\"][0:days])\n", "print(max_infected_means)\n", "ax[0].stackplot(dataframe_means[\"Day\"][0:days],\n", " dataframe_means[\"mean_per_day_infected\"][0:days],\n", " dataframe_means[\"mean_of_days_susceptible\"][0:days],\n", " dataframe_means[\"mean_of_days_removed\"][0:days],\n", " colors=pal, alpha=0.7)\n", "\n", "ax[0].set_title(f'Expected Value of Susceptible, Infected,and Recoveredwith with {kids} kids, in {days} days, p={p}, replications= {replications}')\n", "ax[0].set_xlabel('Days')\n", "ax[0].set_ylabel('Expected Value per Status')\n", "ax[0].legend([\n", " 'Infected', \n", " 'Susceptible', \n", " 'Recovered'], \n", " loc='center')\n", "ax[0].set_xlim(1, days-2)\n", "\n", "ax[0].set_ylim(0, kids)\n", "\n", "#this plots a line with the max infected\n", "ax[0].annotate(\"Max infected(%.2f)\"%(max_infected_means),\n", " (0, max_infected_means),(0+3, max_infected_means+3), \n", " #(max_infected, max_infected),\n", " arrowprops=dict(arrowstyle='->'))\n", "ax[0].plot(np.array([0, days-1]), [max_infected_means, max_infected_means], lw=3, label='Max Infected Means')\n", "\n", "\n", "#this plots a line with the last day infected\n", "ax[0].annotate(\"End of Infections(%.2f)\"%(last_infected_mean),\n", " (last_infected_mean, 0),(last_infected_mean-6, 0+5), \n", " #(max_infected, max_infected),\n", " arrowprops=dict(arrowstyle='->'))\n", "ax[0].annotate(\"End of Infections(%.2f)\"%(last_infected_mean),\n", " (last_infected_mean, 0),(last_infected_mean-6, 0+5), \n", " #(max_infected, max_infected),\n", " arrowprops=dict(arrowstyle='->'))\n", "ax[0].plot(np.array([last_infected_mean,last_infected_mean]), [0, kids], lw=3, label='Last Infected Means')\n", "\n", "\n", "\n", "#############################################################################################\n", "#This plot is for the infected on the sencond part \n", "ax[1].set_xlim(1, days-2)\n", "ax[1].set_ylim(0, max_infected_means*3)\n", "\n", "ax[1].stackplot(x,\n", " dataframe_means[\"mean_per_day_infected\"][0:days-1],\n", " dataframe_variance[\"Variance per day Infected\"][0:days-1],\n", " colors=pal, alpha=0.7)\n", "ax[1].legend([\n", " 'Expected Value of Infected', \n", " 'Variance of Infected'], \n", " loc='center')\n", "#this plots a vertical line of end of infection in plot 2\n", "ax[1].annotate(\"End of Infections(%.2f)\"%(last_infected_mean),\n", " (last_infected_mean, 0),(last_infected_mean-6, 0+1), \n", " #(max_infected, max_infected),\n", " arrowprops=dict(arrowstyle='->'))\n", "ax[1].plot(np.array([last_infected_mean,last_infected_mean]), [0, kids], lw=3, label='Last Infected Means')\n", "\n", "#sets x title\n", "ax[1].set_xlabel('Days')\n", "ax[1].set_ylabel('Expected Value and Variance of Infected')\n" ] } ], "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.7.10" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": true } }, "nbformat": 4, "nbformat_minor": 4 }