Skip to content

Instantly share code, notes, and snippets.

@fonnesbeck
Created October 30, 2017 15:43
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fonnesbeck/4edc2ab7edf80a9e5fa30ed7a5845b44 to your computer and use it in GitHub Desktop.
Save fonnesbeck/4edc2ab7edf80a9e5fa30ed7a5845b44 to your computer and use it in GitHub Desktop.
Outpatient AGE Rates.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "%matplotlib inline\nimport numpy as np\nimport pandas as pd\nimport seaborn as sns\nimport matplotlib.pylab as plt\nimport itertools\nsns.set_context('notebook')\n\nseed_numbers = 20090425, 19700903\n\nfrom datetime import timedelta, datetime",
"execution_count": 1,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# Data import and cleanup"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "# rotavirus_data = pd.read_csv('data/AGE Year 2-4 with Final Rota.csv', low_memory=False)\ncases_file = 'data/AGE Cases and Healthy Controls Merged with Lab Results Year 2 to 4 v05.23.2017.csv'\nrotavirus_data = pd.read_csv(cases_file, low_memory=False, parse_dates=['scrdate', 'dob'])\nrotavirus_data.index.is_unique",
"execution_count": 2,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 2,
"data": {
"text/plain": "True"
},
"metadata": {}
}
]
},
{
"metadata": {
"scrolled": true,
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data.head()",
"execution_count": 3,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 3,
"data": {
"text/plain": " caseid case settingnew rota_od vaxstrain rota_genotype noro_type \\\n0 EN1C0001 1 3 0.088 NaN NEG NaN \n1 EN1C0002 1 3 NaN NaN NaN NaN \n2 EN1C0003 1 3 NaN NaN NaN NaN \n3 EN1C0004 1 3 NaN NaN NaN NaN \n4 EN1C0006 1 3 NaN NaN NaN NaN \n\n noroseq_gii_c noroseq_gii_d noroseq_gi_c ... ddxdioten1 \\\n0 NaN NaN NaN ... NaN \n1 NaN NaN NaN ... NaN \n2 NaN NaN NaN ... NaN \n3 NaN NaN NaN ... NaN \n4 NaN NaN NaN ... NaN \n\n ddxdioten2 ddxdioten3 ddxdioten4 ddxdioten5 ddxdioten6 ddxdioten7 \\\n0 NaN NaN NaN NaN NaN NaN \n1 NaN NaN NaN NaN NaN NaN \n2 NaN NaN NaN NaN NaN NaN \n3 NaN NaN NaN NaN NaN NaN \n4 NaN NaN NaN NaN NaN NaN \n\n ddxdioten8 ddxdioten9 ddxdioten10 \n0 NaN NaN NaN \n1 NaN NaN NaN \n2 NaN NaN NaN \n3 NaN NaN NaN \n4 NaN NaN NaN \n\n[5 rows x 698 columns]",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>caseid</th>\n <th>case</th>\n <th>settingnew</th>\n <th>rota_od</th>\n <th>vaxstrain</th>\n <th>rota_genotype</th>\n <th>noro_type</th>\n <th>noroseq_gii_c</th>\n <th>noroseq_gii_d</th>\n <th>noroseq_gi_c</th>\n <th>...</th>\n <th>ddxdioten1</th>\n <th>ddxdioten2</th>\n <th>ddxdioten3</th>\n <th>ddxdioten4</th>\n <th>ddxdioten5</th>\n <th>ddxdioten6</th>\n <th>ddxdioten7</th>\n <th>ddxdioten8</th>\n <th>ddxdioten9</th>\n <th>ddxdioten10</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>EN1C0001</td>\n <td>1</td>\n <td>3</td>\n <td>0.088</td>\n <td>NaN</td>\n <td>NEG</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>1</th>\n <td>EN1C0002</td>\n <td>1</td>\n <td>3</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2</th>\n <td>EN1C0003</td>\n <td>1</td>\n <td>3</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>3</th>\n <td>EN1C0004</td>\n <td>1</td>\n <td>3</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>4</th>\n <td>EN1C0006</td>\n <td>1</td>\n <td>3</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n </tbody>\n</table>\n<p>5 rows × 698 columns</p>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data.query('year==3').sort_values('scrdate').scrdate",
"execution_count": 4,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 4,
"data": {
"text/plain": "2046 2013-12-01\n2048 2013-12-01\n2049 2013-12-01\n2050 2013-12-01\n2051 2013-12-01\n2052 2013-12-01\n2054 2013-12-01\n2047 2013-12-01\n2053 2013-12-02\n460 2013-12-02\n4264 2013-12-02\n4263 2013-12-02\n4262 2013-12-02\n4261 2013-12-02\n4260 2013-12-02\n4257 2013-12-02\n4256 2013-12-02\n4255 2013-12-02\n2055 2013-12-02\n4254 2013-12-02\n462 2013-12-03\n2058 2013-12-04\n461 2013-12-04\n2056 2013-12-04\n2057 2013-12-04\n2059 2013-12-04\n463 2013-12-05\n464 2013-12-05\n465 2013-12-05\n2060 2013-12-05\n ... \n882 2014-11-24\n881 2014-11-24\n880 2014-11-24\n878 2014-11-24\n4713 2014-11-24\n885 2014-11-24\n2829 2014-11-25\n2827 2014-11-25\n2828 2014-11-25\n2830 2014-11-25\n5220 2014-11-25\n888 2014-11-25\n889 2014-11-25\n890 2014-11-25\n892 2014-11-25\n4715 2014-11-25\n891 2014-11-26\n5217 2014-11-26\n2837 2014-11-30\n2842 2014-11-30\n2841 2014-11-30\n2840 2014-11-30\n2831 2014-11-30\n2832 2014-11-30\n2833 2014-11-30\n2834 2014-11-30\n2835 2014-11-30\n2836 2014-11-30\n2838 2014-11-30\n2839 2014-11-30\nName: scrdate, Length: 1740, dtype: datetime64[ns]"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Import eligibles"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "eligible_file = 'data/AGE Outpatient Eligibility Data Year 2-4.csv'\neligible_data = pd.read_csv(eligible_file, low_memory=False, index_col=0, parse_dates=['scrdate'])\neligible_data.index.is_unique",
"execution_count": 5,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 5,
"data": {
"text/plain": "True"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "eligible_data.head()",
"execution_count": 6,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 6,
"data": {
"text/plain": " scrdate admitdate dob agedays agemonths ageyears \\\ncaseid \nEN1C0001 2012-12-03 12/3/12 6/11/06 2366.08 77.74 6.478 \nEN1C0002 2012-12-03 12/3/12 8/20/05 2661.45 87.44 7.287 \nEN1C0003 2012-12-03 12/3/12 8/14/07 1936.96 63.64 5.303 \nEN1C0004 2012-12-04 12/4/12 11/6/09 1124.16 36.93 3.078 \nEN1C0006 2012-12-04 12/4/12 7/8/07 1974.40 64.87 5.406 \n\n insurance sex race race2_8 adxd1 adxd2 transfer noninfect \\\ncaseid \nEN1C0001 1 1 6 1.0 6.0 7.0 0 0 \nEN1C0002 1 1 2 NaN 6.0 7.0 0 0 \nEN1C0003 1 2 2 NaN 1.0 4.0 0 0 \nEN1C0004 1 2 6 1.0 7.0 NaN 0 0 \nEN1C0006 1 2 2 NaN 7.0 1.0 0 0 \n\n immcomp prevenroll elig \ncaseid \nEN1C0001 0 0 1 \nEN1C0002 0 0 1 \nEN1C0003 0 0 1 \nEN1C0004 0 0 1 \nEN1C0006 0 0 1 ",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>scrdate</th>\n <th>admitdate</th>\n <th>dob</th>\n <th>agedays</th>\n <th>agemonths</th>\n <th>ageyears</th>\n <th>insurance</th>\n <th>sex</th>\n <th>race</th>\n <th>race2_8</th>\n <th>adxd1</th>\n <th>adxd2</th>\n <th>transfer</th>\n <th>noninfect</th>\n <th>immcomp</th>\n <th>prevenroll</th>\n <th>elig</th>\n </tr>\n <tr>\n <th>caseid</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>EN1C0001</th>\n <td>2012-12-03</td>\n <td>12/3/12</td>\n <td>6/11/06</td>\n <td>2366.08</td>\n <td>77.74</td>\n <td>6.478</td>\n <td>1</td>\n <td>1</td>\n <td>6</td>\n <td>1.0</td>\n <td>6.0</td>\n <td>7.0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n </tr>\n <tr>\n <th>EN1C0002</th>\n <td>2012-12-03</td>\n <td>12/3/12</td>\n <td>8/20/05</td>\n <td>2661.45</td>\n <td>87.44</td>\n <td>7.287</td>\n <td>1</td>\n <td>1</td>\n <td>2</td>\n <td>NaN</td>\n <td>6.0</td>\n <td>7.0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n </tr>\n <tr>\n <th>EN1C0003</th>\n <td>2012-12-03</td>\n <td>12/3/12</td>\n <td>8/14/07</td>\n <td>1936.96</td>\n <td>63.64</td>\n <td>5.303</td>\n <td>1</td>\n <td>2</td>\n <td>2</td>\n <td>NaN</td>\n <td>1.0</td>\n <td>4.0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n </tr>\n <tr>\n <th>EN1C0004</th>\n <td>2012-12-04</td>\n <td>12/4/12</td>\n <td>11/6/09</td>\n <td>1124.16</td>\n <td>36.93</td>\n <td>3.078</td>\n <td>1</td>\n <td>2</td>\n <td>6</td>\n <td>1.0</td>\n <td>7.0</td>\n <td>NaN</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n </tr>\n <tr>\n <th>EN1C0006</th>\n <td>2012-12-04</td>\n <td>12/4/12</td>\n <td>7/8/07</td>\n <td>1974.40</td>\n <td>64.87</td>\n <td>5.406</td>\n <td>1</td>\n <td>2</td>\n <td>2</td>\n <td>NaN</td>\n <td>7.0</td>\n <td>1.0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "eligible_data.scrdate.min(), eligible_data.scrdate.max()",
"execution_count": 7,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 7,
"data": {
"text/plain": "(Timestamp('2012-12-03 00:00:00'), Timestamp('2015-11-30 00:00:00'))"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "eligible_data['year'] = 1\neligible_data.loc[eligible_data.scrdate < datetime(2013,12,1), 'year'] = 0\neligible_data.loc[eligible_data.scrdate >= datetime(2014,12,1), 'year'] = 2",
"execution_count": 8,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "eligible_data['under_5'] = ((eligible_data.agemonths) < 60).astype(int)\neligible_data['under_2'] = ((eligible_data.agemonths) < 24).astype(int)\neligible_data['under_1'] = ((eligible_data.agemonths) < 12).astype(int)",
"execution_count": 9,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "eligible_data['age_group'] = 3\neligible_data.loc[eligible_data.under_5==1, 'age_group'] = 2\neligible_data.loc[eligible_data.under_2==1, 'age_group'] = 1\neligible_data.loc[eligible_data.under_1==1, 'age_group'] = 0",
"execution_count": 10,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "eligible_counts = eligible_data.groupby(['age_group', 'year']).size()\neligible_counts.name = 'eligible'\neligible_counts",
"execution_count": 11,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 11,
"data": {
"text/plain": "age_group year\n0 0 149\n 1 150\n 2 153\n1 0 149\n 1 129\n 2 139\n2 0 204\n 1 187\n 2 192\n3 0 263\n 1 211\n 2 182\nName: eligible, dtype: int64"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "eligible_data.shape",
"execution_count": 12,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 12,
"data": {
"text/plain": "(2108, 22)"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Rename columns and recode data"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data.race.value_counts()",
"execution_count": 13,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 13,
"data": {
"text/plain": "1 2766\n2 1968\n6 411\n4 105\n7 10\n5 3\n3 1\n8 1\nName: race, dtype: int64"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data['white'] = rotavirus_data['race'] == 1\nrotavirus_data['black'] = rotavirus_data['race'] == 2",
"execution_count": 14,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data['astro'].value_counts().index",
"execution_count": 15,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 15,
"data": {
"text/plain": "Float64Index([0.0, 1.0], dtype='float64')"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data=rotavirus_data.rename(columns={'rotacdc':'rotavirus',\n 'sapo':'sapovirus',\n 'astro':'astrovirus',\n 'noro':'norovirus'})",
"execution_count": 16,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data.rotavirus.value_counts()",
"execution_count": 17,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 17,
"data": {
"text/plain": "0.0 3722\n1.0 290\nName: rotavirus, dtype: int64"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data.rotavu.value_counts()",
"execution_count": 18,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 18,
"data": {
"text/plain": "0.0 3574\n1.0 441\nName: rotavu, dtype: int64"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "virus_cols = ['rotavirus','sapovirus','astrovirus','norovirus']",
"execution_count": 19,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Proportion of test results missing"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data[virus_cols].isnull().mean()",
"execution_count": 20,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 20,
"data": {
"text/plain": "rotavirus 0.237987\nsapovirus 0.237417\nastrovirus 0.237417\nnorovirus 0.237417\ndtype: float64"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "astro_data = rotavirus_data[rotavirus_data.astrovirus==1].dropna(subset=['astro_ct'])\nastro_data.shape",
"execution_count": 21,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 21,
"data": {
"text/plain": "(159, 700)"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "noro_data = rotavirus_data[rotavirus_data.norovirus==1].dropna(subset=['noro_ct'])\nnoro_data.shape",
"execution_count": 22,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 22,
"data": {
"text/plain": "(729, 700)"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "noro_data['coinfect'] = noro_data[['rotavirus', 'sapovirus', 'astrovirus']].sum(1)",
"execution_count": 23,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "astro_data['coinfect'] = astro_data[['rotavirus', 'sapovirus', 'norovirus']].sum(1)",
"execution_count": 24,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "with_coinf = noro_data.noro_ct[noro_data.coinfect==1].astype(float)\nno_coinf = noro_data.noro_ct[(noro_data.coinfect==0)].astype(float)\n\n# with_coinf = astro_data.astro_ct[astro_data.coinfect==1].astype(float)\n# no_coinf = astro_data.astro_ct[(astro_data.coinfect==0)].astype(float)",
"execution_count": 25,
"outputs": []
},
{
"metadata": {
"scrolled": true,
"trusted": true
},
"cell_type": "code",
"source": "from scipy.stats import ranksums\n\nranksums(with_coinf, no_coinf)",
"execution_count": 26,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 26,
"data": {
"text/plain": "RanksumsResult(statistic=3.6398985691965766, pvalue=0.00027274545863325173)"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data.sapo_ct.dropna().astype(float).hist()",
"execution_count": 27,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 27,
"data": {
"text/plain": "<matplotlib.axes._subplots.AxesSubplot at 0x11d60c668>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x111465eb8>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD/CAYAAAAKVJb/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADtJJREFUeJzt3VGMXPV1x/HviYESNam8LiQyMe2SYrUgVByxpVj0gZqk\ncmOU3UpQBaWRK7lSK4XKlZI2Ji9eqkQ1qhrih6hqG1j2IQ0gAqwFTStkoLSSQ2IHkkDdyimxEAXZ\namOrRJWoTE4f5i7ZOuudmZ0Zz8zZ70da7b13/rtzjv/e3975z8zdyEwkSbW8Y9gFSJL6z3CXpIIM\nd0kqyHCXpIIMd0kqyHCXpIIMd0kqyHCXpIIMd0kq6IJh3fEll1ySk5OTw7r7n3D69GnWr18/7DL6\nolIvUKsfexlN49TLkSNH/jMzL207MDOH8nHdddflKHnssceGXULfVOols1Y/9jKaxqkX4HB2kLEu\ny0hSQYa7JBVkuEtSQYa7JBVkuEtSQYa7JBVkuEtSQYa7JBU0tHeoShotk3ue6Gr8/q3df81yju/b\n0fP30E/yzF2SCjLcJakgw12SCnLNXW31Y111NdbiWuyw/q1Vj2fuklSQ4S5JBRnuklSQ4S5JBXX0\nhGpEHAfeAN4CzmTmVERsAB4EJoHjwG9n5qnBlClJ6kY3Z+6/nplbMnOq2d8DHMzMzcDBZl+SNAJ6\nWZaZBuab7XlgpvdyJEn9EK2/t9pmUMT3gVNAAn+VmX8dEaczc/2SMacyc6LN95kF9gJMTEwwNzfX\nS+2StObMzMwcWbKCck6dhvtlmflaRLwHeBL4Q+BAt+G+1NTUVB4+fLjT4QO3sLDA9PT0sMvoi373\nMuw3Ma2luRmnNzHt33qG3Yd6fx/kKLxZbZz+j0VER+He0bJMZr7WfD4JPApcD5yIiI3NnW0ETq6+\nXElSP7UN94j46Yh49+I28BvAi8ABYGczbCewMKgiJUnd6eQx1XuBRyNicfzfZubfR8Q3gYciYhfw\nCnDb4MqUJHWjbbhn5svAtcsc/y/g5kEUJUnqje9QlaSCDHdJKshwl6SCDHdJKshwl6SCDHdJKshw\nl6SCDHdJKshwl6SCDHdJKshwl6SCDHdJKshwl6SCDHdJKshwl6SCDHdJKshwl6SCDHdJKshwl6SC\nDHdJKshwl6SCDHdJKshwl6SCDHdJKshwl6SCDHdJKshwl6SCDHdJKshwl6SCLhh2AerM5J4nOh67\nf2t34yXV0/GZe0Ssi4jnI+LxZv+KiHguIo5FxIMRcdHgypQkdaObZZndwNEl+3cD92TmZuAUsKuf\nhUmSVq+jcI+ITcAO4EvNfgDbgIebIfPAzCAKlCR1LzKz/aCIh4E/A94NfAr4XeDrmXllc/vlwNcy\n85o232cW2AswMTHB3NxcL7VL0pozMzNzJDOn2o1r+4RqRNwCnMzMIxFx0+LhZYa2/S2RmbPALMDU\n1FROT0+3+5LzZmFhgVGq52zdPaF6ht2Hxv+58uP7dgDDmZtBPSFdZW6gf70szvMwjfrP/2p0MjM3\nAh+JiA8DFwM/A3wBWB8RF2TmGWAT8NrgypQkdaPtmntm3pmZmzJzEvgo8FRmfgx4Gri1GbYTWBhY\nlZKkrvTymOrTwAMR8VngeeDe/pQkaS0Z1nsyRmE5aJC6CvfMfAZ4ptl+Gbi+/yVJknrl5QckqSDD\nXZIKqvGaLJW0uBbrtXKk7nnmLkkFGe6SVJDhLkkFGe6SVJDhLkkFGe6SVJDhLkkFGe6SVJDhLkkF\nGe6SVJDhLkkFGe6SVJDhLkkFGe6SVJDhLkkFGe6SVJDhLkkFGe6SVJDhLkkFGe6SVJDhLkkFGe6S\nVJDhLkkFGe6SVJDhLkkFGe6SVJDhLkkFtQ33iLg4Ir4REd+OiJci4q7m+BUR8VxEHIuIByPiosGX\nK0nqRCdn7m8C2zLzWmALsD0ibgDuBu7JzM3AKWDX4MqUJHWjbbhnyw+b3QubjwS2AQ83x+eBmYFU\nKEnqWmRm+0ER64AjwJXAF4E/B76emVc2t18OfC0zr2nzfWaBvQATExPMzc31VLwkrTUzMzNHMnOq\n3bgLOvlmmfkWsCUi1gOPAlctN6yD7zMLzAJMTU3l9PR0J3d/XiwsLDBK9Zxtcs8THY/dv/UMuw91\nNLVjoVI/9jI6ju/b8fb2qP/8r0ZXr5bJzNPAM8ANwPqIWJzZTcBr/S1NkrRanbxa5tLmjJ2IeCfw\nQeAo8DRwazNsJ7AwqCIlSd3p5DHVRmC+WXd/B/BQZj4eEf8CPBARnwWeB+4dYJ2SpC60DffM/A7w\ngWWOvwxcP4iiJEm98R2qklSQ4S5JBRnuklSQ4S5JBRnuklSQ4S5JBRnuklSQ4S5JBRnuklSQ4S5J\nBRnuklSQ4S5JBRnuklSQ4S5JBRnuklSQ4S5JBRnuklSQ4S5JBXXyN1S1xOSeJ4ZdgiS15Zm7JBVk\n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\nAAAAAElFTkSuQmCC\n"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Calculate age, and compare to given age."
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data['age_months'] = (rotavirus_data['scrdate']\n - rotavirus_data['dob'] + timedelta(1)).astype('timedelta64[M]') ",
"execution_count": 28,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data.age_months.hist();",
"execution_count": 29,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x11d3806a0>",
"image/png": "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\nTkSuQmCC\n"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Group into ages under 5 and 5 or over"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data['under_5'] = ((rotavirus_data.age_months) < 60).astype(int)",
"execution_count": 30,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data['under_2'] = ((rotavirus_data.age_months) < 24).astype(int)",
"execution_count": 31,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data['under_1'] = ((rotavirus_data.age_months) < 12).astype(int)",
"execution_count": 32,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data['age_group'] = 3\nrotavirus_data.loc[rotavirus_data.under_5==1, 'age_group'] = 2\nrotavirus_data.loc[rotavirus_data.under_2==1, 'age_group'] = 1\nrotavirus_data.loc[rotavirus_data.under_1==1, 'age_group'] = 0",
"execution_count": 33,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data.age_group.value_counts()",
"execution_count": 34,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 34,
"data": {
"text/plain": "3 1459\n0 1365\n2 1344\n1 1097\nName: age_group, dtype: int64"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data.year.value_counts()",
"execution_count": 35,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 35,
"data": {
"text/plain": "2 1989\n3 1740\n4 1536\nName: year, dtype: int64"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Calculate natural year"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data['year'] = rotavirus_data.year - 2",
"execution_count": 36,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Rename setting variable"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "assert not rotavirus_data.settingnew.isnull().sum()",
"execution_count": 37,
"outputs": []
},
{
"metadata": {
"scrolled": true,
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data['setting'] = rotavirus_data.settingnew - 1",
"execution_count": 38,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "# Indices to each value\nINPATIENT, ED, OUTPATIENT, HC = 0, 1, 2, 3",
"execution_count": 39,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Recode sex and stool"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "assert not rotavirus_data['specimencol'].isnull().sum()",
"execution_count": 40,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data['male'] = rotavirus_data['sex']==1\nrotavirus_data['stool_collected'] = rotavirus_data['specimencol']==1",
"execution_count": 41,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Recode insurance"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data.insurance.value_counts()",
"execution_count": 42,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 42,
"data": {
"text/plain": "1 4599\n2 500\n3 84\n8 44\n4 38\nName: insurance, dtype: int64"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data['public_ins'] = rotavirus_data.insurance.isin({1, 3})\nrotavirus_data['private_ins'] = rotavirus_data.insurance.isin({2, 3})\nrotavirus_data.loc[rotavirus_data.insurance==8, ['public_ins', 'private_ins']] = np.nan",
"execution_count": 43,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "# Drop extraneous columns\nrotavirus_data = rotavirus_data.drop(['intvwdate', 'dob', 'provider', 'coldat', 'tdat', \n 'insurance', 'sex', 'hispcr', 'mdegree_7', 'rvacver_7',\n 'rvacver_7r', 'race', 'race2_8'], axis=1)",
"execution_count": 44,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Summary of missing values"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data.isnull().sum()",
"execution_count": 45,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 45,
"data": {
"text/plain": "caseid 0\ncase 0\nsettingnew 0\nrota_od 5085\nvaxstrain 5264\nrota_genotype 4826\nnoro_type 4535\nnoroseq_gii_c 4772\nnoroseq_gii_d 4772\nnoroseq_gi_c 5022\nnoroseq_gi_d 5037\nyear 0\nrotavirus 1253\nrotavu 1250\nsapovirus 1250\nsapo_ct 4917\nastrovirus 1250\nastro_ct 5106\nnorovirus 1250\nnoro_ct 4536\nstudysite 0\nhospital 0\nabiniscr 0\ndeiniscr 0\nscrdate 0\nadmitdate 0\nadmittime 13\nagedays 0\nagemonths 0\nageyears 0\n ... \nddxdcten3 5235\nddxdcten4 5254\nddxdcten5 5259\nddxdcten6 5263\nddxdcten7 5264\nddxdcten8 5264\nddxdcten9 5265\nddxdcten10 5265\nddxdioten1 5258\nddxdioten2 5259\nddxdioten3 5261\nddxdioten4 5261\nddxdioten5 5263\nddxdioten6 5263\nddxdioten7 5263\nddxdioten8 5264\nddxdioten9 5264\nddxdioten10 5264\nwhite 0\nblack 0\nage_months 0\nunder_5 0\nunder_2 0\nunder_1 0\nage_group 0\nsetting 0\nmale 0\nstool_collected 0\npublic_ins 44\nprivate_ins 44\nLength: 697, dtype: int64"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Aggregate data by age group and setting"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_summary = (rotavirus_data.drop('scrdate', axis=1)\n .groupby(['age_group', 'year', 'setting', 'black'])['caseid'].count()\n .reset_index()\n .rename(columns={'caseid':'cases'}))\n\nrotavirus_summary.head()",
"execution_count": 46,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 46,
"data": {
"text/plain": " age_group year setting black cases\n0 0 0 0 False 25\n1 0 0 0 True 10\n2 0 0 1 False 94\n3 0 0 1 True 72\n4 0 0 2 False 56",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>age_group</th>\n <th>year</th>\n <th>setting</th>\n <th>black</th>\n <th>cases</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>False</td>\n <td>25</td>\n </tr>\n <tr>\n <th>1</th>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>True</td>\n <td>10</td>\n </tr>\n <tr>\n <th>2</th>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>False</td>\n <td>94</td>\n </tr>\n <tr>\n <th>3</th>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>True</td>\n <td>72</td>\n </tr>\n <tr>\n <th>4</th>\n <td>0</td>\n <td>0</td>\n <td>2</td>\n <td>False</td>\n <td>56</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Enrollment days/week for inpatient, outpatient, ED"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "monitoring_days = 7, 4, 4\n\n# Only 5.5 days of intake on outpatient\nmonitoring_rate = np.array(monitoring_days)/np.array([7, 7, 5.5])\nmonitoring_rate",
"execution_count": 47,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 47,
"data": {
"text/plain": "array([ 1. , 0.57142857, 0.72727273])"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# Outpatient AGE Model"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "from pymc3 import Model, Deterministic, sample, NUTS, find_MAP, Potential, Metropolis\nfrom pymc3 import Binomial, Beta, Poisson, Normal, DiscreteUniform, Uniform, Flat, Gamma\nfrom pymc3 import traceplot, forestplot, summary, df_summary, energyplot\n\nimport theano.tensor as tt",
"execution_count": 155,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "iterations = 1000\ntune = 1000",
"execution_count": 49,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "label_map = {'age_group':{0:'<1', 1:'1', 2:'2-4', 3:'5+'},\n 'year':{0:'2012/13', 1:'2013/14', 2:'2014/15'},\n 'black':{0:'white', 1:'black'},\n 'setting':{0:'inpatient', 1:'ED', 2:'outpatient'}}",
"execution_count": 50,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Rate factor for population "
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rate_factor = 1000",
"execution_count": 51,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "from pymc3 import hpd\ndef _hpd_df(x, alpha):\n cnames = ['hpd_{0:g}'.format(100 * alpha/2),\n 'hpd_{0:g}'.format(100 * (1 - alpha/2))]\n return pd.DataFrame(hpd(x, alpha), columns=cnames)",
"execution_count": 52,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "def generate_table(trace, labels, index, columns, varnames=['λ']):\n rate_df_index = pd.MultiIndex.from_tuples(labels.values.tolist(), \n names=labels.columns)\n rate_df = (df_summary(trace, varnames=varnames) * rate_factor)[['mean', 'hpd_2.5', 'hpd_97.5']]\n rate_df.index = rate_df_index\n pivot_all = pd.pivot_table(rate_df\n .reset_index(), \n index=index, columns=columns)\n value_iterator = zip(pivot_all['mean'].values.flatten(), \n pivot_all['hpd_2.5'].values.flatten(), \n pivot_all['hpd_97.5'].values.flatten())\n rate_strings = np.reshape(['{0:.2f} ({1:.2f}, {2:.2f})'.format(*vals) for vals in value_iterator], \n pivot_all['mean'].shape)\n \n return pd.DataFrame(rate_strings, index=pivot_all['mean'].index, columns=pivot_all['mean'].columns)",
"execution_count": 53,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "import redcap\nimport getpass\n\nlocal_auth = True\n\napi_url = 'https://redcap.vanderbilt.edu/api/'\n\nif local_auth:\n api_key = open(\"/Users/fonnescj/Dropbox/Collaborations/Halasa/Tokens/outpatient_token.txt\").read()\n\nelse:\n api_key = getpass.getpass()",
"execution_count": 54,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_project = redcap.Project(api_url, api_key)\noutpatients = outpatient_project.export_records(format='df')",
"execution_count": 55,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatients.groupby('year').year.count()",
"execution_count": 56,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 56,
"data": {
"text/plain": "year\n2012 15969\n2015 17562\nName: year, dtype: int64"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatients.shape",
"execution_count": 57,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 57,
"data": {
"text/plain": "(33531, 15)"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatients[['ageinjan', 'ageinnov']].hist(bins=20)",
"execution_count": 58,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 58,
"data": {
"text/plain": "array([[<matplotlib.axes._subplots.AxesSubplot object at 0x126a23240>,\n <matplotlib.axes._subplots.AxesSubplot object at 0x11dcea2e8>]], dtype=object)"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x1256504e0>",
"image/png": "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\nXFbc13puwyXdekrrA/2Q9/U4760VPteTmZlluVCYmVmWC4WZmWW5UJiZWZYLhZmZZblQmJlZlguF\nmZlluVCYmVmWC4WZmWW5UJiZWZYLhZmZZblQmJlZlguFmZlluVCYmVmWC4WZmWW5UJiZWZYLhZmZ\nZU1bKCRtknQgXf5x6rw/lBSSTkzTknSdpDFJj0k6s6btakl70m11TfwsSY+nZa6TpE4NzqxVznuz\nI5rZotgMrJgalLQY+EfA8zXhiyguLL8UuAK4IbU9nuKaw+dQXP5xvaShtMwNqe3kcm96LrMe2Izz\n3gxoolBExH3AwTqzrgX+CIiaWAW4KQr3AwsknQJcCOyMiIMRcQjYCaxI846LiF3pIvU3ASvbG5JZ\n+5z3Zke09B2FpI8CP4yI706ZtRDYWzM9nmK5+HiduFnpOO9tUM2f6QKSjgE+AyyvN7tOLFqIN9OP\nUYrNeoaGhqhWq3XbbVw2eT/xhnij9nNZP45pql6NsQx532zOw5vzfVI/5Ug/jaWRsoxxxoUC+AVg\nCfDd9P3bIuA7ks6m+GS0uKbtImBfip83JX5vii+q035aETEKjAKMjIxEpVKp22543Q42Lptg7a43\nDvW5DZc08zRzRrVapdFr0C96PMae532zOV+tVt+U75P6Je+d77NrxrueIuLxiDgpIoYjYpgi6c+M\niB8B24HL01Eg5wIvRcR+4A5guaSh9GXecuCONO9lSeemoz4uB8pRQs1qOO9tkDVzeOzNwC7gfZLG\nJa3JNL8deAYYA74M/EuAiDgIfA54KN0+m2IAnwC+kpb5AfDN1oZi1jnOe7Mjpt31FBGXTTN/uOZx\nAFc2aLcJ2FQn/m3gjOn6YTabnPdmR/iX2WZmluVCYWZmWS4UZmaW5UJhZmZZLhRmZpblQmFmZlku\nFGZmluVCYWZmWS4UZmaW5UJhZmZZLhRmZpblQmFmZlkuFGZmluVCYWZmWS4UZmaW5UJhZmZZLhRm\nZpblQmFmZlnNXDN7k6QDkp6oif0HSd+T9Jikb0haUDPvKkljkp6WdGFNfEWKjUlaVxNfIukBSXsk\n3SLpqE4O0KwVznuzI5rZotgMrJgS2wmcERHvB74PXAUg6TRgFXB6WuZLkuZJmgdcD1wEnAZcltoC\nXANcGxFLgUNA7iL2ZrNlM857M6CJQhER9wEHp8TujIiJNHk/sCg9rgBbI+LViHgWGAPOTrexiHgm\nIl4DtgIVSQLOB25Ny28BVrY5JrO2Oe/NjpjfgXX8DnBLeryQ4g00aTzFAPZOiZ8DnAAcrnnz1bbP\nkjQKrAcYGhqiWq3Wbbdx2eT9xBvijdrPZf04pqlKNMZZz/tmcx7enO+TSvT6ta2fxtJIWcbYVqGQ\n9BlgAvjqZKhOs6D+lktk2k8rIkaBUYCRkZGoVCp12w2v28HGZROs3fXGoT634ZJmnmbOqFarNHoN\n+kVZxtirvG8256vV6pvyfVK/5H1ZcqGbyjTGlguFpNXAR4ALImIyyceBxTXNFgH70uN68ReBBZLm\np09Xte27anjdjobz+uXNZJ3Xr3nvnLeclg6PlbQC+DTw0Yh4pWbWdmCVpLdJWgIsBR4EHgKWpiM9\njqL44m97eqPdA3wsLb8aKMe2ltkUznsbVM0cHnszsAt4n6RxSWuAPwOOBXZKelTSnwNExG5gG/Ak\n8FfAlRHxevrU9EngDuApYFtqC8Ub7/cljVHsu72xoyM0a4Hz3uyIaXc9RcRldcINkzoirgaurhO/\nHbi9TvwZiqNDzErDeW92hH+ZbWZmWS4UZmaW5UJhZmZZLhRmZpblQmFmZlkuFGZmluVCYWZmWS4U\nZmaW5UJhZmZZLhRmZpblQmFmZlkuFGZmluVCYWZmWS4UZmaW5UJhZmZZLhRmZpblQmFmZlnNXAp1\nk6QDkp6oiR0vaaekPel+KMUl6TpJY5Iek3RmzTKrU/s96QL1k/GzJD2elrlOkjo9SLOZct6bHdHM\nFsVmYMWU2DrgrohYCtyVpgEuoriw/FLgCuAGKN5gwHrgHIrLP66ffJOlNlfULDf1ucx6YTPOezOg\niUIREfcBB6eEK8CW9HgLsLImflMU7gcWSDoFuBDYGREHI+IQsBNYkeYdFxG7IiKAm2rWZdYzznuz\nI1r9juLkiNgPkO5PSvGFwN6aduMplouP14mblZHz3gbS/A6vr95+1mghPv0TSaMUm/UMDQ1RrVbr\nttu4bPJ+opnVAjRcV9nN1X7PREnHOCt532zOw8zyHUr7umbNxT7PVFnG2GqheEHSKRGxP21GH0jx\ncWBxTbtFwL4UP29K/N4UX1Sn/bQiYhQYBRgZGYlKpVK33fC6HWxcNsHaXc0P9bkNlzTdtiyq1SqN\nXoN+UYIx9jTvm835arU6o3yHuZfzJciFrivTGFvd9bQdmDyCYzVQrYlfno4CORd4KW2i3wEslzSU\nvsxbDtyR5r0s6dx01MflNesyKxvnvQ2kaT92SLqZ4lPRiZLGKTZ9NwDbJK0BngcuTc1vBy4GxoBX\ngI8DRMRBSZ8DHkrtPhsRk18UfoLiCJO3A99MN7Oect6bHTFtoYiIyxrMuqBO2wCubLCeTcCmOvFv\nA2dM1w+z2eS8NzvCv8w2M7MsFwozM8tyoTAzsywXCjMzy3KhMDOzLBcKMzPLcqEwM7MsFwozM8ty\noTAzsywXCjMzy3KhMDOzLBcKMzPLcqEwM7MsFwozM8tyoTAzsywXCjMzy3KhMDOzLBcKMzPLaqtQ\nSPo3knZLekLSzZKOlrRE0gOS9ki6RdJRqe3b0vRYmj9cs56rUvxpSRe2NySz7nLe26BpuVBIWgj8\nK2AkIs4A5gGrgGuAayNiKXAIWJMWWQMcioj3Atemdkg6LS13OrAC+JKkea32y6ybnPc2iNrd9TQf\neLuk+cAxwH7gfODWNH8LsDI9rqRp0vwLJCnFt0bEqxHxLDAGnN1mv8y6yXlvA2V+qwtGxA8lfQF4\nHvgpcCfwMHA4IiZSs3FgYXq8ENiblp2Q9BJwQorfX7Pq2mUakjQKrAcYGhqiWq3Wbbdx2eT9RN35\n9TRaV9nN1X7PRK/H2Mu8bzbnYWb5Dr1/XVsxF/s8U2UZY8uFQtIQxaeiJcBh4C+Bi+o0jclFGsxr\nFM+KiFFgFGBkZCQqlUrddsPrdrBx2QRrdzU/1Oc2XNJ027KoVqs0eg36RRnG2Mu8bzbnq9XqjPId\n5l7OlyEXuq1MY2xn19OvA89GxI8j4ufA14G/DyxIm+QAi4B96fE4sBggzX8XcLA2XmcZs7Jx3tvA\naadQPA+cK+mYtM/1AuBJ4B7gY6nNamBy22l7mibNvzsiIsVXpaNDlgBLgQfb6JdZNznvbeC08x3F\nA5JuBb4DTACPAP8F2AFslfT5FLsxLXIj8BeSxig+Ua1K69ktaRvFm20CuDIiXm+1X2bd5Ly3QdRy\noQCIiPWkL9dqPEOdozci4mfApQ3WczVwdTt9MZstznsbNP5ltpmZZblQmJlZlguFmZlluVCYmVmW\nC4WZmWW5UJiZWZYLhZmZZblQmJlZlguFmZlluVCYmVmWC4WZmWW5UJiZWZYLhZmZZblQmJlZlguF\nmZlluVCYmVmWC4WZmWW1VSgkLZB0q6TvSXpK0jJJx0vaKWlPuh9KbSXpOkljkh6TdGbNelan9nsk\n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\nhcLMzLL+P5iHZgjQh5TEAAAAAElFTkSuQmCC\n"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Going to assume that the outlier ages above were mistakenly entered as months."
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outliers = outpatients.ageinjan > 20\noutpatients.loc[outliers, ['ageinjan', 'ageinnov']] = outpatients.loc[outliers, ['ageinjan', 'ageinnov']] / 12",
"execution_count": 59,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatients[['ageinjan', 'ageinnov']].hist(bins=20)",
"execution_count": 60,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 60,
"data": {
"text/plain": "array([[<matplotlib.axes._subplots.AxesSubplot object at 0x1207c8be0>,\n <matplotlib.axes._subplots.AxesSubplot object at 0x126294208>]], dtype=object)"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x126a231d0>",
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatients['age'] = np.maximum(outpatients[['ageinjan', 'ageinnov']].mean(1), 0.1)",
"execution_count": 61,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatients_kids = outpatients[outpatients.age<18].copy()",
"execution_count": 62,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatients_kids['5_and_older'] = (outpatients_kids.age>=5).astype(int)\noutpatients_kids['under_5'] = (outpatients_kids.age<5).astype(int)\noutpatients_kids['under_2'] = (outpatients_kids.age<2).astype(int)\noutpatients_kids['under_1'] = (outpatients_kids.age<1).astype(int)",
"execution_count": 63,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatients_kids['age_group'] = 3\noutpatients_kids.loc[outpatients_kids.under_5==1, 'age_group'] = 2\noutpatients_kids.loc[outpatients_kids.under_2==1, 'age_group'] = 1\noutpatients_kids.loc[outpatients_kids.under_1==1, 'age_group'] = 0",
"execution_count": 64,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatients_kids.groupby('year').age.hist(alpha=0.3)",
"execution_count": 65,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 65,
"data": {
"text/plain": "year\n2012 Axes(0.125,0.125;0.775x0.755)\n2015 Axes(0.125,0.125;0.775x0.755)\nName: age, dtype: object"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x12000f7f0>",
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"metadata": {
"scrolled": true,
"trusted": true
},
"cell_type": "code",
"source": "outpatient_n = (outpatients_kids.rename(columns={'ptname':'n'})\n .groupby(['year', 'age_group'])\n .n.count())\noutpatient_n",
"execution_count": 66,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 66,
"data": {
"text/plain": "year age_group\n2012 0 1237\n 1 1652\n 2 4446\n 3 8605\n2015 0 1618\n 1 1436\n 2 4307\n 3 9870\nName: n, dtype: int64"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rotavirus_data.head()",
"execution_count": 67,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 67,
"data": {
"text/plain": " caseid case settingnew rota_od vaxstrain rota_genotype noro_type \\\n0 EN1C0001 1 3 0.088 NaN NEG NaN \n1 EN1C0002 1 3 NaN NaN NaN NaN \n2 EN1C0003 1 3 NaN NaN NaN NaN \n3 EN1C0004 1 3 NaN NaN NaN NaN \n4 EN1C0006 1 3 NaN NaN NaN NaN \n\n noroseq_gii_c noroseq_gii_d noroseq_gi_c ... age_months under_5 \\\n0 NaN NaN NaN ... 77.0 0 \n1 NaN NaN NaN ... 87.0 0 \n2 NaN NaN NaN ... 63.0 0 \n3 NaN NaN NaN ... 36.0 1 \n4 NaN NaN NaN ... 64.0 0 \n\n under_2 under_1 age_group setting male stool_collected public_ins \\\n0 0 0 3 2 True True 1.0 \n1 0 0 3 2 True False 1.0 \n2 0 0 3 2 False False 1.0 \n3 0 0 2 2 False True 1.0 \n4 0 0 3 2 False False 1.0 \n\n private_ins \n0 0.0 \n1 0.0 \n2 0.0 \n3 0.0 \n4 0.0 \n\n[5 rows x 697 columns]",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>caseid</th>\n <th>case</th>\n <th>settingnew</th>\n <th>rota_od</th>\n <th>vaxstrain</th>\n <th>rota_genotype</th>\n <th>noro_type</th>\n <th>noroseq_gii_c</th>\n <th>noroseq_gii_d</th>\n <th>noroseq_gi_c</th>\n <th>...</th>\n <th>age_months</th>\n <th>under_5</th>\n <th>under_2</th>\n <th>under_1</th>\n <th>age_group</th>\n <th>setting</th>\n <th>male</th>\n <th>stool_collected</th>\n <th>public_ins</th>\n <th>private_ins</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>EN1C0001</td>\n <td>1</td>\n <td>3</td>\n <td>0.088</td>\n <td>NaN</td>\n <td>NEG</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>77.0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>3</td>\n <td>2</td>\n <td>True</td>\n <td>True</td>\n <td>1.0</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>1</th>\n <td>EN1C0002</td>\n <td>1</td>\n <td>3</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>87.0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>3</td>\n <td>2</td>\n <td>True</td>\n <td>False</td>\n <td>1.0</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>2</th>\n <td>EN1C0003</td>\n <td>1</td>\n <td>3</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>63.0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>3</td>\n <td>2</td>\n <td>False</td>\n <td>False</td>\n <td>1.0</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>3</th>\n <td>EN1C0004</td>\n <td>1</td>\n <td>3</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>36.0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>2</td>\n <td>2</td>\n <td>False</td>\n <td>True</td>\n <td>1.0</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>4</th>\n <td>EN1C0006</td>\n <td>1</td>\n <td>3</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>...</td>\n <td>64.0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>3</td>\n <td>2</td>\n <td>False</td>\n <td>False</td>\n <td>1.0</td>\n <td>0.0</td>\n </tr>\n </tbody>\n</table>\n<p>5 rows × 697 columns</p>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "eligible_data.head()",
"execution_count": 68,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 68,
"data": {
"text/plain": " scrdate admitdate dob agedays agemonths ageyears \\\ncaseid \nEN1C0001 2012-12-03 12/3/12 6/11/06 2366.08 77.74 6.478 \nEN1C0002 2012-12-03 12/3/12 8/20/05 2661.45 87.44 7.287 \nEN1C0003 2012-12-03 12/3/12 8/14/07 1936.96 63.64 5.303 \nEN1C0004 2012-12-04 12/4/12 11/6/09 1124.16 36.93 3.078 \nEN1C0006 2012-12-04 12/4/12 7/8/07 1974.40 64.87 5.406 \n\n insurance sex race race2_8 ... transfer noninfect \\\ncaseid ... \nEN1C0001 1 1 6 1.0 ... 0 0 \nEN1C0002 1 1 2 NaN ... 0 0 \nEN1C0003 1 2 2 NaN ... 0 0 \nEN1C0004 1 2 6 1.0 ... 0 0 \nEN1C0006 1 2 2 NaN ... 0 0 \n\n immcomp prevenroll elig year under_5 under_2 under_1 \\\ncaseid \nEN1C0001 0 0 1 0 0 0 0 \nEN1C0002 0 0 1 0 0 0 0 \nEN1C0003 0 0 1 0 0 0 0 \nEN1C0004 0 0 1 0 1 0 0 \nEN1C0006 0 0 1 0 0 0 0 \n\n age_group \ncaseid \nEN1C0001 3 \nEN1C0002 3 \nEN1C0003 3 \nEN1C0004 2 \nEN1C0006 3 \n\n[5 rows x 22 columns]",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>scrdate</th>\n <th>admitdate</th>\n <th>dob</th>\n <th>agedays</th>\n <th>agemonths</th>\n <th>ageyears</th>\n <th>insurance</th>\n <th>sex</th>\n <th>race</th>\n <th>race2_8</th>\n <th>...</th>\n <th>transfer</th>\n <th>noninfect</th>\n <th>immcomp</th>\n <th>prevenroll</th>\n <th>elig</th>\n <th>year</th>\n <th>under_5</th>\n <th>under_2</th>\n <th>under_1</th>\n <th>age_group</th>\n </tr>\n <tr>\n <th>caseid</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>EN1C0001</th>\n <td>2012-12-03</td>\n <td>12/3/12</td>\n <td>6/11/06</td>\n <td>2366.08</td>\n <td>77.74</td>\n <td>6.478</td>\n <td>1</td>\n <td>1</td>\n <td>6</td>\n <td>1.0</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>3</td>\n </tr>\n <tr>\n <th>EN1C0002</th>\n <td>2012-12-03</td>\n <td>12/3/12</td>\n <td>8/20/05</td>\n <td>2661.45</td>\n <td>87.44</td>\n <td>7.287</td>\n <td>1</td>\n <td>1</td>\n <td>2</td>\n <td>NaN</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>3</td>\n </tr>\n <tr>\n <th>EN1C0003</th>\n <td>2012-12-03</td>\n <td>12/3/12</td>\n <td>8/14/07</td>\n <td>1936.96</td>\n <td>63.64</td>\n <td>5.303</td>\n <td>1</td>\n <td>2</td>\n <td>2</td>\n <td>NaN</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>3</td>\n </tr>\n <tr>\n <th>EN1C0004</th>\n <td>2012-12-04</td>\n <td>12/4/12</td>\n <td>11/6/09</td>\n <td>1124.16</td>\n <td>36.93</td>\n <td>3.078</td>\n <td>1</td>\n <td>2</td>\n <td>6</td>\n <td>1.0</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>2</td>\n </tr>\n <tr>\n <th>EN1C0006</th>\n <td>2012-12-04</td>\n <td>12/4/12</td>\n <td>7/8/07</td>\n <td>1974.40</td>\n <td>64.87</td>\n <td>5.406</td>\n <td>1</td>\n <td>2</td>\n <td>2</td>\n <td>NaN</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>3</td>\n </tr>\n </tbody>\n</table>\n<p>5 rows × 22 columns</p>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "eligible_counts.sum()",
"execution_count": 69,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 69,
"data": {
"text/plain": "2108"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Average denominators"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_n.head()",
"execution_count": 70,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 70,
"data": {
"text/plain": "year age_group\n2012 0 1237\n 1 1652\n 2 4446\n 3 8605\n2015 0 1618\nName: n, dtype: int64"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_n_mean = outpatient_n.groupby('age_group').mean().astype(int)",
"execution_count": 71,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_data_full = (rotavirus_summary[rotavirus_summary.setting==OUTPATIENT].groupby(['age_group','year'])\n .cases.sum().reset_index())",
"execution_count": 72,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_data_full",
"execution_count": 73,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 73,
"data": {
"text/plain": " age_group year cases\n0 0 0 86\n1 0 1 95\n2 0 2 94\n3 1 0 101\n4 1 1 90\n5 1 2 85\n6 2 0 120\n7 2 1 119\n8 2 2 116\n9 3 0 152\n10 3 1 124\n11 3 2 92",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>age_group</th>\n <th>year</th>\n <th>cases</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>0</td>\n <td>86</td>\n </tr>\n <tr>\n <th>1</th>\n <td>0</td>\n <td>1</td>\n <td>95</td>\n </tr>\n <tr>\n <th>2</th>\n <td>0</td>\n <td>2</td>\n <td>94</td>\n </tr>\n <tr>\n <th>3</th>\n <td>1</td>\n <td>0</td>\n <td>101</td>\n </tr>\n <tr>\n <th>4</th>\n <td>1</td>\n <td>1</td>\n <td>90</td>\n </tr>\n <tr>\n <th>5</th>\n <td>1</td>\n <td>2</td>\n <td>85</td>\n </tr>\n <tr>\n <th>6</th>\n <td>2</td>\n <td>0</td>\n <td>120</td>\n </tr>\n <tr>\n <th>7</th>\n <td>2</td>\n <td>1</td>\n <td>119</td>\n </tr>\n <tr>\n <th>8</th>\n <td>2</td>\n <td>2</td>\n <td>116</td>\n </tr>\n <tr>\n <th>9</th>\n <td>3</td>\n <td>0</td>\n <td>152</td>\n </tr>\n <tr>\n <th>10</th>\n <td>3</td>\n <td>1</td>\n <td>124</td>\n </tr>\n <tr>\n <th>11</th>\n <td>3</td>\n <td>2</td>\n <td>92</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_merged = (outpatient_data_full.merge(outpatient_n_mean.reset_index(), on=['age_group'])\n .merge(pd.DataFrame(eligible_counts).reset_index(), on=['age_group', 'year']))",
"execution_count": 74,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_merged",
"execution_count": 78,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 78,
"data": {
"text/plain": " age_group year cases n eligible\n0 0 0 86 1427 149\n1 0 1 95 1427 150\n2 0 2 94 1427 153\n3 1 0 101 1544 149\n4 1 1 90 1544 129\n5 1 2 85 1544 139\n6 2 0 120 4376 204\n7 2 1 119 4376 187\n8 2 2 116 4376 192\n9 3 0 152 9237 263\n10 3 1 124 9237 211\n11 3 2 92 9237 182",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>age_group</th>\n <th>year</th>\n <th>cases</th>\n <th>n</th>\n <th>eligible</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>0</td>\n <td>86</td>\n <td>1427</td>\n <td>149</td>\n </tr>\n <tr>\n <th>1</th>\n <td>0</td>\n <td>1</td>\n <td>95</td>\n <td>1427</td>\n <td>150</td>\n </tr>\n <tr>\n <th>2</th>\n <td>0</td>\n <td>2</td>\n <td>94</td>\n <td>1427</td>\n <td>153</td>\n </tr>\n <tr>\n <th>3</th>\n <td>1</td>\n <td>0</td>\n <td>101</td>\n <td>1544</td>\n <td>149</td>\n </tr>\n <tr>\n <th>4</th>\n <td>1</td>\n <td>1</td>\n <td>90</td>\n <td>1544</td>\n <td>129</td>\n </tr>\n <tr>\n <th>5</th>\n <td>1</td>\n <td>2</td>\n <td>85</td>\n <td>1544</td>\n <td>139</td>\n </tr>\n <tr>\n <th>6</th>\n <td>2</td>\n <td>0</td>\n <td>120</td>\n <td>4376</td>\n <td>204</td>\n </tr>\n <tr>\n <th>7</th>\n <td>2</td>\n <td>1</td>\n <td>119</td>\n <td>4376</td>\n <td>187</td>\n </tr>\n <tr>\n <th>8</th>\n <td>2</td>\n <td>2</td>\n <td>116</td>\n <td>4376</td>\n <td>192</td>\n </tr>\n <tr>\n <th>9</th>\n <td>3</td>\n <td>0</td>\n <td>152</td>\n <td>9237</td>\n <td>263</td>\n </tr>\n <tr>\n <th>10</th>\n <td>3</td>\n <td>1</td>\n <td>124</td>\n <td>9237</td>\n <td>211</td>\n </tr>\n <tr>\n <th>11</th>\n <td>3</td>\n <td>2</td>\n <td>92</td>\n <td>9237</td>\n <td>182</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_under_5 = outpatient_merged[outpatient_merged.age_group<3]",
"execution_count": 76,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "def outpatient_model(dataset):\n \n age_group, cases, n, eligible = dataset[['age_group','cases','n', 'eligible']].values.T\n\n shape = dataset.shape[0]\n n_groups = len(set(age_group))\n \n # Cases weighted by monitoring effort\n weights = monitoring_rate[OUTPATIENT]\n \n with Model() as mod:\n\n # Uniform prior on weighted cases\n weighted_cases = Uniform('weighted_cases', eligible, n, shape=shape)\n \n # Adjust for enrollment\n enrollment_rate = Beta('p_enrolled', 1, 1, shape=shape)\n eligible_cases = Binomial('eligible_cases', eligible, enrollment_rate, observed=cases)\n\n # Likelihood of eligible cases\n weighting = Binomial('weighting', n=weighted_cases, p=weights, observed=eligible)\n\n θ = Normal('θ', 0, sd=1000, shape=n_groups)\n\n λ = Deterministic('λ', tt.exp(θ))\n\n AGE_obs = Potential('AGE_obs', Poisson.dist(λ[age_group]*n).logp(weighted_cases))\n\n return mod",
"execution_count": 79,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_age = outpatient_model(outpatient_under_5)",
"execution_count": 80,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "with outpatient_age:\n outpatient_age_trace = sample(iterations, tune=tune, njobs=2, random_seed=seed_numbers)",
"execution_count": 81,
"outputs": [
{
"output_type": "stream",
"text": "Auto-assigning NUTS sampler...\nInitializing NUTS using jitter+adapt_diag...\n100%|██████████| 2000/2000 [00:05<00:00, 382.62it/s]\n",
"name": "stderr"
}
]
},
{
"metadata": {
"scrolled": true,
"trusted": true
},
"cell_type": "code",
"source": "age_labels = ['<1', '1', '2-4']\nforestplot(outpatient_age_trace, varnames=['λ'], transform=lambda x: x*rate_factor, ylabels=age_labels)",
"execution_count": 139,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 139,
"data": {
"text/plain": "<matplotlib.gridspec.GridSpec at 0x13a087908>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x13a0877b8>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAbYAAAEnCAYAAADFM2aWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFmdJREFUeJzt3Xu0ZGV95vHvYx8BuTaKogLa3L0SZJLYOpImEQWMilmZ\nzKjxljDLxBkm43iJGo0BJS6IZshklpFZM2groAmioyxneVeOJOkj4TISEB0xAo2CXBToFkVaf/PH\n3i3F6VPd1X0uVf2e72etvapq711v/WpX1X72++7dp1NVSJLUioeMuwBJkhaSwSZJaorBJklqisEm\nSWqKwSZJaorBJklqisGmsUhyWpLz+/uPS7IxyYr+8SVJ/v2Q561KUkmmlrLepZZkbZIzxl2H2pLk\nuCQ3j7uOxWawTbAkT0zypSR3J7k+yW8NLNu8g984MP3pwPI3JrkjyTVJnjIw/18n+cQIr31Eko/2\nbdyd5Ookr9scPgupqm6qqj2r6mcL3fagwTAdYd1XJfn7xaxHWghJbkjy434fcGt/ULTnIrzOTnNQ\nabBNqP7L80ngU8DDgVcD5yc5YtaqK/tQ2LOq3tk/9zHAKcAhwDnAmQNt/iXw2m289qHAV4H1wFOr\nah/gd4BfBvYaUqsGuE20xF5QVXsCRwNPA94y5nrGymCbXE8AHgucXVU/q6ovAf8AvHyE5z4OuKqq\n7gG+QBdw0AXaxVV1wzaefzrwj1X1uqq6BaCqvllVL62quwaO3E5JchPwJYAkq5P8Y5K7knwtyXGb\nG0xycJLpJBuSfB7Yb2DZXEeChya5rO8tfjLJw+cqNMk+Sc5NckuS7yY5Y9ReZf+af5jkW0l+mOS9\n6TyR7oDgGf1R8F39+rsmeU+Sm5J8P8k5SR7WLzsuyc1J3pTkVuADSa5L8vyB15vqe8DH9I8/2h9h\n353kK0mePKTO/ZJ8qt+uP0hyaRJ/u9pCVd0KfJYu4IZK8vokt/W/m98bmP+bSa5Kck+S9UlOG3ja\nV/rbu/rfxTMW/A0sEH8ckytD5j1l1rwb+x3qB5JsDovrgacmWQkcD1yb5CDgxcB7Rnjt44GLRlhv\nDfBE4IQkBwD/BziDrof5BuBjSR7Zr/th4Aq6QHsn8MpttP0K4Pfpwn0T8NdD1vtgv/wwuiPV5wJz\nnp8b4vnArwC/BPxb4ISqug74Q2Bd3xNe2a97FnAE3U7jMOAA4O0DbT2a7r0/nq6H/RHgJQPLTwDu\nqKor+8efBg4HHgVcCVwwpMbXAzcDjwT2B/4E8G/haQtJDgROotsHDPNoYB+67+8pwHuT7Nsv+xHd\nb28l8JvAa5K8qF/2a/3t5lGidQtd/4KpKqcJnICHAv8C/HF//7nAT4HP9sv3pBsanKLb2V20eVm/\n/CV0O8tP0+1oPw48G/h3wDTdMOeBQ177fuDErdS2im7HesjAvDcB581a77N0AfY4uvDZY2DZh4Hz\nZ7U31T++BDhzYN0n9e99xeC6/fu+D3jYrPf95SF1n7b5NfvHBTxr4PGFwJv7+68C/n5gWeh+9IcO\nzHsG8J3+/nF9jbsNLD8M2ADs3j++AHj7kNpW9vXs0z9eC5zR339H/3kdNu7vpdPkTcANwMb+u1bA\nF+nCZ651jwN+vPm31s+7DVg9ZP2/ohs12uJ3OsmTPbYJVVX3Ay+iO2q6le6o/UK6I3eqamNVXV5V\nm6rq+8CpwHOT7N0v/0hVHVNVJ9H18u4DrqLrsb0A+CjDe293Ao8Zocz1A/cfD/xOP1x2Vz9896y+\nnccCP6yqHw2sf+N2tH0jXbjvN2udx/fzbxl4zf9B1wMa1a0D9++lO2CYyyOB3YErBl7rM/38zW6v\nqp9sflBV1wPXAS9IsjvwQrpAJ8mKJGcm+XaSe+h2TszxHgHeTXcE/rkk/5Lkzdvx/rQ8vKiq9qIL\nricA++WBq403Jtk4sO6dVbVp4PEvvvdJnp7ky0luT3I33cjFXN/JiWawTbCqurqq1lTVI6rqBLpz\nZZcNW72/fdAQZn8O6F10wXg4sL66c2//BBw1pK0vAL89SokD99fT9dhWDkx7VNWZwC3Avkn2GFj/\ncdto+6BZ694P3DFrnfV0gb3fwGvuXVVznqvaTrOH+u6gO9J98sBr7VPdCfthz4EHhiNPBr7ehx3A\nS/t5x9MNC63q528xBF1VG6rq9VV1CN1ByeuSPHsH35caVlXTdL3999QDVxvvOet7ujUfBi4GDqru\norFzeOA7udMMfxtsEyzJUUl2S7J7kjfQ9X7W9suenuTIJA9J8gi6c1CXVNXds5p5G7C2qr4H3AQc\nmWR/4Nfphjrn8mfAM5O8O8mj+9c7LMn5/Xm7uZxP1zM5oe+N7NZfUHFgVd0IXA6cnmSXJM+i20Fv\nzcuSPKnv6bwDuKhm/XOA6i5s+Rzwl0n27rfFoUnWbKPtUXwfODDJLv1r/Rz4n8DZSR4FkOSAJCds\no52/pRtGfg19b623F10o30nXE3zXsAaSPL/f/gHuAX7WT9Jc/gp4TpKtXkAyxF7AD6rqJ0l+le4A\nbLPbgZ/zwMVoE8tgm2wvp+vt3EZ3fuw5VXVfv+wQuqGwDcA1dDvJwQsVSHIk3U71v8MvguBM4Frg\njxhySXBVfZvu/NEqugtP7gY+RhdOG4Y8Zz1dD+RP6H4A64E38sB37KXA04Ef0AXnh7bx3s+jC/Fb\ngd36eufyCmAX4OvAD+nONY4yjLotX6LbTrcm2dxTfBPdkOBMP3z4BeDIrTXSb/N1wDOBvxtY9CG6\nIdbv9rXPbKWZw/vX2ti39TdVdcl2vh8tE1V1O93360+3te4c/gPwjiQb6C6MunCg3XuBPwf+oR+O\nX70Q9S6G9CcFJUlqgj02SVJTDDZJUlMMNklSUww2SVJTDDZJUlMm8i+Qn3jiiXXHHbP/La4kPdgV\nV1zx2ao6cdx1gPutpTDq5z2pl/tPZFGSJs5cfyx8XNxvLb6RPm+HIiVJTTHYJElNMdgkSU0x2CRJ\nTTHYJElNMdgkSU0x2CRJTTHYJElNMdgkSU0x2CRJTTHYJElNMdgkSU0x2CRJTTHYJElNMdgkSU0x\n2CRJTTHYJElNMdgkSU0x2CRJTTHYJElNMdgkSU0x2CRJTTHYJElNMdgkSU0x2CRJTTHYJElNMdgk\nSU0x2CRJTTHYJElNMdgkSU0x2CRJTTHYJElNMdgkMTMDZ53V3Uo7u6lxFyBpcSSL13bV4rUtzZfB\nJk2QxQyjhbSQdRqSWmgLOhSZ5NQklye5L8nahWxbWg6qln5atw6m+kPcqanu8VK+vrTQFiTYkuzf\n3/0ecAbw/oVoV9LiW70a3vc+OPHE7nb16nFX1B7PYS6t1A4eMiVZCbwE+D3gzqo6aWDZGcCBVfWq\nHazL4zhpASz20OYE9LgmafB2zq0xMwPHHgubNnU94ksv9eBhHkb6vLerx5bkIUmek+TDwI3Ac4F3\nAS/c/vokzSVZuGlnqnWpal5q09NdqEF3Oz093nqWg5GDLcmpwA3AWcAMcGhV/VZVfaKq7l+k+qRl\nZ7mdY2v9nNuaNQ/evmvWjLee5WB7roo8GNgX+AJwNXDnolQkaUmtXt0Nj01Pdztdh8kWltt36W3X\nObYkjwReRndebW/gPOBDVfWtWet5jk3SUpikwUv3W4tv4c+xVdXtVXV2VR0F/DawEliX5P0ASaaS\n7AasAFYk2S2J/1ZOkrRkdviqyF80kOwCHF1VlyU5DfizWaucXlWnbWezHvlIGoU9tuVlpM973sG2\nSCayKEkTx2BbXhZ+KFKSpElnsEmSmmKwSZKaYrBJkppisEmSmmKwSZKaYrBJkppisEmSmmKwSZKa\nYrBJkppisEmSmmKwSZKaYrBJkppisEmSmmKwSZKaYrBJkppisEmSmmKwSZKaYrBJkppisEmSmmKw\nSZKaYrBJkppisEmSmmKwSZKaYrBJkppisEmSmmKwSZKaYrBJkppisEmSmmKwSZKaYrBJkppisEmS\nmmKwSZKaYrBJkppisEmSmmKwSZKaYrBJkppisEmSmmKwSZKaYrBJkppisEmSmmKwSZKaYrBJkppi\nsEmSmmKwSZKaYrBJkppisEmSmmKwSZKaYrBJkppisEmSmmKwSZKaYrBJkppisEmSmmKwSZKaYrBJ\nkppisEmSmmKwSZKaYrBJkppisEmSmmKwSZKaYrBJkppisEmSmmKwSZKaYrBJkppisEmSmmKwSZKa\nYrBJkppisEmSmmKwSZKaYrBJ8zAzA2ed1d1KmgxT4y5AmlTJwrdZtfBtSnowg03NWoxgmq+FqsmA\nlIZb8KHIJKcmuTzJfUnWLnT70qiqFndatw6m+kPDqanu8WK/5uZJ0nCL0WP7HnAGcALwsEVoX5oY\nr351d/vyl8Pq1eOtRZNrZgamp2HNGr8nSyG1SId/Sc4ADqyqV+3A0z0m1Vgt1jCmva0FN0kDznN+\nujMzcOyxsGlT17O/9FLDbR5G+ry9KlLNS7Z/mqRaxlmv5m96ugs16G6np8dbz3JgsKl5rZ1f85zb\nzmXNmgd/V9asGW89y4FXRUo7YPXqbkjJ8ybaFr8rS89zbJJ2ZpM0EOt+a/GN9HkveI8tyVTf7gpg\nRZLdgE1VtWmhX0uSpNkW4xzb24AfA28GXtbff9sivI4kSVtYtKHIeZrIoiRNHIcilxcv95ckLT8G\nmySpKQabJKkpBpskqSkGmySpKQabJKkpBpskqSkGmySpKQabJKkpBpskqSkGmySpKQabJKkpBpsk\nqSkGmySpKQabJKkpBpskqSkGmySpKQabJKkpBpskqSkGmySpKQabJKkpBpskqSkGmySpKQabJKkp\nBpskqSkGmySpKQabJKkpBpskqSkGmySpKQabJKkpBpskqSkGmySpKQabJKkpBpskqSkGmySpKQab\nJKkpBpskqSkGmySpKQabJKkpBpskqSkGmySpKQabJKkpBpskqSkGmySpKQabJKkpBpskqSkGmySp\nKQabJKkpBpskqSkGmySpKQabJKkpBpskqSkGmySpKQabJKkpBpskqSkGmySpKQabJKkpBpskqSkG\nmySpKQabJKkpBpskqSkGmySpKQabJKkpBpskqSkGmySpKQabJKkpBpskqSkGmySpKcsu2GZm4Kyz\nultJUnumxl3AUki2vU7V4tchSVp8zQTbKOE1n+cbfJK0c9jmUGSSXZOcm+TGJBuSXJXkpBGed3iS\nnyQ5f2FK3bqqbU/r1sFUH+VTU93jUZ5nqEnSzmOUHtsUsB5YA9wEPA+4MMlTq+qGrTzvvcA/zbvC\nBbR6NVx6KUxPw5o13WNJUlu22WOrqh9V1WlVdUNV/byqPgV8B/hXw56T5MXAXcAXF65USdo5edHa\n0truc2xJ9geOAK4dsnxv4B3As4FT5lXdAhj13JvDjZIWw8wMHHssbNrUnQK59FJHixbbdl3un+Sh\nwAXAB6vqG0NWeydwblWtn29xo9c1fJpvG5I0H9PTXahBdzs9Pd56loORgy3JQ4DzgJ8Cp/bzPp1k\nYz/9bpKjgeOBsxel2iFGvQBkRy4ekaT5WLPmwfudNWvGW89ykBph750kwPuBVcDzqurHQ9Z7LfDn\nwIZ+1p7ACuC6qjpmO+patEiZmfHiEakhkzSuMnS/5X5nwYz0eY8abOcARwPHV9XGray3O7D3wKw3\n0IXha6rq9lEK6tlXkjSKnSLYtGBG+ry3efFIkscDfwDcB9yaB048/UFVXTC4blXdC9w78NyNwE+2\nM9QkSdphI/XYxmAii5I0ceyxLS8jfd7L7o8gS5LaZrBJkppisEmSmmKwSZKaYrBJkppisEmSmmKw\nSZKaYrBJkppisEmSmmKwSZKaYrBJkppisEmSmmKwSZKaYrBJkppisEmSmmKwSZKaYrBJkppisEmS\nmmKwSZKaYrBJkppisEmSmmKwSZKaYrBJkppisEmSmmKwSZKaYrBJkppisEmSmmKwSZKaYrBJkppi\nsEmSmmKwSZKaYrBJkppisEmSmmKwSZKakqoadw1bSPIZYL9FaPqxwPcWod2lYO3jYe3jMWrtd1TV\niYtdzChG2G+tAm5YkmJGtxewYdxFzLKK4dtppM97IoNtsSSpqsq469gR1j4e1j4eO3Ptw0zie0py\nWlWdNu46Bi3EdnIoUpKWr0vGXcBisMe2k7D28bD28diZax+mxfe0GOyxbb/Tx13APFj7eFj7eOzM\ntQ/T4ntaDPPeTsuqxyZJat9y67FJkhpnsEmSmmKwSZKaYrBJkppisEmSmtJssCVZmeSiJN9Icl2S\nZyR5eJLPJ/lWf7vvuOucS5L/kuTaJNck+UiS3ZIcnOSrfe1/l2SXcde5WZL3J7ktyTUD8+bc1un8\ndZLrk1yd5JjxVT609nf335urk/zvJCsHlr2lr/2bSU4YT9W/qGWL2geWvSFJJdmvfzzx272f/5/6\nbXttkr8YmD8x2317be1zUifJQUm+3O+rr03yn+fTXrPBBvw34DNV9QTgl4DrgDcDX6yqw4Ev9o8n\nSpIDgD8CfrmqngKsAF4MnAWc3df+Q+CU8VW5hbXA7L/fNmxbnwQc3k+vBt63RDUOs5Yta/888JSq\nOgr4f8BbAJI8ie6zeHL/nL9JsmLpSt3CWrasnSQHAc8BbhqYPfHbPcmvAycDR1XVk4H39PMnbbtv\nr7XM8TnpQTYBr6+qJwKrgf/Yf+47pMlgS7I38GvAuQBV9dOquovuR/PBfrUPAi8aT4XbNAU8LMkU\nsDtwC/AbwEX98omqvaq+Avxg1uxh2/pk4EPVmQFWJnnM0lS6pblqr6rPVdWm/uEMcGB//2Tgb6vq\nvqr6DnA98KtLVuwsQ7Y7wNnAHwOD/0h14rc78BrgzKq6r1/ntn7+RG337bWVz0m9qrqlqq7s72+g\n64gcsKPtNRlswCHA7cAHklyV5H8l2QPYv6pugW5DAo8aZ5Fzqarv0h2p3kQXaHcDVwB3Dexsb2Ye\nH/oSGbatDwDWD6w36e/l94FP9/cnvvYkLwS+W1Vfm7Vo4msHjgCO7Yfcp5P8Sj9/Z6hdCyTJKuBp\nwFd3tI1Wg20KOAZ4X1U9DfgREzjsOJf+XNTJwMF0/3XHHnTDSLPtrH8yZq6/ATeR7yXJW+mGSC7Y\nPGuO1Sam9iS7A28F3j7X4jnmTUztvSlgX7qhqDcCFyYJO0ftWgBJ9gQ+Bry2qu7Z0XZaDbabgZur\nanPiX0QXdN/fPPzS39425PnjdDzwnaq6varuBz4OPJNu6GiqX+dAJv//2Rq2rW8GDhpYbyLfS5JX\nAs8Hfrce+Ltzk177oXQHRF9LcgNdfVcmeTSTXzt0NX68Hy69DPg53f9vtjPUrnlK8lC6ULugqj4+\nn7aaDLaquhVYn+TIftazga8DFwOv7Oe9EvjkGMrblpuA1Ul2749WN9f+ZeDf9OtMau2Dhm3ri4FX\n9FfprQbu3jxkOSmSnAi8CXhhVd07sOhi4MVJdk1yMN2FGJeNo8a5VNU/V9WjqmpVVa2iC4Rj+t/D\nxG934BN055JJcgSwC3AHE77dNX/9vu5c4Lqq+q/zbrCqmpyAo4HLgavpfjD7Ao+gu0LvW/3tw8dd\n55DaTwe+AVwDnAfsSnfe8DK6E+cfBXYdd50D9X6E7nzg/XQ701OGbWu6YaX3At8G/pnu6s9Jq/16\nunM6/7efzhlY/6197d8ETpq02mctvwHYbyfa7rsA5/ff+yuB35jE7b7Qn5NTATyLbnj56oHf3fN2\ntD3/ur8kqSlNDkVKkpYvg02S1BSDTZLUFINNktQUg02S1BSDTZLUFINNktQUg02S1JT/D0O9L7dP\nxmRsAAAAAElFTkSuQmCC\n"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Pooled AGE model"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_pooled = outpatient_merged.assign(age_group=(outpatient_merged.age_group==3).astype(int))\noutpatient_pooled.head()",
"execution_count": 83,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 83,
"data": {
"text/plain": " age_group year cases n eligible\n0 0 0 86 1427 149\n1 0 1 95 1427 150\n2 0 2 94 1427 153\n3 0 0 101 1544 149\n4 0 1 90 1544 129",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>age_group</th>\n <th>year</th>\n <th>cases</th>\n <th>n</th>\n <th>eligible</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>0</td>\n <td>86</td>\n <td>1427</td>\n <td>149</td>\n </tr>\n <tr>\n <th>1</th>\n <td>0</td>\n <td>1</td>\n <td>95</td>\n <td>1427</td>\n <td>150</td>\n </tr>\n <tr>\n <th>2</th>\n <td>0</td>\n <td>2</td>\n <td>94</td>\n <td>1427</td>\n <td>153</td>\n </tr>\n <tr>\n <th>3</th>\n <td>0</td>\n <td>0</td>\n <td>101</td>\n <td>1544</td>\n <td>149</td>\n </tr>\n <tr>\n <th>4</th>\n <td>0</td>\n <td>1</td>\n <td>90</td>\n <td>1544</td>\n <td>129</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_age_pooled = outpatient_model(outpatient_pooled)",
"execution_count": 84,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "with outpatient_age_pooled:\n outpatient_age_pooled_trace = sample(iterations, tune=tune, njobs=2, random_seed=seed_numbers)",
"execution_count": 85,
"outputs": [
{
"output_type": "stream",
"text": "Auto-assigning NUTS sampler...\nInitializing NUTS using jitter+adapt_diag...\n100%|██████████| 2000/2000 [00:07<00:00, 267.22it/s]\n",
"name": "stderr"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "age_labels_pooled = ['<5', '5+']\nforestplot(outpatient_age_pooled_trace, varnames=['λ'], transform=lambda x: x*rate_factor, ylabels=age_labels_pooled)",
"execution_count": 86,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 86,
"data": {
"text/plain": "<matplotlib.gridspec.GridSpec at 0x131f07fd0>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x131f0fda0>",
"image/png": "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\nDE3Qb6Cd1TU7MQT17QxnjH8y2wySHN3Wf4A7gftaJ23O+4BfSrLJm1RmsRPww6r6lyTPZDhAm3Ir\n8FPuv/lt4hl2k+3XGc6KbmG43vZLVXVPG7cvQzPaXcClDDvO0ZshSHIgw472z+Fn4XACcBnw28xy\nS3JVfY/hetQ+DDe3bAA+yxBYd83ymusYzlT+gOGLcB3wu9y/jb0aeBbwQ4Yw/dhm3vvHGYL9JmC7\nVu9MXgM8FPgO8COGa5dzaYLdnLMZ1tNNSabOKN/G0Jy4vjU9fhk4cFMzaev8POA5wN+OjPoYQ/Ps\nDa329ZuYzQFtWXe3ef3vqjpnnu9HW6GqupVhW3vH5qadwX8B3p3kLoYbsT49Mt+fAH8MfKM1669Z\njHqXUtrFRkmSuuWZnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7E/WX2Y866qi67bbpvxuWpE274IIL\nzqyqo8ZdxxT3Zctnrp/9pP30YKKKkbRizPSH08fJfdnymdNnbzOmJKl7hp0kqXuGnSSpe4adJKl7\nhp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4ad\nJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSp\ne4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuG\nnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0k\nqXuGnSSpe4adpEWxfj2ceOLwKE2aVeMuQNLKkiz8tVWLV4c0H4adJGDLQmwplmEwajHZjCkJGMJl\nod1558Gqdui8atXQvyXzM+i02FKLsFUlOQdYA2xsg26oqgMXMCs3cWmFWr8e1q2DtWthzZplX/wy\nnJfOi/uy5TOnz36Lwi7Jo6vq5hZ2J1fVhxY8s4EbiKSFMOy2XnP67OfdjJlkdZI3JDkfOGm+r5fU\nJ+/GnBvX03jM6cwuyUOAI4DfBF4CnA18FPhiVd3bzuyezJCwVwB/WFXnLKAej4akCbfQG1mW+Drc\nijizW78env982LhxuLZ57rljafLtzeKc2SV5I3A1cCKwHtivql5RVZ+vqnvbZG8D9gX2AP4K+Lsk\n+y2kaknjkcytW+r5b+lyJtm6dUPQwfC4bt1469mazKUZ8wnALsC3gUuA26dPUFXfrKq7quqeqvoo\n8A3gxYtaqaQl5d2YS2/t2geup7Vrx1vP1mSuzZi7A7/G0Iz5CODjwMeq6spZpj8dOL2q3j/Pejrd\nxKX+eTfmA8y6LxvzeurR0tyNmeTngdcCrwJOBd4CPAtYx/DTg19haMo8tKqumNfMDTtJC7Niwk6L\nbml/epDkocAhwPeBvwcOAu4Dvgu8o6rOWsBs3UAkLYRht/Va+t/ZLYGJKkbSimHYbb2W5nd2kiSt\nNIadJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuG\nnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0k\nqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7\nhp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4ad\nJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSp\ne4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuG\nnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0k\nqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7\nhp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4ad\nJKl7hp0kqXuGnSSpe4adJKl7hp0kqXvdh9369XDiicOjJGnrtGrcBSyFZNPjq5anDknSZFjxYbe5\nYJvvawxCSerPim/GrJq9O+88WNXifNWqoX9T0xt0ktSn1GTt4Re9mPXrYd06WLsW1qxZ7LlLmhAL\naONZUhO1Y+3cnD77OYVdknOANcDGNuiGqjpwwaXNzg1E0kIYdluvOX3282nGfGNV7di6GYMuycR9\nwN6NKWmSuE8ajxV/g8pMvBtT0iRavx6e/3zYuHG4j+Dcc728slzmc2b3P5LcluQbSQ5fqoLmK3lw\nt5DXLOSuTkmaj3XrhqCD4XHduvHWszWZa9i9DdgX2AP4K+Dvkuy3ZFXNw2LejSlJS2nt2gfuk9au\nHW89W5MF3Y2Z5Azgi8BFwGkjo3YGNoz0H11VX5/HrL0bU9JCTFrbzKz7MvdJi27x7sZ80IuS04HT\nq+r904ZXVW3JRuf5laSFWDFhp0W3OHdjJlmd5Mgk2yVZleRXgcOAM7e0QkmSlsNc7sbcFjgeOAi4\nD/gucExVXbGUhUmStFi6/wsqkrYKNmNuvRb9R+WSJK1Ihp0kqXuGnSSpe4adJKl7hp0kqXuGnSSp\ne4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuG\nnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0k\nqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7\nhp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4adJKl7hp0kqXuGnSSpe4ad\nJKl7hp0kqXuGnSSpe6mqcdfwM0nOAHabx0seB/xgicrZEtY1P9Y1d5NYE4y/rtuq6qgxLv8B5rAv\n2we4elmKmbt9mLyaYPN1zemzn6iwm68kVVUZdx3TWdf8WNfcTWJNMLl1TapJXF+TWBMsXl02Y0qS\numfYSZK6t9LD7rhxFzAL65of65q7SawJJreuSTWJ62sSa4JFqmtFX7OTJGkuVvqZnSRJm2XYSZK6\nZ9hJkrpn2EmSumfYSZK6t2LCLsl2Sc5PcnGSy5Ic14Y/Ick3k1yZ5G+TPHQMtW2T5KIkp01QTVcn\n+cck307yrTbskUnOanWdlWSXMdS1OskpSb6b5PIkzx53XUkObOtpqrszyZvHXVer7b+27f3SJJ9q\n34Oxbl9J3tTquSzJm9uwsa+rSZPk/yS5Jcmls4xPkvcnuSrJJUkOnZC6Dk+yYeT78M5lqGmvJF9t\n+4TLkrxphmm2aH2tmLAD7gF+saqeBhwCHJVkDXAi8N6qOgD4EXDsGGp7E3D5SP8k1ATwC1V1SFU9\no/W/HfhKq+srrX+5/S/gjKo6CHgaw3oba11VdUVbT4cAPw/8BPi/464ryR7AbwPPqKqnANsAr2SM\n21eSpwD/GXgmw+d3dJIDmIxta9KcBGzqbza+CDigda8D/mIZaoLN1wVw7tR3oqrevQw1bQTeWlUH\nA2uA30rypGnTbNH6WjFhV4O7W++2rSvgF4FT2vCPAscsZ11J9gReAnyo9WfcNW3CyxnqgfGsq0cA\nhwEfBqiqf62qO8Zd1zRHAN+rqmuYjLpWAQ9PsgrYHriR8W5fBwPrq+onVbURWAe8gslYVxOlqr4G\n/HATk7wc+Fjbt60HVid57ATUteyq6saqurA9v4vhIHiPaZNt0fpaMWEHP2su/DZwC3AW8D3gjval\nA7ieB6+gpfY+4PeAn7b+XSegJhgOBL6U5IIkr2vDHl1VN8KwcQGPWuaa9gVuBT7Smn0/lGSHCahr\n1CuBT7XnY62rqm4A3gNcyxByG4ALGO/2dSlwWJJdk2wPvBjYi8n6DFeKPYDrRvrHta+YybPbJaPT\nkzx5ORecZB/g6cA3p43aovW1osKuqu5rTU17MjSjHDzTZMtVT5KjgVuq6oLRwTNMOo4/U/PcqjqU\n4dT/t5IcNoYaplsFHAr8RVU9HfgxE9Tc1a59vQz4zLhrAWjXvV4OPIHhX+jswPB5Trds21dVXc7Q\njHoWcAZwMUMTlOZvUvYV010IPL5dMvpz4PPLteAkOwKfBd5cVXdOHz3DS+a8vlZU2E1pTV/nMLTt\nrm5NPDCE4HL+T63nAi9LcjXwNwzNS+8bc00AVNUP2uMtDNefngncPHXa3x5vWeayrgeur6qpI7ZT\nGMJv3HVNeRFwYVXd3PrHXdcLgO9X1a1VdS/wOeA5jHn7qqoPV9WhVXUYQ3PYlYx/Xa1E1zOcFU8Z\ny75iuqq6c+qSUVX9PbBtkvn8n9EFSbItQ9B9oqo+N8MkW7S+VkzYJdk9yer2/OEMO4LLga8C/75N\n9hvAF5arpqr6/aras6r2YWj+OruqfnWcNQEk2SHJTlPPgRcyND+d2uoZS11VdRNwXZID26AjgO+M\nu64Rr+L+JkwYf13XAmuSbN+uBU+tr3FvX49qj3sD/5ZhnY17Xa1EpwKvaXcZrgE2TDUFj1OSx7Tt\njSTPZMiJ25d4mWG4ln95Vf3PWSbbsvVVVSuiA54KXARcwrDjfmcbvi9wPnAVQ/PTw8ZU3+HAaZNQ\nU1v+xa27DPjDNnxXhjvlrmyPjxzDejoE+Fb7HD8P7DIhdW3P8IXeeWTYJNR1HPDdts1/HHjYBGxf\n5zKE7sXAEZOyriatYzgIuBG4l+Gs5Fjg9cDr2/gAH2C49+AfGe66nYS63tj2GxcD64HnLENNz2No\nkrwE+HbrXryY68v/eiBJ6t6KacaUJGmhDDtJUvcMO0lS9ww7SVL3DDtJUvcMO0lS9ww7SVL3DDtJ\nUvf+P3v07c9Y6OzAAAAAAElFTkSuQmCC\n"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Outpatient AGE estimates"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_age_estimates",
"execution_count": 90,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 90,
"data": {
"text/plain": " mean hpd_2.5 hpd_97.5\nλ__0 145.1 132.2 158.6\nλ__1 123.7 112.1 135.6\nλ__2 61.0 55.9 65.7",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>mean</th>\n <th>hpd_2.5</th>\n <th>hpd_97.5</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>λ__0</th>\n <td>145.1</td>\n <td>132.2</td>\n <td>158.6</td>\n </tr>\n <tr>\n <th>λ__1</th>\n <td>123.7</td>\n <td>112.1</td>\n <td>135.6</td>\n </tr>\n <tr>\n <th>λ__2</th>\n <td>61.0</td>\n <td>55.9</td>\n <td>65.7</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_age_estimates = (df_summary(outpatient_age_trace, varnames=['λ'], transform=lambda x: x*rate_factor)\n .drop(['sd', 'mc_error', 'n_eff', 'Rhat'], axis=1)\n .round(1))\noutpatient_age_estimates.index = ['<1', '1', '2-4']\noutpatient_age_estimates.columns = 'rate esimate', 'lower 95%', 'upper 95%'\noutpatient_age_estimates",
"execution_count": 92,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 92,
"data": {
"text/plain": " rate esimate lower 95% upper 95%\n<1 145.1 132.2 158.6\n1 123.7 112.1 135.6\n2-4 61.0 55.9 65.7",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>rate esimate</th>\n <th>lower 95%</th>\n <th>upper 95%</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>&lt;1</th>\n <td>145.1</td>\n <td>132.2</td>\n <td>158.6</td>\n </tr>\n <tr>\n <th>1</th>\n <td>123.7</td>\n <td>112.1</td>\n <td>135.6</td>\n </tr>\n <tr>\n <th>2-4</th>\n <td>61.0</td>\n <td>55.9</td>\n <td>65.7</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "pooled_estimate = (df_summary(outpatient_age_pooled_trace, varnames=['λ'], transform=lambda x: x*rate_factor)\n .drop(['sd', 'mc_error', 'n_eff', 'Rhat'], axis=1)\n .round(1))\npooled_estimate.columns = outpatient_age_estimates.columns\npooled_estimate.index = ['<5', '5+']\noutpatient_age_estimates.append(pooled_estimate)",
"execution_count": 94,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 94,
"data": {
"text/plain": " rate esimate lower 95% upper 95%\n<1 145.1 132.2 158.6\n1 123.7 112.1 135.6\n2-4 61.0 55.9 65.7\n<5 90.6 86.0 95.2\n5+ 32.6 30.1 35.0",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>rate esimate</th>\n <th>lower 95%</th>\n <th>upper 95%</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>&lt;1</th>\n <td>145.1</td>\n <td>132.2</td>\n <td>158.6</td>\n </tr>\n <tr>\n <th>1</th>\n <td>123.7</td>\n <td>112.1</td>\n <td>135.6</td>\n </tr>\n <tr>\n <th>2-4</th>\n <td>61.0</td>\n <td>55.9</td>\n <td>65.7</td>\n </tr>\n <tr>\n <th>&lt;5</th>\n <td>90.6</td>\n <td>86.0</td>\n <td>95.2</td>\n </tr>\n <tr>\n <th>5+</th>\n <td>32.6</td>\n <td>30.1</td>\n <td>35.0</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_age_estimates.to_excel('results/outpatient_age.xlsx')",
"execution_count": 95,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "mean_data = (outpatient_under_5.groupby('age_group')[['cases', 'n']].mean()\n .rename(columns={'cases':'mean cases', 'n':'mean n'})\n .round(1)\n .set_index(outpatient_age_estimates.index))\n\nmean_data.join(outpatient_age_estimates)\nmean_data.to_excel('results/outpatient_mean_data.xlsx')",
"execution_count": 96,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# Virus Rate Models"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "collected_stools = (rotavirus_data[rotavirus_data.setting==OUTPATIENT].groupby(['age_group', 'year'])\n .agg({'stool_collected':['sum', 'count']}))\n\nlevels = collected_stools.columns.levels\nlabels = collected_stools.columns.labels\ncollected_stools.columns = ['stool_collected', 'enrolled']\n\ncollected_stools = collected_stools.reset_index()\ncollected_stools",
"execution_count": 97,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 97,
"data": {
"text/plain": " age_group year stool_collected enrolled\n0 0 0 79.0 86\n1 0 1 79.0 95\n2 0 2 85.0 94\n3 1 0 93.0 101\n4 1 1 78.0 90\n5 1 2 73.0 85\n6 2 0 92.0 120\n7 2 1 82.0 119\n8 2 2 76.0 116\n9 3 0 115.0 152\n10 3 1 84.0 124\n11 3 2 66.0 92",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>age_group</th>\n <th>year</th>\n <th>stool_collected</th>\n <th>enrolled</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>0</td>\n <td>79.0</td>\n <td>86</td>\n </tr>\n <tr>\n <th>1</th>\n <td>0</td>\n <td>1</td>\n <td>79.0</td>\n <td>95</td>\n </tr>\n <tr>\n <th>2</th>\n <td>0</td>\n <td>2</td>\n <td>85.0</td>\n <td>94</td>\n </tr>\n <tr>\n <th>3</th>\n <td>1</td>\n <td>0</td>\n <td>93.0</td>\n <td>101</td>\n </tr>\n <tr>\n <th>4</th>\n <td>1</td>\n <td>1</td>\n <td>78.0</td>\n <td>90</td>\n </tr>\n <tr>\n <th>5</th>\n <td>1</td>\n <td>2</td>\n <td>73.0</td>\n <td>85</td>\n </tr>\n <tr>\n <th>6</th>\n <td>2</td>\n <td>0</td>\n <td>92.0</td>\n <td>120</td>\n </tr>\n <tr>\n <th>7</th>\n <td>2</td>\n <td>1</td>\n <td>82.0</td>\n <td>119</td>\n </tr>\n <tr>\n <th>8</th>\n <td>2</td>\n <td>2</td>\n <td>76.0</td>\n <td>116</td>\n </tr>\n <tr>\n <th>9</th>\n <td>3</td>\n <td>0</td>\n <td>115.0</td>\n <td>152</td>\n </tr>\n <tr>\n <th>10</th>\n <td>3</td>\n <td>1</td>\n <td>84.0</td>\n <td>124</td>\n </tr>\n <tr>\n <th>11</th>\n <td>3</td>\n <td>2</td>\n <td>66.0</td>\n <td>92</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_n_mean.reset_index()",
"execution_count": 98,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 98,
"data": {
"text/plain": " age_group n\n0 0 1427\n1 1 1544\n2 2 4376\n3 3 9237",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>age_group</th>\n <th>n</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>1427</td>\n </tr>\n <tr>\n <th>1</th>\n <td>1</td>\n <td>1544</td>\n </tr>\n <tr>\n <th>2</th>\n <td>2</td>\n <td>4376</td>\n </tr>\n <tr>\n <th>3</th>\n <td>3</td>\n <td>9237</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "All possible combinations of age, year and setting for index."
},
{
"metadata": {
"scrolled": true,
"trusted": true
},
"cell_type": "code",
"source": "astro_cases = (rotavirus_data[(rotavirus_data.astrovirus==1) & (rotavirus_data.setting==OUTPATIENT)]\n .groupby(['age_group', 'year'])[['stool_collected']].count())\nastro_cases.columns = ['cases']\nastro_cases = astro_cases.reset_index()",
"execution_count": 99,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "eligible_counts",
"execution_count": 100,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 100,
"data": {
"text/plain": "age_group year\n0 0 149\n 1 150\n 2 153\n1 0 149\n 1 129\n 2 139\n2 0 204\n 1 187\n 2 192\n3 0 263\n 1 211\n 2 182\nName: eligible, dtype: int64"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "astro_data = (astro_cases.merge(collected_stools, \n on=['age_group', 'year'])\n .merge(outpatient_n_mean.reset_index(), \n on=['age_group'], \n how='left')\n .merge(pd.DataFrame(eligible_counts).reset_index(), \n on=['age_group', 'year']))\nastro_data",
"execution_count": 102,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 102,
"data": {
"text/plain": " age_group year cases stool_collected enrolled n eligible\n0 0 0 2 79.0 86 1427 149\n1 0 1 4 79.0 95 1427 150\n2 0 2 1 85.0 94 1427 153\n3 1 0 8 93.0 101 1544 149\n4 1 1 8 78.0 90 1544 129\n5 1 2 2 73.0 85 1544 139\n6 2 0 12 92.0 120 4376 204\n7 2 1 8 82.0 119 4376 187\n8 2 2 4 76.0 116 4376 192\n9 3 0 6 115.0 152 9237 263\n10 3 1 2 84.0 124 9237 211\n11 3 2 1 66.0 92 9237 182",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>age_group</th>\n <th>year</th>\n <th>cases</th>\n <th>stool_collected</th>\n <th>enrolled</th>\n <th>n</th>\n <th>eligible</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>0</td>\n <td>2</td>\n <td>79.0</td>\n <td>86</td>\n <td>1427</td>\n <td>149</td>\n </tr>\n <tr>\n <th>1</th>\n <td>0</td>\n <td>1</td>\n <td>4</td>\n <td>79.0</td>\n <td>95</td>\n <td>1427</td>\n <td>150</td>\n </tr>\n <tr>\n <th>2</th>\n <td>0</td>\n <td>2</td>\n <td>1</td>\n <td>85.0</td>\n <td>94</td>\n <td>1427</td>\n <td>153</td>\n </tr>\n <tr>\n <th>3</th>\n <td>1</td>\n <td>0</td>\n <td>8</td>\n <td>93.0</td>\n <td>101</td>\n <td>1544</td>\n <td>149</td>\n </tr>\n <tr>\n <th>4</th>\n <td>1</td>\n <td>1</td>\n <td>8</td>\n <td>78.0</td>\n <td>90</td>\n <td>1544</td>\n <td>129</td>\n </tr>\n <tr>\n <th>5</th>\n <td>1</td>\n <td>2</td>\n <td>2</td>\n <td>73.0</td>\n <td>85</td>\n <td>1544</td>\n <td>139</td>\n </tr>\n <tr>\n <th>6</th>\n <td>2</td>\n <td>0</td>\n <td>12</td>\n <td>92.0</td>\n <td>120</td>\n <td>4376</td>\n <td>204</td>\n </tr>\n <tr>\n <th>7</th>\n <td>2</td>\n <td>1</td>\n <td>8</td>\n <td>82.0</td>\n <td>119</td>\n <td>4376</td>\n <td>187</td>\n </tr>\n <tr>\n <th>8</th>\n <td>2</td>\n <td>2</td>\n <td>4</td>\n <td>76.0</td>\n <td>116</td>\n <td>4376</td>\n <td>192</td>\n </tr>\n <tr>\n <th>9</th>\n <td>3</td>\n <td>0</td>\n <td>6</td>\n <td>115.0</td>\n <td>152</td>\n <td>9237</td>\n <td>263</td>\n </tr>\n <tr>\n <th>10</th>\n <td>3</td>\n <td>1</td>\n <td>2</td>\n <td>84.0</td>\n <td>124</td>\n <td>9237</td>\n <td>211</td>\n </tr>\n <tr>\n <th>11</th>\n <td>3</td>\n <td>2</td>\n <td>1</td>\n <td>66.0</td>\n <td>92</td>\n <td>9237</td>\n <td>182</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "sapo_cases = (rotavirus_data[(rotavirus_data.sapovirus==1) & (rotavirus_data.setting==OUTPATIENT)]\n .groupby(['age_group', 'year'])[['stool_collected']].count())\nsapo_cases.columns = ['cases']\nsapo_cases = sapo_cases.reset_index()",
"execution_count": 103,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "sapo_data = (sapo_cases.merge(collected_stools, \n on=['age_group', 'year'])\n .merge(outpatient_n_mean.reset_index(), \n on=['age_group'], \n how='left')\n .merge(pd.DataFrame(eligible_counts).reset_index(), \n on=['age_group', 'year']))\nsapo_data.head(10)",
"execution_count": 104,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 104,
"data": {
"text/plain": " age_group year cases stool_collected enrolled n eligible\n0 0 0 4 79.0 86 1427 149\n1 0 1 12 79.0 95 1427 150\n2 0 2 5 85.0 94 1427 153\n3 1 0 17 93.0 101 1544 149\n4 1 1 13 78.0 90 1544 129\n5 1 2 8 73.0 85 1544 139\n6 2 0 10 92.0 120 4376 204\n7 2 1 12 82.0 119 4376 187\n8 2 2 4 76.0 116 4376 192\n9 3 0 10 115.0 152 9237 263",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>age_group</th>\n <th>year</th>\n <th>cases</th>\n <th>stool_collected</th>\n <th>enrolled</th>\n <th>n</th>\n <th>eligible</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>0</td>\n <td>4</td>\n <td>79.0</td>\n <td>86</td>\n <td>1427</td>\n <td>149</td>\n </tr>\n <tr>\n <th>1</th>\n <td>0</td>\n <td>1</td>\n <td>12</td>\n <td>79.0</td>\n <td>95</td>\n <td>1427</td>\n <td>150</td>\n </tr>\n <tr>\n <th>2</th>\n <td>0</td>\n <td>2</td>\n <td>5</td>\n <td>85.0</td>\n <td>94</td>\n <td>1427</td>\n <td>153</td>\n </tr>\n <tr>\n <th>3</th>\n <td>1</td>\n <td>0</td>\n <td>17</td>\n <td>93.0</td>\n <td>101</td>\n <td>1544</td>\n <td>149</td>\n </tr>\n <tr>\n <th>4</th>\n <td>1</td>\n <td>1</td>\n <td>13</td>\n <td>78.0</td>\n <td>90</td>\n <td>1544</td>\n <td>129</td>\n </tr>\n <tr>\n <th>5</th>\n <td>1</td>\n <td>2</td>\n <td>8</td>\n <td>73.0</td>\n <td>85</td>\n <td>1544</td>\n <td>139</td>\n </tr>\n <tr>\n <th>6</th>\n <td>2</td>\n <td>0</td>\n <td>10</td>\n <td>92.0</td>\n <td>120</td>\n <td>4376</td>\n <td>204</td>\n </tr>\n <tr>\n <th>7</th>\n <td>2</td>\n <td>1</td>\n <td>12</td>\n <td>82.0</td>\n <td>119</td>\n <td>4376</td>\n <td>187</td>\n </tr>\n <tr>\n <th>8</th>\n <td>2</td>\n <td>2</td>\n <td>4</td>\n <td>76.0</td>\n <td>116</td>\n <td>4376</td>\n <td>192</td>\n </tr>\n <tr>\n <th>9</th>\n <td>3</td>\n <td>0</td>\n <td>10</td>\n <td>115.0</td>\n <td>152</td>\n <td>9237</td>\n <td>263</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rota_cases = (rotavirus_data[(rotavirus_data.rotavirus==1) & (rotavirus_data.setting==OUTPATIENT)]\n .groupby(['age_group', 'year'])[['stool_collected']].count())\nrota_cases.columns = ['cases']\nrota_cases = rota_cases.reset_index()",
"execution_count": 105,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rota_data = (rota_cases.merge(collected_stools, \n on=['age_group', 'year'])\n .merge(outpatient_n_mean.reset_index(), \n on=['age_group'], \n how='left')\n .merge(pd.DataFrame(eligible_counts).reset_index(), \n on=['age_group', 'year']))\nrota_data.head(10)",
"execution_count": 106,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 106,
"data": {
"text/plain": " age_group year cases stool_collected enrolled n eligible\n0 0 0 9 79.0 86 1427 149\n1 0 1 4 79.0 95 1427 150\n2 0 2 3 85.0 94 1427 153\n3 1 0 11 93.0 101 1544 149\n4 1 1 9 78.0 90 1544 129\n5 1 2 10 73.0 85 1544 139\n6 2 0 13 92.0 120 4376 204\n7 2 1 3 82.0 119 4376 187\n8 2 2 8 76.0 116 4376 192\n9 3 0 6 115.0 152 9237 263",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>age_group</th>\n <th>year</th>\n <th>cases</th>\n <th>stool_collected</th>\n <th>enrolled</th>\n <th>n</th>\n <th>eligible</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>0</td>\n <td>9</td>\n <td>79.0</td>\n <td>86</td>\n <td>1427</td>\n <td>149</td>\n </tr>\n <tr>\n <th>1</th>\n <td>0</td>\n <td>1</td>\n <td>4</td>\n <td>79.0</td>\n <td>95</td>\n <td>1427</td>\n <td>150</td>\n </tr>\n <tr>\n <th>2</th>\n <td>0</td>\n <td>2</td>\n <td>3</td>\n <td>85.0</td>\n <td>94</td>\n <td>1427</td>\n <td>153</td>\n </tr>\n <tr>\n <th>3</th>\n <td>1</td>\n <td>0</td>\n <td>11</td>\n <td>93.0</td>\n <td>101</td>\n <td>1544</td>\n <td>149</td>\n </tr>\n <tr>\n <th>4</th>\n <td>1</td>\n <td>1</td>\n <td>9</td>\n <td>78.0</td>\n <td>90</td>\n <td>1544</td>\n <td>129</td>\n </tr>\n <tr>\n <th>5</th>\n <td>1</td>\n <td>2</td>\n <td>10</td>\n <td>73.0</td>\n <td>85</td>\n <td>1544</td>\n <td>139</td>\n </tr>\n <tr>\n <th>6</th>\n <td>2</td>\n <td>0</td>\n <td>13</td>\n <td>92.0</td>\n <td>120</td>\n <td>4376</td>\n <td>204</td>\n </tr>\n <tr>\n <th>7</th>\n <td>2</td>\n <td>1</td>\n <td>3</td>\n <td>82.0</td>\n <td>119</td>\n <td>4376</td>\n <td>187</td>\n </tr>\n <tr>\n <th>8</th>\n <td>2</td>\n <td>2</td>\n <td>8</td>\n <td>76.0</td>\n <td>116</td>\n <td>4376</td>\n <td>192</td>\n </tr>\n <tr>\n <th>9</th>\n <td>3</td>\n <td>0</td>\n <td>6</td>\n <td>115.0</td>\n <td>152</td>\n <td>9237</td>\n <td>263</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "noro_cases = (rotavirus_data[(rotavirus_data.norovirus==1) & (rotavirus_data.setting==OUTPATIENT)]\n .groupby(['age_group', 'year'])[['stool_collected']].count())\nnoro_cases.columns = ['cases']\nnoro_cases = noro_cases.reset_index()",
"execution_count": 108,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "noro_data = (noro_cases.merge(collected_stools, \n on=['age_group', 'year'])\n .merge(outpatient_n_mean.reset_index(), \n on=['age_group'], \n how='left')\n .merge(pd.DataFrame(eligible_counts).reset_index(), \n on=['age_group', 'year']))\nnoro_data.head(10)",
"execution_count": 109,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 109,
"data": {
"text/plain": " age_group year cases stool_collected enrolled n eligible\n0 0 0 16 79.0 86 1427 149\n1 0 1 22 79.0 95 1427 150\n2 0 2 29 85.0 94 1427 153\n3 1 0 18 93.0 101 1544 149\n4 1 1 21 78.0 90 1544 129\n5 1 2 26 73.0 85 1544 139\n6 2 0 16 92.0 120 4376 204\n7 2 1 18 82.0 119 4376 187\n8 2 2 20 76.0 116 4376 192\n9 3 0 16 115.0 152 9237 263",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>age_group</th>\n <th>year</th>\n <th>cases</th>\n <th>stool_collected</th>\n <th>enrolled</th>\n <th>n</th>\n <th>eligible</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>0</td>\n <td>16</td>\n <td>79.0</td>\n <td>86</td>\n <td>1427</td>\n <td>149</td>\n </tr>\n <tr>\n <th>1</th>\n <td>0</td>\n <td>1</td>\n <td>22</td>\n <td>79.0</td>\n <td>95</td>\n <td>1427</td>\n <td>150</td>\n </tr>\n <tr>\n <th>2</th>\n <td>0</td>\n <td>2</td>\n <td>29</td>\n <td>85.0</td>\n <td>94</td>\n <td>1427</td>\n <td>153</td>\n </tr>\n <tr>\n <th>3</th>\n <td>1</td>\n <td>0</td>\n <td>18</td>\n <td>93.0</td>\n <td>101</td>\n <td>1544</td>\n <td>149</td>\n </tr>\n <tr>\n <th>4</th>\n <td>1</td>\n <td>1</td>\n <td>21</td>\n <td>78.0</td>\n <td>90</td>\n <td>1544</td>\n <td>129</td>\n </tr>\n <tr>\n <th>5</th>\n <td>1</td>\n <td>2</td>\n <td>26</td>\n <td>73.0</td>\n <td>85</td>\n <td>1544</td>\n <td>139</td>\n </tr>\n <tr>\n <th>6</th>\n <td>2</td>\n <td>0</td>\n <td>16</td>\n <td>92.0</td>\n <td>120</td>\n <td>4376</td>\n <td>204</td>\n </tr>\n <tr>\n <th>7</th>\n <td>2</td>\n <td>1</td>\n <td>18</td>\n <td>82.0</td>\n <td>119</td>\n <td>4376</td>\n <td>187</td>\n </tr>\n <tr>\n <th>8</th>\n <td>2</td>\n <td>2</td>\n <td>20</td>\n <td>76.0</td>\n <td>116</td>\n <td>4376</td>\n <td>192</td>\n </tr>\n <tr>\n <th>9</th>\n <td>3</td>\n <td>0</td>\n <td>16</td>\n <td>115.0</td>\n <td>152</td>\n <td>9237</td>\n <td>263</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "virus_totals = pd.concat([astro_data.assign(virus='astrovirus'),\n noro_data.assign(virus='norovirus'),\n rota_data.assign(virus='rotavirus'),\n sapo_data.assign(virus='sapovirus')]).reset_index()\nvirus_totals['cases'] = virus_totals.cases.astype(int)\nvirus_totals['n'] = virus_totals.n.astype(int)",
"execution_count": 110,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Outpatient virus rate model"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "virus_lookup = {0:'norovirus',\n 1:'rotavirus',\n 2:'sapovirus',\n 3:'astrovirus'}",
"execution_count": 111,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "virus_outpatient_data = (virus_totals.replace({'virus': virus_lookup}))",
"execution_count": 112,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "cases, enrolled, n = virus_outpatient_data[['cases', 'enrolled', 'n']].values.T",
"execution_count": 113,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "virus_outpatient_under_5 = virus_outpatient_data[virus_outpatient_data.age_group<3].drop('index', axis=1)",
"execution_count": 114,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "virus_outpatient_pooled = virus_outpatient_under_5.groupby(['virus', 'year']).agg({'cases':sum, 'stool_collected':sum,\n 'enrolled':sum, 'n':sum, 'eligible':sum}).reset_index()",
"execution_count": 117,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "virus_outpatient_pooled['age_group'] = 3\nvirus_outpatient_pooled[virus_outpatient_under_5.columns]",
"execution_count": 118,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 118,
"data": {
"text/plain": " age_group year cases stool_collected enrolled n eligible \\\n0 3 0 22 264.0 307 7347 502 \n1 3 1 20 239.0 304 7347 466 \n2 3 2 7 234.0 295 7347 484 \n3 3 0 50 264.0 307 7347 502 \n4 3 1 61 239.0 304 7347 466 \n5 3 2 75 234.0 295 7347 484 \n6 3 0 33 264.0 307 7347 502 \n7 3 1 16 239.0 304 7347 466 \n8 3 2 21 234.0 295 7347 484 \n9 3 0 31 264.0 307 7347 502 \n10 3 1 37 239.0 304 7347 466 \n11 3 2 17 234.0 295 7347 484 \n\n virus \n0 astrovirus \n1 astrovirus \n2 astrovirus \n3 norovirus \n4 norovirus \n5 norovirus \n6 rotavirus \n7 rotavirus \n8 rotavirus \n9 sapovirus \n10 sapovirus \n11 sapovirus ",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>age_group</th>\n <th>year</th>\n <th>cases</th>\n <th>stool_collected</th>\n <th>enrolled</th>\n <th>n</th>\n <th>eligible</th>\n <th>virus</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>3</td>\n <td>0</td>\n <td>22</td>\n <td>264.0</td>\n <td>307</td>\n <td>7347</td>\n <td>502</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>1</th>\n <td>3</td>\n <td>1</td>\n <td>20</td>\n <td>239.0</td>\n <td>304</td>\n <td>7347</td>\n <td>466</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>2</th>\n <td>3</td>\n <td>2</td>\n <td>7</td>\n <td>234.0</td>\n <td>295</td>\n <td>7347</td>\n <td>484</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>3</th>\n <td>3</td>\n <td>0</td>\n <td>50</td>\n <td>264.0</td>\n <td>307</td>\n <td>7347</td>\n <td>502</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>4</th>\n <td>3</td>\n <td>1</td>\n <td>61</td>\n <td>239.0</td>\n <td>304</td>\n <td>7347</td>\n <td>466</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>5</th>\n <td>3</td>\n <td>2</td>\n <td>75</td>\n <td>234.0</td>\n <td>295</td>\n <td>7347</td>\n <td>484</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>6</th>\n <td>3</td>\n <td>0</td>\n <td>33</td>\n <td>264.0</td>\n <td>307</td>\n <td>7347</td>\n <td>502</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>7</th>\n <td>3</td>\n <td>1</td>\n <td>16</td>\n <td>239.0</td>\n <td>304</td>\n <td>7347</td>\n <td>466</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>8</th>\n <td>3</td>\n <td>2</td>\n <td>21</td>\n <td>234.0</td>\n <td>295</td>\n <td>7347</td>\n <td>484</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>9</th>\n <td>3</td>\n <td>0</td>\n <td>31</td>\n <td>264.0</td>\n <td>307</td>\n <td>7347</td>\n <td>502</td>\n <td>sapovirus</td>\n </tr>\n <tr>\n <th>10</th>\n <td>3</td>\n <td>1</td>\n <td>37</td>\n <td>239.0</td>\n <td>304</td>\n <td>7347</td>\n <td>466</td>\n <td>sapovirus</td>\n </tr>\n <tr>\n <th>11</th>\n <td>3</td>\n <td>2</td>\n <td>17</td>\n <td>234.0</td>\n <td>295</td>\n <td>7347</td>\n <td>484</td>\n <td>sapovirus</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "virus_outpatient_5_over = (virus_outpatient_data[virus_outpatient_data.age_group==3]\n .drop('index', axis=1)\n .groupby(['virus', 'year'])\n .agg({'cases':sum, 'stool_collected':sum,\n 'enrolled':sum, 'n':sum, 'eligible':sum})\n .reset_index())",
"execution_count": 119,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "virus_outpatient_5_over['age_group'] = 4\nvirus_outpatient_5_over[virus_outpatient_under_5.columns]",
"execution_count": 120,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 120,
"data": {
"text/plain": " age_group year cases stool_collected enrolled n eligible \\\n0 4 0 6 115.0 152 9237 263 \n1 4 1 2 84.0 124 9237 211 \n2 4 2 1 66.0 92 9237 182 \n3 4 0 16 115.0 152 9237 263 \n4 4 1 15 84.0 124 9237 211 \n5 4 2 20 66.0 92 9237 182 \n6 4 0 6 115.0 152 9237 263 \n7 4 1 3 84.0 124 9237 211 \n8 4 2 4 66.0 92 9237 182 \n9 4 0 10 115.0 152 9237 263 \n10 4 1 8 84.0 124 9237 211 \n11 4 2 2 66.0 92 9237 182 \n\n virus \n0 astrovirus \n1 astrovirus \n2 astrovirus \n3 norovirus \n4 norovirus \n5 norovirus \n6 rotavirus \n7 rotavirus \n8 rotavirus \n9 sapovirus \n10 sapovirus \n11 sapovirus ",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>age_group</th>\n <th>year</th>\n <th>cases</th>\n <th>stool_collected</th>\n <th>enrolled</th>\n <th>n</th>\n <th>eligible</th>\n <th>virus</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>4</td>\n <td>0</td>\n <td>6</td>\n <td>115.0</td>\n <td>152</td>\n <td>9237</td>\n <td>263</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>1</th>\n <td>4</td>\n <td>1</td>\n <td>2</td>\n <td>84.0</td>\n <td>124</td>\n <td>9237</td>\n <td>211</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>2</th>\n <td>4</td>\n <td>2</td>\n <td>1</td>\n <td>66.0</td>\n <td>92</td>\n <td>9237</td>\n <td>182</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>3</th>\n <td>4</td>\n <td>0</td>\n <td>16</td>\n <td>115.0</td>\n <td>152</td>\n <td>9237</td>\n <td>263</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>4</th>\n <td>4</td>\n <td>1</td>\n <td>15</td>\n <td>84.0</td>\n <td>124</td>\n <td>9237</td>\n <td>211</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>5</th>\n <td>4</td>\n <td>2</td>\n <td>20</td>\n <td>66.0</td>\n <td>92</td>\n <td>9237</td>\n <td>182</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>6</th>\n <td>4</td>\n <td>0</td>\n <td>6</td>\n <td>115.0</td>\n <td>152</td>\n <td>9237</td>\n <td>263</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>7</th>\n <td>4</td>\n <td>1</td>\n <td>3</td>\n <td>84.0</td>\n <td>124</td>\n <td>9237</td>\n <td>211</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>8</th>\n <td>4</td>\n <td>2</td>\n <td>4</td>\n <td>66.0</td>\n <td>92</td>\n <td>9237</td>\n <td>182</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>9</th>\n <td>4</td>\n <td>0</td>\n <td>10</td>\n <td>115.0</td>\n <td>152</td>\n <td>9237</td>\n <td>263</td>\n <td>sapovirus</td>\n </tr>\n <tr>\n <th>10</th>\n <td>4</td>\n <td>1</td>\n <td>8</td>\n <td>84.0</td>\n <td>124</td>\n <td>9237</td>\n <td>211</td>\n <td>sapovirus</td>\n </tr>\n <tr>\n <th>11</th>\n <td>4</td>\n <td>2</td>\n <td>2</td>\n <td>66.0</td>\n <td>92</td>\n <td>9237</td>\n <td>182</td>\n <td>sapovirus</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "virus_outpatient_merged = pd.concat([virus_outpatient_under_5, \n virus_outpatient_pooled[virus_outpatient_under_5.columns],\n virus_outpatient_5_over[virus_outpatient_under_5.columns]])",
"execution_count": 121,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "with Model() as virus_outpatient_model:\n \n groups = virus_outpatient_merged.shape[0]\n \n # Probability of stool collection\n ψ = Beta('ψ', 1, 1)\n outpatient_enrolled = (rotavirus_data.setting==OUTPATIENT).sum()\n collected = rotavirus_data[rotavirus_data.setting==OUTPATIENT].stool_collected.sum()\n stool = Binomial('stool', n=outpatient_enrolled, p=ψ, observed=collected)\n\n cases, enrolled, n, eligible = virus_outpatient_merged[['cases', 'enrolled', 'n', 'eligible']].values.T\n \n # Adjust for enrollment\n enrollment_rate = Beta('p_enrolled', 1, 1, shape=groups)\n enrolled_cases = Binomial('enrolled_cases', eligible, enrollment_rate, observed=enrolled)\n \n eligible_cases = Uniform('eligible_cases', lower=cases, upper=eligible, \n shape=groups)\n \n p = monitoring_rate[OUTPATIENT]*ψ*enrollment_rate\n\n # Estimate total VUMC cases in setting\n eligible_cases_likelihood = Binomial('eligible_cases_likelihood', \n n=eligible_cases, \n p=p,\n observed=cases)\n \n\n π = Beta('π', 1, 10, shape=groups)\n\n # Data likeihood\n virus_out_obs = Potential('virus_out_obs', \n Binomial.dist(n=n, p=π).logp(eligible_cases).sum())\n \n",
"execution_count": 124,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "with virus_outpatient_model:\n virus_outpatient_trace = sample(iterations, tune=tune,\n njobs=2, random_seed=seed_numbers)",
"execution_count": 125,
"outputs": [
{
"output_type": "stream",
"text": "Auto-assigning NUTS sampler...\nInitializing NUTS using jitter+adapt_diag...\n100%|██████████| 2000/2000 [00:17<00:00, 116.75it/s]\n",
"name": "stderr"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "MCMC diagnostic plot"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "energyplot(virus_outpatient_trace)",
"execution_count": 157,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 157,
"data": {
"text/plain": "<matplotlib.axes._subplots.AxesSubplot at 0x13ad75668>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x13ad6f6a0>",
"image/png": "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\nyGUAAAAASUVORK5CYII=\n"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Posterior distribution of stool sampling rate"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "traceplot(virus_outpatient_trace, varnames=['ψ'])",
"execution_count": 126,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 126,
"data": {
"text/plain": "array([[<matplotlib.axes._subplots.AxesSubplot object at 0x1379f87b8>,\n <matplotlib.axes._subplots.AxesSubplot object at 0x137a310b8>]], dtype=object)"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x1379fc390>",
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Outpatient virus rates, plotted and tabulated"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "year_labels = ['2012/13','2013/14','2014/15']\npd.DataFrame(list(itertools.product(age_labels + ['<5', '5+'], year_labels)), columns=['age', 'year'])",
"execution_count": 127,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 127,
"data": {
"text/plain": " age year\n0 <5 2012/13\n1 <5 2013/14\n2 <5 2014/15\n3 5+ 2012/13\n4 5+ 2013/14\n5 5+ 2014/15\n6 <5 2012/13\n7 <5 2013/14\n8 <5 2014/15\n9 5+ 2012/13\n10 5+ 2013/14\n11 5+ 2014/15",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>age</th>\n <th>year</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>&lt;5</td>\n <td>2012/13</td>\n </tr>\n <tr>\n <th>1</th>\n <td>&lt;5</td>\n <td>2013/14</td>\n </tr>\n <tr>\n <th>2</th>\n <td>&lt;5</td>\n <td>2014/15</td>\n </tr>\n <tr>\n <th>3</th>\n <td>5+</td>\n <td>2012/13</td>\n </tr>\n <tr>\n <th>4</th>\n <td>5+</td>\n <td>2013/14</td>\n </tr>\n <tr>\n <th>5</th>\n <td>5+</td>\n <td>2014/15</td>\n </tr>\n <tr>\n <th>6</th>\n <td>&lt;5</td>\n <td>2012/13</td>\n </tr>\n <tr>\n <th>7</th>\n <td>&lt;5</td>\n <td>2013/14</td>\n </tr>\n <tr>\n <th>8</th>\n <td>&lt;5</td>\n <td>2014/15</td>\n </tr>\n <tr>\n <th>9</th>\n <td>5+</td>\n <td>2012/13</td>\n </tr>\n <tr>\n <th>10</th>\n <td>5+</td>\n <td>2013/14</td>\n </tr>\n <tr>\n <th>11</th>\n <td>5+</td>\n <td>2014/15</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_sample_melted = pd.melt(pd.DataFrame(virus_outpatient_trace['π']))",
"execution_count": 128,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_virus_samples = (virus_outpatient_merged.drop(['enrolled', 'stool_collected', 'cases'],\n axis=1).reset_index(drop=True)\n .merge(outpatient_sample_melted, left_index=True, right_on='variable')\n .replace({'age_group':{0:'<1', 1:'1', 2:'2-4', 3:'<5', 4:'5+'},\n 'year':{0:'2012/13', 1:'2013/14', 2:'2014/15'},\n 'virus':virus_lookup})\n .rename(columns={'age_group':'age group'}))",
"execution_count": 129,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_rateplot = sns.factorplot(x=\"year\", y=\"rate\", hue=\"age group\", col='virus', \n data=outpatient_virus_samples.assign(rate=outpatient_virus_samples.value*rate_factor),\n palette=\"Blues\", size=5, width=0.5, kind='box', linewidth=0.6, col_wrap=2,\n fliersize=0)\n\noutpatient_rateplot.despine(left=True)",
"execution_count": 130,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 130,
"data": {
"text/plain": "<seaborn.axisgrid.FacetGrid at 0x12f2a7b38>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x131fca4a8>",
"image/png": "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\n6dxzz/3onXfe6WrW9Bi5c+7jhqFDhx4oLCysl6Rx48Z9tGrVqi6xvMd0CgCvSxphZsPMrJOkyyU9\n3cZrAAAAgLiZP39+v5KSkoMVFRWVP/rRjz6+dKakpOTAihUrekjS8uXLPx4ENnLkyP3f+MY3trz2\n2muVr732WuV77723KvIyHEnq16/f4bfeequzJL388stNBpDl5uY6SSooKKjfuXNn3saNG/Mk6aWX\nXuo5cuTI/QMGDKivq6vr1NDQoB07duR88MEHH88eUlNT07muri43WG6PkSNHHojlPabNJUDOuXoz\nu1HSHxWeBnSBc25VissCAACARyZNmrT7iiuuKH799de7n3HGGR9fyx8KhWqnTJlS/Otf/7rf6NGj\n9+Xn5ztJuuuuu2qvueaaIQsXLhzgnNPIkSP3P/roo+sjlzlv3rz1l19+efHAgQMPDxo06HCnTp1a\nXHqZm5ur+++/v2bixIkl+fn5bvDgwYd++MMfbuzatau78MILd4wePfqUU089dV9BQcHhxtcUFRUd\n+rd/+7cT1q5d26W0tHT/5Zdf3ublP1IaDQKOk6x6MwDQimMeBNwM204AvmhzEHBr6uvrZWbKzc3V\nb3/7214//vGPj3vhhReqYlnpwYMHrXPnzk6SvvnNbxb179+/PhQKbe7YWwirrKzsFDk4OJpMGAQM\nAAAApKXa2tq8iy++eLiZqaGhwX72s5+tjfW1S5cu7TlnzpzCI0eOWL9+/Q4/9dRTHySw1DZxBgAA\nMg9nAACgYzp8BiATtXYGIJ0GAQMAAABIMAIAAAAA4BECAAAAAOARAgAAAADgEWYBAgAAACI0NDSo\nurq6c9s9Y1dcXHwwNzf3mJZRXl4+8Kc//emg9evXd960adObjXcBbi8CAAAAABChurq681ur1506\n8LjCuCxv65ZaSVo5YsSIg+197YEDB+zQoUPWq1evI+eee+6eyZMn77rgggtKj6WerAoAZvZHSQNS\nXUccDZa0KdVF4Kj4GWWGbPs5Peec+1y8FpaF204p+37m2YifUfrLxp9RzNvPgccVqrDo+ETX06o3\n3nijy0MPPTTg2Wef7fvkk09WnX322fvPPvvs/fFYdlYFgHj+QUwHZuacc4NTXQdax88oM/BzOrps\n23ZK/MwzAT+j9MfPKPl2796d8+ijj/ZdvHjxAOecXXnllR/ec889q/r27XsknuvJqgAAAAAAZKrB\n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\nAECSJElqkf8DQHDX/dYYnxgAAAAASUVORK5CYII=\n"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_virus_labels = (virus_outpatient_merged.drop(['enrolled', 'n', 'stool_collected', 'cases', 'eligible'],\n axis=1).reset_index(drop=True)\n .replace({'year':{0:'2012/13', 1:'2013/14', 2:'2014/15'},\n 'virus':virus_lookup})\n .rename(columns={'age_group':'age group'}))",
"execution_count": 134,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "virus_outpatient_table = generate_table(virus_outpatient_trace, outpatient_virus_labels, \n index=['age group', 'year'], varnames=['π'],\n columns=['virus']).sort_index()\nvirus_outpatient_table.to_excel('results/virus_outpatient_table.xlsx')",
"execution_count": 135,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "virus_outpatient_table",
"execution_count": 138,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 138,
"data": {
"text/plain": "virus astrovirus norovirus \\\nage group year \n0 2012/13 6.38 (0.83, 13.40) 36.13 (20.62, 54.60) \n 2013/14 9.72 (2.46, 18.49) 44.44 (27.15, 62.63) \n 2014/15 4.16 (0.33, 10.01) 60.31 (37.80, 83.68) \n1 2012/13 15.23 (5.91, 25.60) 32.15 (17.22, 47.45) \n 2013/14 14.82 (5.95, 24.78) 36.00 (22.01, 52.57) \n 2014/15 5.65 (0.50, 11.85) 50.22 (32.06, 71.74) \n2 2012/13 8.96 (4.64, 13.77) 11.72 (6.35, 17.79) \n 2013/14 5.76 (2.34, 9.58) 12.10 (7.25, 18.22) \n 2014/15 3.37 (0.70, 6.20) 14.15 (8.65, 20.97) \n3 2012/13 8.99 (5.32, 12.84) 19.97 (14.90, 25.69) \n 2013/14 7.76 (4.71, 11.20) 23.02 (17.17, 29.29) \n 2014/15 3.18 (1.09, 5.39) 29.89 (23.62, 37.16) \n4 2012/13 2.36 (0.74, 4.03) 5.66 (2.94, 8.39) \n 2013/14 1.00 (0.14, 2.13) 5.20 (2.93, 8.00) \n 2014/15 0.79 (0.05, 1.88) 8.04 (4.49, 11.54) \n\nvirus rotavirus sapovirus \nage group year \n0 2012/13 21.27 (8.97, 34.35) 10.66 (3.35, 20.62) \n 2013/14 9.85 (2.31, 18.54) 25.30 (12.59, 39.93) \n 2014/15 8.08 (1.78, 16.27) 11.92 (3.68, 21.96) \n1 2012/13 20.13 (9.33, 31.95) 30.39 (16.16, 44.69) \n 2013/14 16.42 (7.33, 26.62) 22.93 (11.78, 36.72) \n 2014/15 20.44 (9.05, 32.96) 16.83 (6.13, 28.55) \n2 2012/13 9.63 (5.06, 14.90) 7.56 (3.05, 12.01) \n 2013/14 2.55 (0.49, 5.14) 8.26 (3.85, 12.47) \n 2014/15 6.05 (2.39, 10.17) 3.38 (0.91, 6.52) \n3 2012/13 13.43 (9.05, 18.24) 12.60 (8.29, 16.97) \n 2013/14 6.28 (3.47, 9.33) 14.02 (9.72, 18.40) \n 2014/15 8.71 (5.36, 12.62) 7.15 (4.24, 10.96) \n4 2012/13 2.34 (0.93, 4.16) 3.66 (1.55, 5.80) \n 2013/14 1.32 (0.29, 2.59) 2.94 (1.29, 5.04) \n 2014/15 1.89 (0.58, 3.66) 1.17 (0.15, 2.49) ",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>virus</th>\n <th>astrovirus</th>\n <th>norovirus</th>\n <th>rotavirus</th>\n <th>sapovirus</th>\n </tr>\n <tr>\n <th>age group</th>\n <th>year</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th rowspan=\"3\" valign=\"top\">0</th>\n <th>2012/13</th>\n <td>6.38 (0.83, 13.40)</td>\n <td>36.13 (20.62, 54.60)</td>\n <td>21.27 (8.97, 34.35)</td>\n <td>10.66 (3.35, 20.62)</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>9.72 (2.46, 18.49)</td>\n <td>44.44 (27.15, 62.63)</td>\n <td>9.85 (2.31, 18.54)</td>\n <td>25.30 (12.59, 39.93)</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>4.16 (0.33, 10.01)</td>\n <td>60.31 (37.80, 83.68)</td>\n <td>8.08 (1.78, 16.27)</td>\n <td>11.92 (3.68, 21.96)</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">1</th>\n <th>2012/13</th>\n <td>15.23 (5.91, 25.60)</td>\n <td>32.15 (17.22, 47.45)</td>\n <td>20.13 (9.33, 31.95)</td>\n <td>30.39 (16.16, 44.69)</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>14.82 (5.95, 24.78)</td>\n <td>36.00 (22.01, 52.57)</td>\n <td>16.42 (7.33, 26.62)</td>\n <td>22.93 (11.78, 36.72)</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>5.65 (0.50, 11.85)</td>\n <td>50.22 (32.06, 71.74)</td>\n <td>20.44 (9.05, 32.96)</td>\n <td>16.83 (6.13, 28.55)</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">2</th>\n <th>2012/13</th>\n <td>8.96 (4.64, 13.77)</td>\n <td>11.72 (6.35, 17.79)</td>\n <td>9.63 (5.06, 14.90)</td>\n <td>7.56 (3.05, 12.01)</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>5.76 (2.34, 9.58)</td>\n <td>12.10 (7.25, 18.22)</td>\n <td>2.55 (0.49, 5.14)</td>\n <td>8.26 (3.85, 12.47)</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>3.37 (0.70, 6.20)</td>\n <td>14.15 (8.65, 20.97)</td>\n <td>6.05 (2.39, 10.17)</td>\n <td>3.38 (0.91, 6.52)</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">3</th>\n <th>2012/13</th>\n <td>8.99 (5.32, 12.84)</td>\n <td>19.97 (14.90, 25.69)</td>\n <td>13.43 (9.05, 18.24)</td>\n <td>12.60 (8.29, 16.97)</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>7.76 (4.71, 11.20)</td>\n <td>23.02 (17.17, 29.29)</td>\n <td>6.28 (3.47, 9.33)</td>\n <td>14.02 (9.72, 18.40)</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>3.18 (1.09, 5.39)</td>\n <td>29.89 (23.62, 37.16)</td>\n <td>8.71 (5.36, 12.62)</td>\n <td>7.15 (4.24, 10.96)</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">4</th>\n <th>2012/13</th>\n <td>2.36 (0.74, 4.03)</td>\n <td>5.66 (2.94, 8.39)</td>\n <td>2.34 (0.93, 4.16)</td>\n <td>3.66 (1.55, 5.80)</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>1.00 (0.14, 2.13)</td>\n <td>5.20 (2.93, 8.00)</td>\n <td>1.32 (0.29, 2.59)</td>\n <td>2.94 (1.29, 5.04)</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>0.79 (0.05, 1.88)</td>\n <td>8.04 (4.49, 11.54)</td>\n <td>1.89 (0.58, 3.66)</td>\n <td>1.17 (0.15, 2.49)</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"scrolled": false,
"trusted": true
},
"cell_type": "code",
"source": "virus_outpatient_table.index = virus_outpatient_table.index.set_levels(age_labels + ['<5', '5+'], level=0)",
"execution_count": 140,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "virus_outpatient_table",
"execution_count": 141,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 141,
"data": {
"text/plain": "virus astrovirus norovirus \\\nage group year \n<1 2012/13 6.38 (0.83, 13.40) 36.13 (20.62, 54.60) \n 2013/14 9.72 (2.46, 18.49) 44.44 (27.15, 62.63) \n 2014/15 4.16 (0.33, 10.01) 60.31 (37.80, 83.68) \n1 2012/13 15.23 (5.91, 25.60) 32.15 (17.22, 47.45) \n 2013/14 14.82 (5.95, 24.78) 36.00 (22.01, 52.57) \n 2014/15 5.65 (0.50, 11.85) 50.22 (32.06, 71.74) \n2-4 2012/13 8.96 (4.64, 13.77) 11.72 (6.35, 17.79) \n 2013/14 5.76 (2.34, 9.58) 12.10 (7.25, 18.22) \n 2014/15 3.37 (0.70, 6.20) 14.15 (8.65, 20.97) \n<5 2012/13 8.99 (5.32, 12.84) 19.97 (14.90, 25.69) \n 2013/14 7.76 (4.71, 11.20) 23.02 (17.17, 29.29) \n 2014/15 3.18 (1.09, 5.39) 29.89 (23.62, 37.16) \n5+ 2012/13 2.36 (0.74, 4.03) 5.66 (2.94, 8.39) \n 2013/14 1.00 (0.14, 2.13) 5.20 (2.93, 8.00) \n 2014/15 0.79 (0.05, 1.88) 8.04 (4.49, 11.54) \n\nvirus rotavirus sapovirus \nage group year \n<1 2012/13 21.27 (8.97, 34.35) 10.66 (3.35, 20.62) \n 2013/14 9.85 (2.31, 18.54) 25.30 (12.59, 39.93) \n 2014/15 8.08 (1.78, 16.27) 11.92 (3.68, 21.96) \n1 2012/13 20.13 (9.33, 31.95) 30.39 (16.16, 44.69) \n 2013/14 16.42 (7.33, 26.62) 22.93 (11.78, 36.72) \n 2014/15 20.44 (9.05, 32.96) 16.83 (6.13, 28.55) \n2-4 2012/13 9.63 (5.06, 14.90) 7.56 (3.05, 12.01) \n 2013/14 2.55 (0.49, 5.14) 8.26 (3.85, 12.47) \n 2014/15 6.05 (2.39, 10.17) 3.38 (0.91, 6.52) \n<5 2012/13 13.43 (9.05, 18.24) 12.60 (8.29, 16.97) \n 2013/14 6.28 (3.47, 9.33) 14.02 (9.72, 18.40) \n 2014/15 8.71 (5.36, 12.62) 7.15 (4.24, 10.96) \n5+ 2012/13 2.34 (0.93, 4.16) 3.66 (1.55, 5.80) \n 2013/14 1.32 (0.29, 2.59) 2.94 (1.29, 5.04) \n 2014/15 1.89 (0.58, 3.66) 1.17 (0.15, 2.49) ",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>virus</th>\n <th>astrovirus</th>\n <th>norovirus</th>\n <th>rotavirus</th>\n <th>sapovirus</th>\n </tr>\n <tr>\n <th>age group</th>\n <th>year</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th rowspan=\"3\" valign=\"top\">&lt;1</th>\n <th>2012/13</th>\n <td>6.38 (0.83, 13.40)</td>\n <td>36.13 (20.62, 54.60)</td>\n <td>21.27 (8.97, 34.35)</td>\n <td>10.66 (3.35, 20.62)</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>9.72 (2.46, 18.49)</td>\n <td>44.44 (27.15, 62.63)</td>\n <td>9.85 (2.31, 18.54)</td>\n <td>25.30 (12.59, 39.93)</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>4.16 (0.33, 10.01)</td>\n <td>60.31 (37.80, 83.68)</td>\n <td>8.08 (1.78, 16.27)</td>\n <td>11.92 (3.68, 21.96)</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">1</th>\n <th>2012/13</th>\n <td>15.23 (5.91, 25.60)</td>\n <td>32.15 (17.22, 47.45)</td>\n <td>20.13 (9.33, 31.95)</td>\n <td>30.39 (16.16, 44.69)</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>14.82 (5.95, 24.78)</td>\n <td>36.00 (22.01, 52.57)</td>\n <td>16.42 (7.33, 26.62)</td>\n <td>22.93 (11.78, 36.72)</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>5.65 (0.50, 11.85)</td>\n <td>50.22 (32.06, 71.74)</td>\n <td>20.44 (9.05, 32.96)</td>\n <td>16.83 (6.13, 28.55)</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">2-4</th>\n <th>2012/13</th>\n <td>8.96 (4.64, 13.77)</td>\n <td>11.72 (6.35, 17.79)</td>\n <td>9.63 (5.06, 14.90)</td>\n <td>7.56 (3.05, 12.01)</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>5.76 (2.34, 9.58)</td>\n <td>12.10 (7.25, 18.22)</td>\n <td>2.55 (0.49, 5.14)</td>\n <td>8.26 (3.85, 12.47)</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>3.37 (0.70, 6.20)</td>\n <td>14.15 (8.65, 20.97)</td>\n <td>6.05 (2.39, 10.17)</td>\n <td>3.38 (0.91, 6.52)</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">&lt;5</th>\n <th>2012/13</th>\n <td>8.99 (5.32, 12.84)</td>\n <td>19.97 (14.90, 25.69)</td>\n <td>13.43 (9.05, 18.24)</td>\n <td>12.60 (8.29, 16.97)</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>7.76 (4.71, 11.20)</td>\n <td>23.02 (17.17, 29.29)</td>\n <td>6.28 (3.47, 9.33)</td>\n <td>14.02 (9.72, 18.40)</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>3.18 (1.09, 5.39)</td>\n <td>29.89 (23.62, 37.16)</td>\n <td>8.71 (5.36, 12.62)</td>\n <td>7.15 (4.24, 10.96)</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">5+</th>\n <th>2012/13</th>\n <td>2.36 (0.74, 4.03)</td>\n <td>5.66 (2.94, 8.39)</td>\n <td>2.34 (0.93, 4.16)</td>\n <td>3.66 (1.55, 5.80)</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>1.00 (0.14, 2.13)</td>\n <td>5.20 (2.93, 8.00)</td>\n <td>1.32 (0.29, 2.59)</td>\n <td>2.94 (1.29, 5.04)</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>0.79 (0.05, 1.88)</td>\n <td>8.04 (4.49, 11.54)</td>\n <td>1.89 (0.58, 3.66)</td>\n <td>1.17 (0.15, 2.49)</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "virus_outpatient_table[['astrovirus']]",
"execution_count": 142,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 142,
"data": {
"text/plain": "virus astrovirus\nage group year \n<1 2012/13 6.38 (0.83, 13.40)\n 2013/14 9.72 (2.46, 18.49)\n 2014/15 4.16 (0.33, 10.01)\n1 2012/13 15.23 (5.91, 25.60)\n 2013/14 14.82 (5.95, 24.78)\n 2014/15 5.65 (0.50, 11.85)\n2-4 2012/13 8.96 (4.64, 13.77)\n 2013/14 5.76 (2.34, 9.58)\n 2014/15 3.37 (0.70, 6.20)\n<5 2012/13 8.99 (5.32, 12.84)\n 2013/14 7.76 (4.71, 11.20)\n 2014/15 3.18 (1.09, 5.39)\n5+ 2012/13 2.36 (0.74, 4.03)\n 2013/14 1.00 (0.14, 2.13)\n 2014/15 0.79 (0.05, 1.88)",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>virus</th>\n <th>astrovirus</th>\n </tr>\n <tr>\n <th>age group</th>\n <th>year</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th rowspan=\"3\" valign=\"top\">&lt;1</th>\n <th>2012/13</th>\n <td>6.38 (0.83, 13.40)</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>9.72 (2.46, 18.49)</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>4.16 (0.33, 10.01)</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">1</th>\n <th>2012/13</th>\n <td>15.23 (5.91, 25.60)</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>14.82 (5.95, 24.78)</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>5.65 (0.50, 11.85)</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">2-4</th>\n <th>2012/13</th>\n <td>8.96 (4.64, 13.77)</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>5.76 (2.34, 9.58)</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>3.37 (0.70, 6.20)</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">&lt;5</th>\n <th>2012/13</th>\n <td>8.99 (5.32, 12.84)</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>7.76 (4.71, 11.20)</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>3.18 (1.09, 5.39)</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">5+</th>\n <th>2012/13</th>\n <td>2.36 (0.74, 4.03)</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>1.00 (0.14, 2.13)</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>0.79 (0.05, 1.88)</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "def create_virus_table(virus_name):\n estimates = virus_outpatient_table[[virus_name]].rename(columns={virus_name:'estimate'})\n virus_data = (virus_outpatient_merged[virus_outpatient_merged.virus==virus_name]\n .set_index(['age_group', 'year']) [['cases', 'stool_collected', 'enrolled', 'n']]\n .set_index(estimates.index))\n return estimates.join(virus_data)",
"execution_count": 143,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "astro_table = create_virus_table('astrovirus')\nastro_table.to_excel('results/outpatient_astro.xlsx')\nastro_table",
"execution_count": 144,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 144,
"data": {
"text/plain": " estimate cases stool_collected enrolled n\nage group year \n<1 2012/13 6.38 (0.83, 13.40) 2 79.0 86 1427\n 2013/14 9.72 (2.46, 18.49) 4 79.0 95 1427\n 2014/15 4.16 (0.33, 10.01) 1 85.0 94 1427\n1 2012/13 15.23 (5.91, 25.60) 8 93.0 101 1544\n 2013/14 14.82 (5.95, 24.78) 8 78.0 90 1544\n 2014/15 5.65 (0.50, 11.85) 2 73.0 85 1544\n2-4 2012/13 8.96 (4.64, 13.77) 12 92.0 120 4376\n 2013/14 5.76 (2.34, 9.58) 8 82.0 119 4376\n 2014/15 3.37 (0.70, 6.20) 4 76.0 116 4376\n<5 2012/13 8.99 (5.32, 12.84) 22 264.0 307 7347\n 2013/14 7.76 (4.71, 11.20) 20 239.0 304 7347\n 2014/15 3.18 (1.09, 5.39) 7 234.0 295 7347\n5+ 2012/13 2.36 (0.74, 4.03) 6 115.0 152 9237\n 2013/14 1.00 (0.14, 2.13) 2 84.0 124 9237\n 2014/15 0.79 (0.05, 1.88) 1 66.0 92 9237",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th></th>\n <th>estimate</th>\n <th>cases</th>\n <th>stool_collected</th>\n <th>enrolled</th>\n <th>n</th>\n </tr>\n <tr>\n <th>age group</th>\n <th>year</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th rowspan=\"3\" valign=\"top\">&lt;1</th>\n <th>2012/13</th>\n <td>6.38 (0.83, 13.40)</td>\n <td>2</td>\n <td>79.0</td>\n <td>86</td>\n <td>1427</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>9.72 (2.46, 18.49)</td>\n <td>4</td>\n <td>79.0</td>\n <td>95</td>\n <td>1427</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>4.16 (0.33, 10.01)</td>\n <td>1</td>\n <td>85.0</td>\n <td>94</td>\n <td>1427</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">1</th>\n <th>2012/13</th>\n <td>15.23 (5.91, 25.60)</td>\n <td>8</td>\n <td>93.0</td>\n <td>101</td>\n <td>1544</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>14.82 (5.95, 24.78)</td>\n <td>8</td>\n <td>78.0</td>\n <td>90</td>\n <td>1544</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>5.65 (0.50, 11.85)</td>\n <td>2</td>\n <td>73.0</td>\n <td>85</td>\n <td>1544</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">2-4</th>\n <th>2012/13</th>\n <td>8.96 (4.64, 13.77)</td>\n <td>12</td>\n <td>92.0</td>\n <td>120</td>\n <td>4376</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>5.76 (2.34, 9.58)</td>\n <td>8</td>\n <td>82.0</td>\n <td>119</td>\n <td>4376</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>3.37 (0.70, 6.20)</td>\n <td>4</td>\n <td>76.0</td>\n <td>116</td>\n <td>4376</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">&lt;5</th>\n <th>2012/13</th>\n <td>8.99 (5.32, 12.84)</td>\n <td>22</td>\n <td>264.0</td>\n <td>307</td>\n <td>7347</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>7.76 (4.71, 11.20)</td>\n <td>20</td>\n <td>239.0</td>\n <td>304</td>\n <td>7347</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>3.18 (1.09, 5.39)</td>\n <td>7</td>\n <td>234.0</td>\n <td>295</td>\n <td>7347</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">5+</th>\n <th>2012/13</th>\n <td>2.36 (0.74, 4.03)</td>\n <td>6</td>\n <td>115.0</td>\n <td>152</td>\n <td>9237</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>1.00 (0.14, 2.13)</td>\n <td>2</td>\n <td>84.0</td>\n <td>124</td>\n <td>9237</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>0.79 (0.05, 1.88)</td>\n <td>1</td>\n <td>66.0</td>\n <td>92</td>\n <td>9237</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "noro_table = create_virus_table('norovirus')\nnoro_table.to_excel('results/outpatient_noro.xlsx')\nnoro_table",
"execution_count": 145,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 145,
"data": {
"text/plain": " estimate cases stool_collected enrolled \\\nage group year \n<1 2012/13 36.13 (20.62, 54.60) 16 79.0 86 \n 2013/14 44.44 (27.15, 62.63) 22 79.0 95 \n 2014/15 60.31 (37.80, 83.68) 29 85.0 94 \n1 2012/13 32.15 (17.22, 47.45) 18 93.0 101 \n 2013/14 36.00 (22.01, 52.57) 21 78.0 90 \n 2014/15 50.22 (32.06, 71.74) 26 73.0 85 \n2-4 2012/13 11.72 (6.35, 17.79) 16 92.0 120 \n 2013/14 12.10 (7.25, 18.22) 18 82.0 119 \n 2014/15 14.15 (8.65, 20.97) 20 76.0 116 \n<5 2012/13 19.97 (14.90, 25.69) 50 264.0 307 \n 2013/14 23.02 (17.17, 29.29) 61 239.0 304 \n 2014/15 29.89 (23.62, 37.16) 75 234.0 295 \n5+ 2012/13 5.66 (2.94, 8.39) 16 115.0 152 \n 2013/14 5.20 (2.93, 8.00) 15 84.0 124 \n 2014/15 8.04 (4.49, 11.54) 20 66.0 92 \n\n n \nage group year \n<1 2012/13 1427 \n 2013/14 1427 \n 2014/15 1427 \n1 2012/13 1544 \n 2013/14 1544 \n 2014/15 1544 \n2-4 2012/13 4376 \n 2013/14 4376 \n 2014/15 4376 \n<5 2012/13 7347 \n 2013/14 7347 \n 2014/15 7347 \n5+ 2012/13 9237 \n 2013/14 9237 \n 2014/15 9237 ",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th></th>\n <th>estimate</th>\n <th>cases</th>\n <th>stool_collected</th>\n <th>enrolled</th>\n <th>n</th>\n </tr>\n <tr>\n <th>age group</th>\n <th>year</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th rowspan=\"3\" valign=\"top\">&lt;1</th>\n <th>2012/13</th>\n <td>36.13 (20.62, 54.60)</td>\n <td>16</td>\n <td>79.0</td>\n <td>86</td>\n <td>1427</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>44.44 (27.15, 62.63)</td>\n <td>22</td>\n <td>79.0</td>\n <td>95</td>\n <td>1427</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>60.31 (37.80, 83.68)</td>\n <td>29</td>\n <td>85.0</td>\n <td>94</td>\n <td>1427</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">1</th>\n <th>2012/13</th>\n <td>32.15 (17.22, 47.45)</td>\n <td>18</td>\n <td>93.0</td>\n <td>101</td>\n <td>1544</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>36.00 (22.01, 52.57)</td>\n <td>21</td>\n <td>78.0</td>\n <td>90</td>\n <td>1544</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>50.22 (32.06, 71.74)</td>\n <td>26</td>\n <td>73.0</td>\n <td>85</td>\n <td>1544</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">2-4</th>\n <th>2012/13</th>\n <td>11.72 (6.35, 17.79)</td>\n <td>16</td>\n <td>92.0</td>\n <td>120</td>\n <td>4376</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>12.10 (7.25, 18.22)</td>\n <td>18</td>\n <td>82.0</td>\n <td>119</td>\n <td>4376</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>14.15 (8.65, 20.97)</td>\n <td>20</td>\n <td>76.0</td>\n <td>116</td>\n <td>4376</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">&lt;5</th>\n <th>2012/13</th>\n <td>19.97 (14.90, 25.69)</td>\n <td>50</td>\n <td>264.0</td>\n <td>307</td>\n <td>7347</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>23.02 (17.17, 29.29)</td>\n <td>61</td>\n <td>239.0</td>\n <td>304</td>\n <td>7347</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>29.89 (23.62, 37.16)</td>\n <td>75</td>\n <td>234.0</td>\n <td>295</td>\n <td>7347</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">5+</th>\n <th>2012/13</th>\n <td>5.66 (2.94, 8.39)</td>\n <td>16</td>\n <td>115.0</td>\n <td>152</td>\n <td>9237</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>5.20 (2.93, 8.00)</td>\n <td>15</td>\n <td>84.0</td>\n <td>124</td>\n <td>9237</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>8.04 (4.49, 11.54)</td>\n <td>20</td>\n <td>66.0</td>\n <td>92</td>\n <td>9237</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "sapo_table = create_virus_table('sapovirus')\nsapo_table.to_excel('results/outpatient_sapo.xlsx')\nsapo_table",
"execution_count": 146,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 146,
"data": {
"text/plain": " estimate cases stool_collected enrolled \\\nage group year \n<1 2012/13 10.66 (3.35, 20.62) 4 79.0 86 \n 2013/14 25.30 (12.59, 39.93) 12 79.0 95 \n 2014/15 11.92 (3.68, 21.96) 5 85.0 94 \n1 2012/13 30.39 (16.16, 44.69) 17 93.0 101 \n 2013/14 22.93 (11.78, 36.72) 13 78.0 90 \n 2014/15 16.83 (6.13, 28.55) 8 73.0 85 \n2-4 2012/13 7.56 (3.05, 12.01) 10 92.0 120 \n 2013/14 8.26 (3.85, 12.47) 12 82.0 119 \n 2014/15 3.38 (0.91, 6.52) 4 76.0 116 \n<5 2012/13 12.60 (8.29, 16.97) 31 264.0 307 \n 2013/14 14.02 (9.72, 18.40) 37 239.0 304 \n 2014/15 7.15 (4.24, 10.96) 17 234.0 295 \n5+ 2012/13 3.66 (1.55, 5.80) 10 115.0 152 \n 2013/14 2.94 (1.29, 5.04) 8 84.0 124 \n 2014/15 1.17 (0.15, 2.49) 2 66.0 92 \n\n n \nage group year \n<1 2012/13 1427 \n 2013/14 1427 \n 2014/15 1427 \n1 2012/13 1544 \n 2013/14 1544 \n 2014/15 1544 \n2-4 2012/13 4376 \n 2013/14 4376 \n 2014/15 4376 \n<5 2012/13 7347 \n 2013/14 7347 \n 2014/15 7347 \n5+ 2012/13 9237 \n 2013/14 9237 \n 2014/15 9237 ",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th></th>\n <th>estimate</th>\n <th>cases</th>\n <th>stool_collected</th>\n <th>enrolled</th>\n <th>n</th>\n </tr>\n <tr>\n <th>age group</th>\n <th>year</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th rowspan=\"3\" valign=\"top\">&lt;1</th>\n <th>2012/13</th>\n <td>10.66 (3.35, 20.62)</td>\n <td>4</td>\n <td>79.0</td>\n <td>86</td>\n <td>1427</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>25.30 (12.59, 39.93)</td>\n <td>12</td>\n <td>79.0</td>\n <td>95</td>\n <td>1427</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>11.92 (3.68, 21.96)</td>\n <td>5</td>\n <td>85.0</td>\n <td>94</td>\n <td>1427</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">1</th>\n <th>2012/13</th>\n <td>30.39 (16.16, 44.69)</td>\n <td>17</td>\n <td>93.0</td>\n <td>101</td>\n <td>1544</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>22.93 (11.78, 36.72)</td>\n <td>13</td>\n <td>78.0</td>\n <td>90</td>\n <td>1544</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>16.83 (6.13, 28.55)</td>\n <td>8</td>\n <td>73.0</td>\n <td>85</td>\n <td>1544</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">2-4</th>\n <th>2012/13</th>\n <td>7.56 (3.05, 12.01)</td>\n <td>10</td>\n <td>92.0</td>\n <td>120</td>\n <td>4376</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>8.26 (3.85, 12.47)</td>\n <td>12</td>\n <td>82.0</td>\n <td>119</td>\n <td>4376</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>3.38 (0.91, 6.52)</td>\n <td>4</td>\n <td>76.0</td>\n <td>116</td>\n <td>4376</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">&lt;5</th>\n <th>2012/13</th>\n <td>12.60 (8.29, 16.97)</td>\n <td>31</td>\n <td>264.0</td>\n <td>307</td>\n <td>7347</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>14.02 (9.72, 18.40)</td>\n <td>37</td>\n <td>239.0</td>\n <td>304</td>\n <td>7347</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>7.15 (4.24, 10.96)</td>\n <td>17</td>\n <td>234.0</td>\n <td>295</td>\n <td>7347</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">5+</th>\n <th>2012/13</th>\n <td>3.66 (1.55, 5.80)</td>\n <td>10</td>\n <td>115.0</td>\n <td>152</td>\n <td>9237</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>2.94 (1.29, 5.04)</td>\n <td>8</td>\n <td>84.0</td>\n <td>124</td>\n <td>9237</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>1.17 (0.15, 2.49)</td>\n <td>2</td>\n <td>66.0</td>\n <td>92</td>\n <td>9237</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rota_table = create_virus_table('rotavirus')\nrota_table.to_excel('results/outpatient_rota.xlsx')\nrota_table",
"execution_count": 147,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 147,
"data": {
"text/plain": " estimate cases stool_collected enrolled n\nage group year \n<1 2012/13 21.27 (8.97, 34.35) 9 79.0 86 1427\n 2013/14 9.85 (2.31, 18.54) 4 79.0 95 1427\n 2014/15 8.08 (1.78, 16.27) 3 85.0 94 1427\n1 2012/13 20.13 (9.33, 31.95) 11 93.0 101 1544\n 2013/14 16.42 (7.33, 26.62) 9 78.0 90 1544\n 2014/15 20.44 (9.05, 32.96) 10 73.0 85 1544\n2-4 2012/13 9.63 (5.06, 14.90) 13 92.0 120 4376\n 2013/14 2.55 (0.49, 5.14) 3 82.0 119 4376\n 2014/15 6.05 (2.39, 10.17) 8 76.0 116 4376\n<5 2012/13 13.43 (9.05, 18.24) 33 264.0 307 7347\n 2013/14 6.28 (3.47, 9.33) 16 239.0 304 7347\n 2014/15 8.71 (5.36, 12.62) 21 234.0 295 7347\n5+ 2012/13 2.34 (0.93, 4.16) 6 115.0 152 9237\n 2013/14 1.32 (0.29, 2.59) 3 84.0 124 9237\n 2014/15 1.89 (0.58, 3.66) 4 66.0 92 9237",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th></th>\n <th>estimate</th>\n <th>cases</th>\n <th>stool_collected</th>\n <th>enrolled</th>\n <th>n</th>\n </tr>\n <tr>\n <th>age group</th>\n <th>year</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th rowspan=\"3\" valign=\"top\">&lt;1</th>\n <th>2012/13</th>\n <td>21.27 (8.97, 34.35)</td>\n <td>9</td>\n <td>79.0</td>\n <td>86</td>\n <td>1427</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>9.85 (2.31, 18.54)</td>\n <td>4</td>\n <td>79.0</td>\n <td>95</td>\n <td>1427</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>8.08 (1.78, 16.27)</td>\n <td>3</td>\n <td>85.0</td>\n <td>94</td>\n <td>1427</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">1</th>\n <th>2012/13</th>\n <td>20.13 (9.33, 31.95)</td>\n <td>11</td>\n <td>93.0</td>\n <td>101</td>\n <td>1544</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>16.42 (7.33, 26.62)</td>\n <td>9</td>\n <td>78.0</td>\n <td>90</td>\n <td>1544</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>20.44 (9.05, 32.96)</td>\n <td>10</td>\n <td>73.0</td>\n <td>85</td>\n <td>1544</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">2-4</th>\n <th>2012/13</th>\n <td>9.63 (5.06, 14.90)</td>\n <td>13</td>\n <td>92.0</td>\n <td>120</td>\n <td>4376</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>2.55 (0.49, 5.14)</td>\n <td>3</td>\n <td>82.0</td>\n <td>119</td>\n <td>4376</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>6.05 (2.39, 10.17)</td>\n <td>8</td>\n <td>76.0</td>\n <td>116</td>\n <td>4376</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">&lt;5</th>\n <th>2012/13</th>\n <td>13.43 (9.05, 18.24)</td>\n <td>33</td>\n <td>264.0</td>\n <td>307</td>\n <td>7347</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>6.28 (3.47, 9.33)</td>\n <td>16</td>\n <td>239.0</td>\n <td>304</td>\n <td>7347</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>8.71 (5.36, 12.62)</td>\n <td>21</td>\n <td>234.0</td>\n <td>295</td>\n <td>7347</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">5+</th>\n <th>2012/13</th>\n <td>2.34 (0.93, 4.16)</td>\n <td>6</td>\n <td>115.0</td>\n <td>152</td>\n <td>9237</td>\n </tr>\n <tr>\n <th>2013/14</th>\n <td>1.32 (0.29, 2.59)</td>\n <td>3</td>\n <td>84.0</td>\n <td>124</td>\n <td>9237</td>\n </tr>\n <tr>\n <th>2014/15</th>\n <td>1.89 (0.58, 3.66)</td>\n <td>4</td>\n <td>66.0</td>\n <td>92</td>\n <td>9237</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Pooled (over years) virus rate model"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "virus_outpatient_merged",
"execution_count": 148,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 148,
"data": {
"text/plain": " age_group year cases stool_collected enrolled n eligible \\\n0 0 0 2 79.0 86 1427 149 \n1 0 1 4 79.0 95 1427 150 \n2 0 2 1 85.0 94 1427 153 \n3 1 0 8 93.0 101 1544 149 \n4 1 1 8 78.0 90 1544 129 \n5 1 2 2 73.0 85 1544 139 \n6 2 0 12 92.0 120 4376 204 \n7 2 1 8 82.0 119 4376 187 \n8 2 2 4 76.0 116 4376 192 \n12 0 0 16 79.0 86 1427 149 \n13 0 1 22 79.0 95 1427 150 \n14 0 2 29 85.0 94 1427 153 \n15 1 0 18 93.0 101 1544 149 \n16 1 1 21 78.0 90 1544 129 \n17 1 2 26 73.0 85 1544 139 \n18 2 0 16 92.0 120 4376 204 \n19 2 1 18 82.0 119 4376 187 \n20 2 2 20 76.0 116 4376 192 \n24 0 0 9 79.0 86 1427 149 \n25 0 1 4 79.0 95 1427 150 \n26 0 2 3 85.0 94 1427 153 \n27 1 0 11 93.0 101 1544 149 \n28 1 1 9 78.0 90 1544 129 \n29 1 2 10 73.0 85 1544 139 \n30 2 0 13 92.0 120 4376 204 \n31 2 1 3 82.0 119 4376 187 \n32 2 2 8 76.0 116 4376 192 \n36 0 0 4 79.0 86 1427 149 \n37 0 1 12 79.0 95 1427 150 \n38 0 2 5 85.0 94 1427 153 \n39 1 0 17 93.0 101 1544 149 \n40 1 1 13 78.0 90 1544 129 \n41 1 2 8 73.0 85 1544 139 \n42 2 0 10 92.0 120 4376 204 \n43 2 1 12 82.0 119 4376 187 \n44 2 2 4 76.0 116 4376 192 \n0 3 0 22 264.0 307 7347 502 \n1 3 1 20 239.0 304 7347 466 \n2 3 2 7 234.0 295 7347 484 \n3 3 0 50 264.0 307 7347 502 \n4 3 1 61 239.0 304 7347 466 \n5 3 2 75 234.0 295 7347 484 \n6 3 0 33 264.0 307 7347 502 \n7 3 1 16 239.0 304 7347 466 \n8 3 2 21 234.0 295 7347 484 \n9 3 0 31 264.0 307 7347 502 \n10 3 1 37 239.0 304 7347 466 \n11 3 2 17 234.0 295 7347 484 \n0 4 0 6 115.0 152 9237 263 \n1 4 1 2 84.0 124 9237 211 \n2 4 2 1 66.0 92 9237 182 \n3 4 0 16 115.0 152 9237 263 \n4 4 1 15 84.0 124 9237 211 \n5 4 2 20 66.0 92 9237 182 \n6 4 0 6 115.0 152 9237 263 \n7 4 1 3 84.0 124 9237 211 \n8 4 2 4 66.0 92 9237 182 \n9 4 0 10 115.0 152 9237 263 \n10 4 1 8 84.0 124 9237 211 \n11 4 2 2 66.0 92 9237 182 \n\n virus \n0 astrovirus \n1 astrovirus \n2 astrovirus \n3 astrovirus \n4 astrovirus \n5 astrovirus \n6 astrovirus \n7 astrovirus \n8 astrovirus \n12 norovirus \n13 norovirus \n14 norovirus \n15 norovirus \n16 norovirus \n17 norovirus \n18 norovirus \n19 norovirus \n20 norovirus \n24 rotavirus \n25 rotavirus \n26 rotavirus \n27 rotavirus \n28 rotavirus \n29 rotavirus \n30 rotavirus \n31 rotavirus \n32 rotavirus \n36 sapovirus \n37 sapovirus \n38 sapovirus \n39 sapovirus \n40 sapovirus \n41 sapovirus \n42 sapovirus \n43 sapovirus \n44 sapovirus \n0 astrovirus \n1 astrovirus \n2 astrovirus \n3 norovirus \n4 norovirus \n5 norovirus \n6 rotavirus \n7 rotavirus \n8 rotavirus \n9 sapovirus \n10 sapovirus \n11 sapovirus \n0 astrovirus \n1 astrovirus \n2 astrovirus \n3 norovirus \n4 norovirus \n5 norovirus \n6 rotavirus \n7 rotavirus \n8 rotavirus \n9 sapovirus \n10 sapovirus \n11 sapovirus ",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>age_group</th>\n <th>year</th>\n <th>cases</th>\n <th>stool_collected</th>\n <th>enrolled</th>\n <th>n</th>\n <th>eligible</th>\n <th>virus</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>0</td>\n <td>2</td>\n <td>79.0</td>\n <td>86</td>\n <td>1427</td>\n <td>149</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>1</th>\n <td>0</td>\n <td>1</td>\n <td>4</td>\n <td>79.0</td>\n <td>95</td>\n <td>1427</td>\n <td>150</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>2</th>\n <td>0</td>\n <td>2</td>\n <td>1</td>\n <td>85.0</td>\n <td>94</td>\n <td>1427</td>\n <td>153</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>3</th>\n <td>1</td>\n <td>0</td>\n <td>8</td>\n <td>93.0</td>\n <td>101</td>\n <td>1544</td>\n <td>149</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>4</th>\n <td>1</td>\n <td>1</td>\n <td>8</td>\n <td>78.0</td>\n <td>90</td>\n <td>1544</td>\n <td>129</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>5</th>\n <td>1</td>\n <td>2</td>\n <td>2</td>\n <td>73.0</td>\n <td>85</td>\n <td>1544</td>\n <td>139</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>6</th>\n <td>2</td>\n <td>0</td>\n <td>12</td>\n <td>92.0</td>\n <td>120</td>\n <td>4376</td>\n <td>204</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>7</th>\n <td>2</td>\n <td>1</td>\n <td>8</td>\n <td>82.0</td>\n <td>119</td>\n <td>4376</td>\n <td>187</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>8</th>\n <td>2</td>\n <td>2</td>\n <td>4</td>\n <td>76.0</td>\n <td>116</td>\n <td>4376</td>\n <td>192</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>12</th>\n <td>0</td>\n <td>0</td>\n <td>16</td>\n <td>79.0</td>\n <td>86</td>\n <td>1427</td>\n <td>149</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>13</th>\n <td>0</td>\n <td>1</td>\n <td>22</td>\n <td>79.0</td>\n <td>95</td>\n <td>1427</td>\n <td>150</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>14</th>\n <td>0</td>\n <td>2</td>\n <td>29</td>\n <td>85.0</td>\n <td>94</td>\n <td>1427</td>\n <td>153</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>15</th>\n <td>1</td>\n <td>0</td>\n <td>18</td>\n <td>93.0</td>\n <td>101</td>\n <td>1544</td>\n <td>149</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>16</th>\n <td>1</td>\n <td>1</td>\n <td>21</td>\n <td>78.0</td>\n <td>90</td>\n <td>1544</td>\n <td>129</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>17</th>\n <td>1</td>\n <td>2</td>\n <td>26</td>\n <td>73.0</td>\n <td>85</td>\n <td>1544</td>\n <td>139</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>18</th>\n <td>2</td>\n <td>0</td>\n <td>16</td>\n <td>92.0</td>\n <td>120</td>\n <td>4376</td>\n <td>204</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>19</th>\n <td>2</td>\n <td>1</td>\n <td>18</td>\n <td>82.0</td>\n <td>119</td>\n <td>4376</td>\n <td>187</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>20</th>\n <td>2</td>\n <td>2</td>\n <td>20</td>\n <td>76.0</td>\n <td>116</td>\n <td>4376</td>\n <td>192</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>24</th>\n <td>0</td>\n <td>0</td>\n <td>9</td>\n <td>79.0</td>\n <td>86</td>\n <td>1427</td>\n <td>149</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>25</th>\n <td>0</td>\n <td>1</td>\n <td>4</td>\n <td>79.0</td>\n <td>95</td>\n <td>1427</td>\n <td>150</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>26</th>\n <td>0</td>\n <td>2</td>\n <td>3</td>\n <td>85.0</td>\n <td>94</td>\n <td>1427</td>\n <td>153</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>27</th>\n <td>1</td>\n <td>0</td>\n <td>11</td>\n <td>93.0</td>\n <td>101</td>\n <td>1544</td>\n <td>149</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>28</th>\n <td>1</td>\n <td>1</td>\n <td>9</td>\n <td>78.0</td>\n <td>90</td>\n <td>1544</td>\n <td>129</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>29</th>\n <td>1</td>\n <td>2</td>\n <td>10</td>\n <td>73.0</td>\n <td>85</td>\n <td>1544</td>\n <td>139</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>30</th>\n <td>2</td>\n <td>0</td>\n <td>13</td>\n <td>92.0</td>\n <td>120</td>\n <td>4376</td>\n <td>204</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>31</th>\n <td>2</td>\n <td>1</td>\n <td>3</td>\n <td>82.0</td>\n <td>119</td>\n <td>4376</td>\n <td>187</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>32</th>\n <td>2</td>\n <td>2</td>\n <td>8</td>\n <td>76.0</td>\n <td>116</td>\n <td>4376</td>\n <td>192</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>36</th>\n <td>0</td>\n <td>0</td>\n <td>4</td>\n <td>79.0</td>\n <td>86</td>\n <td>1427</td>\n <td>149</td>\n <td>sapovirus</td>\n </tr>\n <tr>\n <th>37</th>\n <td>0</td>\n <td>1</td>\n <td>12</td>\n <td>79.0</td>\n <td>95</td>\n <td>1427</td>\n <td>150</td>\n <td>sapovirus</td>\n </tr>\n <tr>\n <th>38</th>\n <td>0</td>\n <td>2</td>\n <td>5</td>\n <td>85.0</td>\n <td>94</td>\n <td>1427</td>\n <td>153</td>\n <td>sapovirus</td>\n </tr>\n <tr>\n <th>39</th>\n <td>1</td>\n <td>0</td>\n <td>17</td>\n <td>93.0</td>\n <td>101</td>\n <td>1544</td>\n <td>149</td>\n <td>sapovirus</td>\n </tr>\n <tr>\n <th>40</th>\n <td>1</td>\n <td>1</td>\n <td>13</td>\n <td>78.0</td>\n <td>90</td>\n <td>1544</td>\n <td>129</td>\n <td>sapovirus</td>\n </tr>\n <tr>\n <th>41</th>\n <td>1</td>\n <td>2</td>\n <td>8</td>\n <td>73.0</td>\n <td>85</td>\n <td>1544</td>\n <td>139</td>\n <td>sapovirus</td>\n </tr>\n <tr>\n <th>42</th>\n <td>2</td>\n <td>0</td>\n <td>10</td>\n <td>92.0</td>\n <td>120</td>\n <td>4376</td>\n <td>204</td>\n <td>sapovirus</td>\n </tr>\n <tr>\n <th>43</th>\n <td>2</td>\n <td>1</td>\n <td>12</td>\n <td>82.0</td>\n <td>119</td>\n <td>4376</td>\n <td>187</td>\n <td>sapovirus</td>\n </tr>\n <tr>\n <th>44</th>\n <td>2</td>\n <td>2</td>\n <td>4</td>\n <td>76.0</td>\n <td>116</td>\n <td>4376</td>\n <td>192</td>\n <td>sapovirus</td>\n </tr>\n <tr>\n <th>0</th>\n <td>3</td>\n <td>0</td>\n <td>22</td>\n <td>264.0</td>\n <td>307</td>\n <td>7347</td>\n <td>502</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>1</th>\n <td>3</td>\n <td>1</td>\n <td>20</td>\n <td>239.0</td>\n <td>304</td>\n <td>7347</td>\n <td>466</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>2</th>\n <td>3</td>\n <td>2</td>\n <td>7</td>\n <td>234.0</td>\n <td>295</td>\n <td>7347</td>\n <td>484</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>3</th>\n <td>3</td>\n <td>0</td>\n <td>50</td>\n <td>264.0</td>\n <td>307</td>\n <td>7347</td>\n <td>502</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>4</th>\n <td>3</td>\n <td>1</td>\n <td>61</td>\n <td>239.0</td>\n <td>304</td>\n <td>7347</td>\n <td>466</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>5</th>\n <td>3</td>\n <td>2</td>\n <td>75</td>\n <td>234.0</td>\n <td>295</td>\n <td>7347</td>\n <td>484</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>6</th>\n <td>3</td>\n <td>0</td>\n <td>33</td>\n <td>264.0</td>\n <td>307</td>\n <td>7347</td>\n <td>502</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>7</th>\n <td>3</td>\n <td>1</td>\n <td>16</td>\n <td>239.0</td>\n <td>304</td>\n <td>7347</td>\n <td>466</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>8</th>\n <td>3</td>\n <td>2</td>\n <td>21</td>\n <td>234.0</td>\n <td>295</td>\n <td>7347</td>\n <td>484</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>9</th>\n <td>3</td>\n <td>0</td>\n <td>31</td>\n <td>264.0</td>\n <td>307</td>\n <td>7347</td>\n <td>502</td>\n <td>sapovirus</td>\n </tr>\n <tr>\n <th>10</th>\n <td>3</td>\n <td>1</td>\n <td>37</td>\n <td>239.0</td>\n <td>304</td>\n <td>7347</td>\n <td>466</td>\n <td>sapovirus</td>\n </tr>\n <tr>\n <th>11</th>\n <td>3</td>\n <td>2</td>\n <td>17</td>\n <td>234.0</td>\n <td>295</td>\n <td>7347</td>\n <td>484</td>\n <td>sapovirus</td>\n </tr>\n <tr>\n <th>0</th>\n <td>4</td>\n <td>0</td>\n <td>6</td>\n <td>115.0</td>\n <td>152</td>\n <td>9237</td>\n <td>263</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>1</th>\n <td>4</td>\n <td>1</td>\n <td>2</td>\n <td>84.0</td>\n <td>124</td>\n <td>9237</td>\n <td>211</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>2</th>\n <td>4</td>\n <td>2</td>\n <td>1</td>\n <td>66.0</td>\n <td>92</td>\n <td>9237</td>\n <td>182</td>\n <td>astrovirus</td>\n </tr>\n <tr>\n <th>3</th>\n <td>4</td>\n <td>0</td>\n <td>16</td>\n <td>115.0</td>\n <td>152</td>\n <td>9237</td>\n <td>263</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>4</th>\n <td>4</td>\n <td>1</td>\n <td>15</td>\n <td>84.0</td>\n <td>124</td>\n <td>9237</td>\n <td>211</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>5</th>\n <td>4</td>\n <td>2</td>\n <td>20</td>\n <td>66.0</td>\n <td>92</td>\n <td>9237</td>\n <td>182</td>\n <td>norovirus</td>\n </tr>\n <tr>\n <th>6</th>\n <td>4</td>\n <td>0</td>\n <td>6</td>\n <td>115.0</td>\n <td>152</td>\n <td>9237</td>\n <td>263</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>7</th>\n <td>4</td>\n <td>1</td>\n <td>3</td>\n <td>84.0</td>\n <td>124</td>\n <td>9237</td>\n <td>211</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>8</th>\n <td>4</td>\n <td>2</td>\n <td>4</td>\n <td>66.0</td>\n <td>92</td>\n <td>9237</td>\n <td>182</td>\n <td>rotavirus</td>\n </tr>\n <tr>\n <th>9</th>\n <td>4</td>\n <td>0</td>\n <td>10</td>\n <td>115.0</td>\n <td>152</td>\n <td>9237</td>\n <td>263</td>\n <td>sapovirus</td>\n </tr>\n <tr>\n <th>10</th>\n <td>4</td>\n <td>1</td>\n <td>8</td>\n <td>84.0</td>\n <td>124</td>\n <td>9237</td>\n <td>211</td>\n <td>sapovirus</td>\n </tr>\n <tr>\n <th>11</th>\n <td>4</td>\n <td>2</td>\n <td>2</td>\n <td>66.0</td>\n <td>92</td>\n <td>9237</td>\n <td>182</td>\n <td>sapovirus</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "virus_outpatient_pooled = virus_outpatient_merged.groupby(['age_group', 'virus']).agg({'n':lambda x: max(x)*3, \n 'cases':sum, \n 'stool_collected':sum, \n 'enrolled':sum, 'eligible':sum}).reset_index()",
"execution_count": 151,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "with Model() as virus_pooled_model:\n \n groups = virus_outpatient_pooled.shape[0]\n \n # Probability of stool collection\n ψ = Beta('ψ', 1, 1)\n outpatient_enrolled = (rotavirus_data.setting==OUTPATIENT).sum()\n collected = rotavirus_data[rotavirus_data.setting==OUTPATIENT].stool_collected.sum()\n stool = Binomial('stool', n=outpatient_enrolled, p=ψ, observed=collected)\n\n cases, enrolled, n, eligible = virus_outpatient_pooled[['cases', 'enrolled', 'n', 'eligible']].values.T\n \n # Adjust for enrollment\n enrollment_rate = Beta('p_enrolled', 1, 1, shape=groups)\n enrolled_cases = Binomial('enrolled_cases', eligible, enrollment_rate, observed=enrolled)\n \n eligible_cases = Uniform('eligible_cases', lower=cases, upper=eligible, \n shape=groups)\n \n p = monitoring_rate[OUTPATIENT]*ψ*enrollment_rate\n\n # Estimate total VUMC cases in setting\n eligible_cases_likelihood = Binomial('eligible_cases_likelihood', \n n=eligible_cases, \n p=p,\n observed=cases)\n \n\n π = Beta('π', 1, 10, shape=groups)\n\n # Data likeihood\n virus_out_obs = Potential('virus_out_obs', \n Binomial.dist(n=n, p=π).logp(eligible_cases).sum())\n \n \n\n",
"execution_count": 153,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "with virus_pooled_model:\n virus_outpatient_pooled_trace = sample(iterations, tune=tune,\n njobs=2, random_seed=seed_numbers)",
"execution_count": 154,
"outputs": [
{
"output_type": "stream",
"text": "Auto-assigning NUTS sampler...\nInitializing NUTS using jitter+adapt_diag...\n100%|██████████| 2000/2000 [00:08<00:00, 222.65it/s]\n",
"name": "stderr"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "MCMC diagnostic plot"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "energyplot(virus_outpatient_pooled_trace)",
"execution_count": 156,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 156,
"data": {
"text/plain": "<matplotlib.axes._subplots.AxesSubplot at 0x1392f8208>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x13c828748>",
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "outpatient_virus_pooled_labels = (virus_outpatient_pooled.drop(['enrolled', 'n', 'stool_collected', 'cases'],\n axis=1).reset_index(drop=True)\n .replace({'age_group':{0:'<1', 1:'1', 2:'2-4', 3:'<5', 4:'5+'},\n 'virus':virus_lookup})\n .rename(columns={'age_group':'age group'}))",
"execution_count": 158,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "virus_outpatient_pooled_table = generate_table(virus_outpatient_pooled_trace, outpatient_virus_pooled_labels, \n index=['age group'], varnames=['π'],\n columns=['virus']).sort_index()\n# virus_outpatient_table.to_excel('results/virus_outpatient_table.xlsx')",
"execution_count": 159,
"outputs": []
},
{
"metadata": {
"scrolled": true,
"trusted": true
},
"cell_type": "code",
"source": "virus_outpatient_pooled_table",
"execution_count": 160,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 160,
"data": {
"text/plain": "virus astrovirus norovirus rotavirus \\\nage group \n1 10.83 (6.19, 16.13) 37.63 (27.79, 46.75) 17.56 (10.96, 23.74) \n2-4 5.45 (3.31, 7.72) 12.09 (8.77, 15.43) 5.53 (3.48, 7.89) \n5+ 1.12 (0.48, 1.78) 5.89 (4.32, 7.66) 1.57 (0.74, 2.42) \n<1 5.31 (1.94, 8.83) 45.72 (34.48, 56.44) 11.47 (6.32, 16.90) \n<5 6.39 (4.69, 8.20) 23.82 (20.24, 27.36) 9.07 (6.87, 11.11) \n\nvirus sapovirus \nage group \n1 22.26 (15.27, 29.07) \n2-4 5.94 (3.59, 8.22) \n5+ 2.36 (1.36, 3.37) \n<1 14.83 (8.93, 21.35) \n<5 10.96 (8.69, 13.36) ",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th>virus</th>\n <th>astrovirus</th>\n <th>norovirus</th>\n <th>rotavirus</th>\n <th>sapovirus</th>\n </tr>\n <tr>\n <th>age group</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>1</th>\n <td>10.83 (6.19, 16.13)</td>\n <td>37.63 (27.79, 46.75)</td>\n <td>17.56 (10.96, 23.74)</td>\n <td>22.26 (15.27, 29.07)</td>\n </tr>\n <tr>\n <th>2-4</th>\n <td>5.45 (3.31, 7.72)</td>\n <td>12.09 (8.77, 15.43)</td>\n <td>5.53 (3.48, 7.89)</td>\n <td>5.94 (3.59, 8.22)</td>\n </tr>\n <tr>\n <th>5+</th>\n <td>1.12 (0.48, 1.78)</td>\n <td>5.89 (4.32, 7.66)</td>\n <td>1.57 (0.74, 2.42)</td>\n <td>2.36 (1.36, 3.37)</td>\n </tr>\n <tr>\n <th>&lt;1</th>\n <td>5.31 (1.94, 8.83)</td>\n <td>45.72 (34.48, 56.44)</td>\n <td>11.47 (6.32, 16.90)</td>\n <td>14.83 (8.93, 21.35)</td>\n </tr>\n <tr>\n <th>&lt;5</th>\n <td>6.39 (4.69, 8.20)</td>\n <td>23.82 (20.24, 27.36)</td>\n <td>9.07 (6.87, 11.11)</td>\n <td>10.96 (8.69, 13.36)</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "def create_pooled_table(virus_name):\n estimates = virus_outpatient_pooled_table[[virus_name]].rename(columns={virus_name:'estimate'})\n virus_data = (virus_outpatient_pooled[virus_outpatient_pooled.virus==virus_name]\n .set_index(['age_group']) [['cases', 'stool_collected', 'enrolled', 'n']]\n .set_index(estimates.index))\n return estimates.join(virus_data).loc[['<1', '1', '2-4', '<5', '5+']]",
"execution_count": 161,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "astro_pooled = create_pooled_table('astrovirus')\nastro_pooled.to_excel('results/outpatient_astro_pooled.xlsx')\nastro_pooled",
"execution_count": 162,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 162,
"data": {
"text/plain": " estimate cases stool_collected enrolled n\nage group \n<1 5.31 (1.94, 8.83) 49 737.0 906 22041\n1 10.83 (6.19, 16.13) 7 243.0 275 4281\n2-4 5.45 (3.31, 7.72) 18 244.0 276 4632\n<5 6.39 (4.69, 8.20) 9 265.0 368 27711\n5+ 1.12 (0.48, 1.78) 24 250.0 355 13128",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>estimate</th>\n <th>cases</th>\n <th>stool_collected</th>\n <th>enrolled</th>\n <th>n</th>\n </tr>\n <tr>\n <th>age group</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>&lt;1</th>\n <td>5.31 (1.94, 8.83)</td>\n <td>49</td>\n <td>737.0</td>\n <td>906</td>\n <td>22041</td>\n </tr>\n <tr>\n <th>1</th>\n <td>10.83 (6.19, 16.13)</td>\n <td>7</td>\n <td>243.0</td>\n <td>275</td>\n <td>4281</td>\n </tr>\n <tr>\n <th>2-4</th>\n <td>5.45 (3.31, 7.72)</td>\n <td>18</td>\n <td>244.0</td>\n <td>276</td>\n <td>4632</td>\n </tr>\n <tr>\n <th>&lt;5</th>\n <td>6.39 (4.69, 8.20)</td>\n <td>9</td>\n <td>265.0</td>\n <td>368</td>\n <td>27711</td>\n </tr>\n <tr>\n <th>5+</th>\n <td>1.12 (0.48, 1.78)</td>\n <td>24</td>\n <td>250.0</td>\n <td>355</td>\n <td>13128</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "noro_pooled = create_pooled_table('norovirus')\nnoro_pooled.to_excel('results/outpatient_noro_pooled.xlsx')\nnoro_pooled",
"execution_count": 163,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 163,
"data": {
"text/plain": " estimate cases stool_collected enrolled n\nage group \n<1 45.72 (34.48, 56.44) 186 737.0 906 22041\n1 37.63 (27.79, 46.75) 67 243.0 275 4281\n2-4 12.09 (8.77, 15.43) 65 244.0 276 4632\n<5 23.82 (20.24, 27.36) 51 265.0 368 27711\n5+ 5.89 (4.32, 7.66) 54 250.0 355 13128",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>estimate</th>\n <th>cases</th>\n <th>stool_collected</th>\n <th>enrolled</th>\n <th>n</th>\n </tr>\n <tr>\n <th>age group</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>&lt;1</th>\n <td>45.72 (34.48, 56.44)</td>\n <td>186</td>\n <td>737.0</td>\n <td>906</td>\n <td>22041</td>\n </tr>\n <tr>\n <th>1</th>\n <td>37.63 (27.79, 46.75)</td>\n <td>67</td>\n <td>243.0</td>\n <td>275</td>\n <td>4281</td>\n </tr>\n <tr>\n <th>2-4</th>\n <td>12.09 (8.77, 15.43)</td>\n <td>65</td>\n <td>244.0</td>\n <td>276</td>\n <td>4632</td>\n </tr>\n <tr>\n <th>&lt;5</th>\n <td>23.82 (20.24, 27.36)</td>\n <td>51</td>\n <td>265.0</td>\n <td>368</td>\n <td>27711</td>\n </tr>\n <tr>\n <th>5+</th>\n <td>5.89 (4.32, 7.66)</td>\n <td>54</td>\n <td>250.0</td>\n <td>355</td>\n <td>13128</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "sapo_pooled = create_pooled_table('sapovirus')\nsapo_pooled.to_excel('results/outpatient_sapo_pooled.xlsx')\nsapo_pooled",
"execution_count": 164,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 164,
"data": {
"text/plain": " estimate cases stool_collected enrolled n\nage group \n<1 14.83 (8.93, 21.35) 85 737.0 906 22041\n1 22.26 (15.27, 29.07) 21 243.0 275 4281\n2-4 5.94 (3.59, 8.22) 38 244.0 276 4632\n<5 10.96 (8.69, 13.36) 20 265.0 368 27711\n5+ 2.36 (1.36, 3.37) 26 250.0 355 13128",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>estimate</th>\n <th>cases</th>\n <th>stool_collected</th>\n <th>enrolled</th>\n <th>n</th>\n </tr>\n <tr>\n <th>age group</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>&lt;1</th>\n <td>14.83 (8.93, 21.35)</td>\n <td>85</td>\n <td>737.0</td>\n <td>906</td>\n <td>22041</td>\n </tr>\n <tr>\n <th>1</th>\n <td>22.26 (15.27, 29.07)</td>\n <td>21</td>\n <td>243.0</td>\n <td>275</td>\n <td>4281</td>\n </tr>\n <tr>\n <th>2-4</th>\n <td>5.94 (3.59, 8.22)</td>\n <td>38</td>\n <td>244.0</td>\n <td>276</td>\n <td>4632</td>\n </tr>\n <tr>\n <th>&lt;5</th>\n <td>10.96 (8.69, 13.36)</td>\n <td>20</td>\n <td>265.0</td>\n <td>368</td>\n <td>27711</td>\n </tr>\n <tr>\n <th>5+</th>\n <td>2.36 (1.36, 3.37)</td>\n <td>26</td>\n <td>250.0</td>\n <td>355</td>\n <td>13128</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "rota_pooled = create_pooled_table('rotavirus')\nrota_pooled.to_excel('results/outpatient_rota_pooled.xlsx')\nrota_pooled",
"execution_count": 165,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 165,
"data": {
"text/plain": " estimate cases stool_collected enrolled n\nage group \n<1 11.47 (6.32, 16.90) 70 737.0 906 22041\n1 17.56 (10.96, 23.74) 16 243.0 275 4281\n2-4 5.53 (3.48, 7.89) 30 244.0 276 4632\n<5 9.07 (6.87, 11.11) 13 265.0 368 27711\n5+ 1.57 (0.74, 2.42) 24 250.0 355 13128",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>estimate</th>\n <th>cases</th>\n <th>stool_collected</th>\n <th>enrolled</th>\n <th>n</th>\n </tr>\n <tr>\n <th>age group</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>&lt;1</th>\n <td>11.47 (6.32, 16.90)</td>\n <td>70</td>\n <td>737.0</td>\n <td>906</td>\n <td>22041</td>\n </tr>\n <tr>\n <th>1</th>\n <td>17.56 (10.96, 23.74)</td>\n <td>16</td>\n <td>243.0</td>\n <td>275</td>\n <td>4281</td>\n </tr>\n <tr>\n <th>2-4</th>\n <td>5.53 (3.48, 7.89)</td>\n <td>30</td>\n <td>244.0</td>\n <td>276</td>\n <td>4632</td>\n </tr>\n <tr>\n <th>&lt;5</th>\n <td>9.07 (6.87, 11.11)</td>\n <td>13</td>\n <td>265.0</td>\n <td>368</td>\n <td>27711</td>\n </tr>\n <tr>\n <th>5+</th>\n <td>1.57 (0.74, 2.42)</td>\n <td>24</td>\n <td>250.0</td>\n <td>355</td>\n <td>13128</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
}
],
"metadata": {
"_draft": {
"nbviewer_url": "https://gist.github.com/0338cd254a6f19173bde302295f31282"
},
"anaconda-cloud": {},
"gist": {
"id": "0338cd254a6f19173bde302295f31282",
"data": {
"description": "Outpatient AGE Rates.ipynb",
"public": true
}
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3",
"language": "python"
},
"language_info": {
"name": "python",
"version": "3.6.1",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"latex_envs": {
"bibliofile": "biblio.bib",
"cite_by": "apalike",
"current_citInitial": 1,
"eqLabelWithNumbers": true,
"eqNumInitial": 0
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment