Skip to content

Instantly share code, notes, and snippets.

@daniel-covelli
Created March 23, 2020 21:19
Show Gist options
  • Save daniel-covelli/0ca59c2c499ecbcb8cf37f57295286c8 to your computer and use it in GitHub Desktop.
Save daniel-covelli/0ca59c2c499ecbcb8cf37f57295286c8 to your computer and use it in GitHub Desktop.
COVID
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "COVID",
"provenance": [],
"collapsed_sections": [],
"mount_file_id": "1MHmAgjYyKt-4JR5PcZdB-tYKM8wmnRDG",
"authorship_tag": "ABX9TyPDt0l8OgN74/mxpW7W79Gg",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/daniel-covelli/0ca59c2c499ecbcb8cf37f57295286c8/covid.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "XEb-LtIhc6K-",
"colab_type": "code",
"colab": {}
},
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "tb0xHLW-DjwO",
"colab_type": "text"
},
"source": [
"**DISCLAIMER**: I am not a public health official. The findings in this notebook do not represent actual realities of COVID-19, its effect on the elderly, and its implications on matters of public health. This exercise is meant to be a way of teaching others how to conduct data analysis on important data. *PLEASE TAKE ALL FINDINGS WITH A GRAIN OF SALT.*"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "IcTnlxSqza1O",
"colab_type": "text"
},
"source": [
"# Predicting COVID-19 Mortalities "
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ORYAqroQovHa",
"colab_type": "text"
},
"source": [
"Lets look at the [Novel Corona Virus 2019 Dataset](https://www.kaggle.com/sudalairajkumar/novel-corona-virus-2019-dataset) available on Kaggle"
]
},
{
"cell_type": "code",
"metadata": {
"id": "6w85Fh_keBEH",
"colab_type": "code",
"outputId": "eb271d73-02ad-418a-f268-c7755bff3b44",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 561
}
},
"source": [
"data = pd.read_csv(\"/COVID19_open_line_list.csv\", index_col=0)\n",
"data.head()"
],
"execution_count": 3,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\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>sex</th>\n",
" <th>city</th>\n",
" <th>province</th>\n",
" <th>country</th>\n",
" <th>wuhan(0)_not_wuhan(1)</th>\n",
" <th>latitude</th>\n",
" <th>longitude</th>\n",
" <th>geo_resolution</th>\n",
" <th>date_onset_symptoms</th>\n",
" <th>date_admission_hospital</th>\n",
" <th>date_confirmation</th>\n",
" <th>symptoms</th>\n",
" <th>lives_in_Wuhan</th>\n",
" <th>travel_history_dates</th>\n",
" <th>travel_history_location</th>\n",
" <th>reported_market_exposure</th>\n",
" <th>additional_information</th>\n",
" <th>chronic_disease_binary</th>\n",
" <th>chronic_disease</th>\n",
" <th>source</th>\n",
" <th>sequence_available</th>\n",
" <th>outcome</th>\n",
" <th>date_death_or_discharge</th>\n",
" <th>notes_for_discussion</th>\n",
" <th>location</th>\n",
" <th>admin3</th>\n",
" <th>admin2</th>\n",
" <th>admin1</th>\n",
" <th>country_new</th>\n",
" <th>admin_id</th>\n",
" <th>data_moderator_initials</th>\n",
" <th>Unnamed: 33</th>\n",
" <th>Unnamed: 34</th>\n",
" <th>Unnamed: 35</th>\n",
" <th>Unnamed: 36</th>\n",
" <th>Unnamed: 37</th>\n",
" <th>Unnamed: 38</th>\n",
" <th>Unnamed: 39</th>\n",
" <th>Unnamed: 40</th>\n",
" <th>Unnamed: 41</th>\n",
" <th>Unnamed: 42</th>\n",
" <th>Unnamed: 43</th>\n",
" <th>Unnamed: 44</th>\n",
" </tr>\n",
" <tr>\n",
" <th>ID</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",
" <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",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1.0</th>\n",
" <td>30</td>\n",
" <td>male</td>\n",
" <td>Chaohu City, Hefei City</td>\n",
" <td>Anhui</td>\n",
" <td>China</td>\n",
" <td>1.0</td>\n",
" <td>31.646960</td>\n",
" <td>117.716600</td>\n",
" <td>admin3</td>\n",
" <td>18.01.2020</td>\n",
" <td>20.01.2020</td>\n",
" <td>22.01.2020</td>\n",
" <td>NaN</td>\n",
" <td>yes</td>\n",
" <td>17.01.2020</td>\n",
" <td>Wuhan</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>http://ah.people.com.cn/GB/n2/2020/0127/c35826...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Chaohu City</td>\n",
" <td>Hefei City</td>\n",
" <td>Anhui</td>\n",
" <td>China</td>\n",
" <td>340181</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",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2.0</th>\n",
" <td>47</td>\n",
" <td>male</td>\n",
" <td>Baohe District, Hefei City</td>\n",
" <td>Anhui</td>\n",
" <td>China</td>\n",
" <td>1.0</td>\n",
" <td>31.778630</td>\n",
" <td>117.331900</td>\n",
" <td>admin3</td>\n",
" <td>10.01.2020</td>\n",
" <td>21.01.2020</td>\n",
" <td>23.01.2020</td>\n",
" <td>NaN</td>\n",
" <td>no</td>\n",
" <td>10.01.2020</td>\n",
" <td>Luzhou Hunan, via Wuhan</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>http://ah.people.com.cn/GB/n2/2020/0127/c35826...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Baohe District</td>\n",
" <td>Hefei City</td>\n",
" <td>Anhui</td>\n",
" <td>China</td>\n",
" <td>340111</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",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3.0</th>\n",
" <td>49</td>\n",
" <td>male</td>\n",
" <td>High-Tech Zone, Hefei City</td>\n",
" <td>Anhui</td>\n",
" <td>China</td>\n",
" <td>1.0</td>\n",
" <td>31.828313</td>\n",
" <td>117.224844</td>\n",
" <td>point</td>\n",
" <td>15.01.2020</td>\n",
" <td>20.01.2020</td>\n",
" <td>23.01.2020</td>\n",
" <td>NaN</td>\n",
" <td>no</td>\n",
" <td>10.01.2020</td>\n",
" <td>Yinzhou Hunan, via Wuhan</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>http://ah.people.com.cn/GB/n2/2020/0127/c35826...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>High-Tech Zone</td>\n",
" <td>Shushan District</td>\n",
" <td>Hefei City</td>\n",
" <td>Anhui</td>\n",
" <td>China</td>\n",
" <td>340104</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",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4.0</th>\n",
" <td>47</td>\n",
" <td>female</td>\n",
" <td>High-Tech Zone, Hefei City</td>\n",
" <td>Anhui</td>\n",
" <td>China</td>\n",
" <td>1.0</td>\n",
" <td>31.828313</td>\n",
" <td>117.224844</td>\n",
" <td>point</td>\n",
" <td>17.01.2020</td>\n",
" <td>20.01.2020</td>\n",
" <td>23.01.2020</td>\n",
" <td>NaN</td>\n",
" <td>no</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>contacted with confirmed case</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>http://ah.people.com.cn/GB/n2/2020/0127/c35826...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>High-Tech Zone</td>\n",
" <td>Shushan District</td>\n",
" <td>Hefei City</td>\n",
" <td>Anhui</td>\n",
" <td>China</td>\n",
" <td>340104</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",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5.0</th>\n",
" <td>50</td>\n",
" <td>female</td>\n",
" <td>Feidong County, Hefei City</td>\n",
" <td>Anhui</td>\n",
" <td>China</td>\n",
" <td>1.0</td>\n",
" <td>32.001230</td>\n",
" <td>117.568100</td>\n",
" <td>admin3</td>\n",
" <td>10.01.2020</td>\n",
" <td>21.01.2020</td>\n",
" <td>23.01.2020</td>\n",
" <td>NaN</td>\n",
" <td>no</td>\n",
" <td>07.01.2020</td>\n",
" <td>Wuhan</td>\n",
" <td>NaN</td>\n",
" <td>06.01.2020 went to Wuhan, 07.01.2020 returned ...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>http://ah.people.com.cn/GB/n2/2020/0127/c35826...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Feidong County</td>\n",
" <td>Hefei City</td>\n",
" <td>Anhui</td>\n",
" <td>China</td>\n",
" <td>340122</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",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" age sex ... Unnamed: 43 Unnamed: 44\n",
"ID ... \n",
"1.0 30 male ... NaN NaN\n",
"2.0 47 male ... NaN NaN\n",
"3.0 49 male ... NaN NaN\n",
"4.0 47 female ... NaN NaN\n",
"5.0 50 female ... NaN NaN\n",
"\n",
"[5 rows x 44 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 3
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "98dxbNjdAhM5",
"colab_type": "text"
},
"source": [
"We are interested in running a linear regression on factors that effect whether an individual succumbs to COVID-19; including age and sex. Lets created a subset of our data that captures this information. "
]
},
{
"cell_type": "code",
"metadata": {
"id": "MGYxNYuZmrWD",
"colab_type": "code",
"outputId": "4670ecd7-119b-41f8-f631-1285cf33a4fa",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 235
}
},
"source": [
"data = data[['age', 'sex', 'outcome']]\n",
"data.head()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\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>sex</th>\n",
" <th>outcome</th>\n",
" </tr>\n",
" <tr>\n",
" <th>ID</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1.0</th>\n",
" <td>30</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2.0</th>\n",
" <td>47</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3.0</th>\n",
" <td>49</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4.0</th>\n",
" <td>47</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5.0</th>\n",
" <td>50</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" age sex outcome\n",
"ID \n",
"1.0 30 male NaN\n",
"2.0 47 male NaN\n",
"3.0 49 male NaN\n",
"4.0 47 female NaN\n",
"5.0 50 female NaN"
]
},
"metadata": {
"tags": []
},
"execution_count": 234
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "uVJH-Y8wwfF0",
"colab_type": "text"
},
"source": [
"# Cleaning and Visualizing the Data"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "LNtpFz3EGk1e",
"colab_type": "text"
},
"source": [
"First we want to get rid of any wierd values in our age and sex columns (like nulls, etc)."
]
},
{
"cell_type": "code",
"metadata": {
"id": "7gepANBCGkKo",
"colab_type": "code",
"outputId": "10075bce-4eeb-4c88-d4f1-5bef1873e62a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 235
}
},
"source": [
"# clean out all obsevations where age was not reported\n",
"clean = data[data['age'].notnull()]\n",
"\n",
"# clean out all observations where sex was not reported\n",
"clean = data[data['sex'].notnull()]\n",
"\n",
"# further clean out all other abnormalities in age data using regex\n",
"clean = clean[~clean['age'].astype(str).str.match('0{1}')]\n",
"clean = clean[clean['age'].astype(str).str.match('\\d{1,2}')]\n",
"clean = clean[~clean['age'].astype(str).str.match(\"\\d{1,2}\\-\")]\n",
"\n",
"clean.sample(5)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\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>sex</th>\n",
" <th>outcome</th>\n",
" </tr>\n",
" <tr>\n",
" <th>ID</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2447.0</th>\n",
" <td>56</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1593.0</th>\n",
" <td>49</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12036.0</th>\n",
" <td>51</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6137.0</th>\n",
" <td>48</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24.0</th>\n",
" <td>45</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" age sex outcome\n",
"ID \n",
"2447.0 56 female NaN\n",
"1593.0 49 female NaN\n",
"12036.0 51 male NaN\n",
"6137.0 48 female NaN\n",
"24.0 45 male NaN"
]
},
"metadata": {
"tags": []
},
"execution_count": 235
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "pNfw1o2CDpiY",
"colab_type": "text"
},
"source": [
"First, lets get two tables that include those patients who had critical cases and those patients who were discharged. We will first want to clean out all individuals whos age was reported as null."
]
},
{
"cell_type": "code",
"metadata": {
"id": "mDlzqY_wnIzv",
"colab_type": "code",
"colab": {}
},
"source": [
"# create two tables with those who died and those who were discharged\n",
"critical = clean[clean['outcome'].str.contains(\"death|died\", na=False)]\n",
"recovered = clean[clean['outcome'].str.contains(\"discharge|discharged\", na=False)]"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "8KDsHtCm0FlZ",
"colab_type": "code",
"outputId": "22e485a6-afba-430b-8bf2-29db2bde1f5c",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 235
}
},
"source": [
"critical.head()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\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>sex</th>\n",
" <th>outcome</th>\n",
" </tr>\n",
" <tr>\n",
" <th>ID</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>192.0</th>\n",
" <td>39</td>\n",
" <td>male</td>\n",
" <td>died</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1443.0</th>\n",
" <td>82</td>\n",
" <td>female</td>\n",
" <td>death</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4870.0</th>\n",
" <td>44</td>\n",
" <td>male</td>\n",
" <td>died</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5121.0</th>\n",
" <td>73</td>\n",
" <td>female</td>\n",
" <td>death</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11525.0</th>\n",
" <td>77</td>\n",
" <td>female</td>\n",
" <td>death</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" age sex outcome\n",
"ID \n",
"192.0 39 male died\n",
"1443.0 82 female death\n",
"4870.0 44 male died\n",
"5121.0 73 female death\n",
"11525.0 77 female death"
]
},
"metadata": {
"tags": []
},
"execution_count": 237
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "14Es_oeR0BCi",
"colab_type": "code",
"outputId": "3388e526-4eee-41cb-8eb5-20b0c8a57fa2",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 235
}
},
"source": [
"recovered.head()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\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>sex</th>\n",
" <th>outcome</th>\n",
" </tr>\n",
" <tr>\n",
" <th>ID</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>56.0</th>\n",
" <td>44</td>\n",
" <td>female</td>\n",
" <td>discharged</td>\n",
" </tr>\n",
" <tr>\n",
" <th>164.0</th>\n",
" <td>29</td>\n",
" <td>male</td>\n",
" <td>discharge</td>\n",
" </tr>\n",
" <tr>\n",
" <th>320.0</th>\n",
" <td>39</td>\n",
" <td>female</td>\n",
" <td>discharged</td>\n",
" </tr>\n",
" <tr>\n",
" <th>344.0</th>\n",
" <td>46</td>\n",
" <td>male</td>\n",
" <td>discharged</td>\n",
" </tr>\n",
" <tr>\n",
" <th>620.0</th>\n",
" <td>27</td>\n",
" <td>male</td>\n",
" <td>discharged</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" age sex outcome\n",
"ID \n",
"56.0 44 female discharged\n",
"164.0 29 male discharge\n",
"320.0 39 female discharged\n",
"344.0 46 male discharged\n",
"620.0 27 male discharged"
]
},
"metadata": {
"tags": []
},
"execution_count": 238
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ogOPTsVvAZHj",
"colab_type": "text"
},
"source": [
"Now, lets vizualize the relationship between age and whether someone was discharged or not. "
]
},
{
"cell_type": "code",
"metadata": {
"id": "_3U_8fc1zU0k",
"colab_type": "code",
"outputId": "f145c494-09f8-468c-a86e-c18121267991",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 408
}
},
"source": [
"# use distplot in seaborn to plot the distribution of those recovered and those critically ill across age\n",
"plt.figure(figsize=(16, 6))\n",
"sns.distplot(recovered[\"age\"], color=\"skyblue\", rug=True, hist=False, label=\"Recovered\")\n",
"sns.distplot(critical[\"age\"], color=\"red\", rug=True, hist=False, label=\"Critical\");\n"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA64AAAFzCAYAAAA+OVSqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjAsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy8GearUAAAgAElEQVR4nOzdeXiU5bnH8e8zSzLZA2EnQMKqguyi\nVhFbXFAriGIRW7faY931WBdsq7RHbd1RT6lL6966IAruYkFxw2JBEdnXAGEnZJmsk5l5zh9v9CCi\nBEjyzvL7XFeuJJM3k9+kNcw9z/3cj7HWIiIiIiIiIhKrPG4HEBEREREREfkhKlxFREREREQkpqlw\nFRERERERkZimwlVERERERERimgpXERERERERiWkqXEVERERERCSm+dwOsD/atGljCwoK3I4hIiIi\nIiIizWDBggU7rbVt97w9rgrXgoIC5s+f73YMERERERERaQbGmPV7u12twiIiIiIiIhLTVLiKiIiI\niIhITFPhKiIiIiIiIjEtrva4ioiIiIiItIT6+nqKi4upra11O0pCCgQC5Ofn4/f7G3W9ClcRERER\nEZE9FBcXk5WVRUFBAcYYt+MkFGstJSUlFBcXU1hY2KjvUauwiIiIiIjIHmpra8nLy1PR2gyMMeTl\n5e3XarYKVxERERERkb1Q0dp89vd3q8JVREREREQkBnm9XgYOHEi/fv04/fTTKSsrczvSfvvDH/7A\nvffee9D3o8JVREREREQkBqWlpbFw4UIWL15M69atmTJlituRAGePajQabdGfqcJVREREREQkxh19\n9NFs2rQJgDVr1jBq1CiGDBnC8OHDWb58OQDbtm1j7NixDBgwgAEDBjB37lwA7r//fvr160e/fv14\n4IEHAJg4ceK3CuHdV0bvuecejjjiCPr378+kSZMAKCoqok+fPpx//vn069ePjRs37vU6gDvuuIPe\nvXtz7LHHsmLFiiZ5/JoqLCIiIiIi8gNmFVeyrSbcpPfZPs3HCfmZjbo2Eokwe/ZsLr74YgAuueQS\nHnnkEXr16sW8efO4/PLLee+997j66qsZMWIE06dPJxKJUFlZyYIFC3jyySeZN28e1lqOPPJIRowY\nwfjx47n22mu54oorAJg6dSozZ87k3XffZdWqVXz22WdYaxk9ejQffvghXbt2ZdWqVTz99NMcddRR\n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\nIiIiOe3/A9eib8EIvQwYAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 1152x432 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "1aJsXEMo0Pp6",
"colab_type": "text"
},
"source": [
"As we can see, age seems to be positively correlated with ciritcal cases of COVID-19. Lets dig a little deeper. \n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "JzznEPfJ_SX5",
"colab_type": "code",
"outputId": "4821b884-4ed0-4a01-e3c1-6c048bb80a86",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 235
}
},
"source": [
"# first lets merge our critical and recovered dataframes\n",
"sexage = pd.concat([recovered, critical], sort=False)\n",
"\n",
"# next we want to get rid of any unnecessary columns and convert ages to integer values\n",
"sexage['age'] = sexage['age'].astype(int)\n",
"\n",
"sexage.sample(5)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\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>sex</th>\n",
" <th>outcome</th>\n",
" </tr>\n",
" <tr>\n",
" <th>ID</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>6348.0</th>\n",
" <td>49</td>\n",
" <td>female</td>\n",
" <td>discharge</td>\n",
" </tr>\n",
" <tr>\n",
" <th>671.0</th>\n",
" <td>28</td>\n",
" <td>male</td>\n",
" <td>discharge</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1062.0</th>\n",
" <td>42</td>\n",
" <td>male</td>\n",
" <td>discharged</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1064.0</th>\n",
" <td>7</td>\n",
" <td>male</td>\n",
" <td>discharged</td>\n",
" </tr>\n",
" <tr>\n",
" <th>344.0</th>\n",
" <td>46</td>\n",
" <td>male</td>\n",
" <td>discharged</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" age sex outcome\n",
"ID \n",
"6348.0 49 female discharge\n",
"671.0 28 male discharge\n",
"1062.0 42 male discharged\n",
"1064.0 7 male discharged\n",
"344.0 46 male discharged"
]
},
"metadata": {
"tags": []
},
"execution_count": 240
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "G6BAwqNpCS3Y",
"colab_type": "text"
},
"source": [
"Lets calculate the percentage of those who are 60 and older and those who are 80 and older who develop critical cases of COVID-19.\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "uKCU9isx_2hg",
"colab_type": "code",
"outputId": "2d801c1d-64f9-4a37-d27a-63e6f59113af",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 71
}
},
"source": [
"# create table with individuals who are 60 and older and those who \n",
"bin60 = sexage[sexage['age'] >= 60]\n",
"bin80 = sexage[sexage['age'] >= 80]\n",
"\n",
"# get the number of individuals who had critical cases \n",
"bin60critical = bin60[bin60['outcome'].str.contains(\"death|died\")]\n",
"bin80critical = bin80[bin80['outcome'].str.contains(\"death|died\")]\n",
"\n",
"# get percentage of those who had critical cases in the two groups\n",
"crit60 = bin60critical.shape[0] / bin60.shape[0]\n",
"crit80 = bin80critical.shape[0] / bin80.shape[0]\n",
"\n",
"print('The likelyhood that someone who is 60 or older will have a critical case of COVID-19 is:', crit60)\n",
"print('The likelyhood that someone who is 80 or older will have a critical case of COVID-19 is:', crit80)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"The likelyhood that someone who is 60 or older will have a critical case of COVID-19 is: 0.46153846153846156\n",
"The likelyhood that someone who is 80 or older will have a critical case of COVID-19 is: 0.5\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "5KvTdwvLE92b",
"colab_type": "text"
},
"source": [
"**DISCLAIMER**: These numbers are not conclusive and do not represent the realities of COVID-19."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "o9dygwGA_Axj",
"colab_type": "text"
},
"source": [
"It looks like there is a higher likelyhood that those who are older will contract critical cases of COVID-19. However, if we want to accurately predict outcomes using age, we need to do a little more. In order to predict how gender and age effects mortality rate, lets first turn our age and gender catagories into dummy variables."
]
},
{
"cell_type": "code",
"metadata": {
"id": "ZKUkBp_OF-B3",
"colab_type": "code",
"outputId": "c4dbf39a-c2e1-4f7a-d02b-1702b8f268b5",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 235
}
},
"source": [
"# now lets construct dummys for sex\n",
"sexage['sex_male'] = sexage.sex.map({'female':0,'male':1})\n",
" \n",
"# now lets construct a dummy for outcome\n",
"sexage['outcome_death'] = sexage.outcome.map({'discharged':0, 'discharge':0,'death': 1,'died':1})\n",
"\n",
"# select the new dummy variables\n",
"sexage = sexage[['age', 'sex_male', 'outcome_death']]\n",
"\n",
"# here is our resulting dataframe, with males as 1 and critical outcomes as 1\n",
"sexage.sample(5)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\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>sex_male</th>\n",
" <th>outcome_death</th>\n",
" </tr>\n",
" <tr>\n",
" <th>ID</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>12043.0</th>\n",
" <td>33</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56.0</th>\n",
" <td>44</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1063.0</th>\n",
" <td>38</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6131.0</th>\n",
" <td>63</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11275.0</th>\n",
" <td>30</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" age sex_male outcome_death\n",
"ID \n",
"12043.0 33 0 0\n",
"56.0 44 0 0\n",
"1063.0 38 0 0\n",
"6131.0 63 1 0\n",
"11275.0 30 1 0"
]
},
"metadata": {
"tags": []
},
"execution_count": 242
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "EcBMvg7pLIlH",
"colab_type": "text"
},
"source": [
"*where critical cases are encoded as 1 and non-critical cases enconded as 0 in the 'outcome_death' column*"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Hyd5e5YuXDVF",
"colab_type": "text"
},
"source": [
"Because we want to use both sex, age, and an **intercept** to predict the likelyhood of critical illness, we will construct a matrix with 3 column vectors, the first vector being the all ones vector.\n",
"\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "zO2B7oTxU5zl",
"colab_type": "code",
"colab": {}
},
"source": [
"# first lets put create a function that will add a one to our input matrix \n",
"def add_ones(data):\n",
" return np.hstack([np.ones((data.shape[0],1)), data])"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "SVHwWclhXzpS",
"colab_type": "code",
"outputId": "78b47fac-ffcf-438a-8ca6-5aa9adee7489",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"# now lets run our input matrix through this function\n",
"X = add_ones(sexage[['age', 'sex_male']])\n",
"\n",
"# lets get the first individual in our dataset\n",
"X[0]"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([ 1., 44., 0.])"
]
},
"metadata": {
"tags": []
},
"execution_count": 245
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "jFreMf_g07oN",
"colab_type": "text"
},
"source": [
"As we can see, our first value is 1. This will later allow us to compute an intercept value. "
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "9rLO_FmIwvkq",
"colab_type": "text"
},
"source": [
"# Defining a Linear Model"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4BEbyj8qrUM7",
"colab_type": "text"
},
"source": [
"Now that we have added a ones column to our matrix, we can go on to construct our linear model for predicting critical COVID-19 cases using an intercept, age and sex. Here we want to multiply our matrix with our theta coefficients. "
]
},
{
"cell_type": "code",
"metadata": {
"id": "Wogw_PmgUdEO",
"colab_type": "code",
"colab": {}
},
"source": [
"# use matrix multiplication to assign a theta value for each column element in our matrix\n",
"def linear_model(theta, xt): \n",
" return xt @ theta "
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "0EhiEuUOsCc2",
"colab_type": "text"
},
"source": [
"Now lets create an array of random guesses for our theta coefficients and find out what our model will predict."
]
},
{
"cell_type": "code",
"metadata": {
"id": "e9lT09RlY9Rg",
"colab_type": "code",
"outputId": "0ea290af-e25c-45a7-be88-901a5500a24d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 68
}
},
"source": [
"# will construct an array of three row elements of random value as our theta coefficients\n",
"np.random.seed(42)\n",
"theta_guess = np.random.randn(X.shape[1], 1)\n",
"theta_guess"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([[ 0.49671415],\n",
" [-0.1382643 ],\n",
" [ 0.64768854]])"
]
},
"metadata": {
"tags": []
},
"execution_count": 246
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "1LZFZ0LYsvUR",
"colab_type": "text"
},
"source": [
"Now, lets use this random guess of coefficients on our third row from our matrix."
]
},
{
"cell_type": "code",
"metadata": {
"id": "5JgU2thfUJYs",
"colab_type": "code",
"outputId": "45b0156d-d7bb-4560-fc00-9b2fafb73d55",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"# use our random thetas to predict the outcome of the third individual in our sexage data set\n",
"linear_model(theta_guess, X[2,:])"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([-4.89559359])"
]
},
"metadata": {
"tags": []
},
"execution_count": 247
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Bb8l-S53s8Hi",
"colab_type": "text"
},
"source": [
"The prediction is -4.89 meaning that with these random coefficients, the individual who represents the third row of our matrix is likely to survive. Lets compare this to the actual outcome for the individual at the third row. "
]
},
{
"cell_type": "code",
"metadata": {
"id": "LPMyr8TyU2LV",
"colab_type": "code",
"outputId": "20861bc0-3f2b-4475-83af-1956c8265362",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 85
}
},
"source": [
"# get the third individual from our sexage dataset\n",
"sexage.iloc[2]"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"age 39\n",
"sex_male 0\n",
"outcome_death 0\n",
"Name: 320.0, dtype: int64"
]
},
"metadata": {
"tags": []
},
"execution_count": 248
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "gwKrQsNFuYRj",
"colab_type": "text"
},
"source": [
"A below 0 outcome in this context means that for our random theta coefficients, our model predicts that the third individual will survive. Despite its randomness, this prediction was right. However it may not be right with other individuals in our dataset, therefore we need to choose better thetas. "
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "f33pPJc5v7BT",
"colab_type": "text"
},
"source": [
"# Calculating Theta Values"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Uj0G6u4LwLHr",
"colab_type": "text"
},
"source": [
"First lets get a column vector of our observed Y values that we will use in our loss function to find our optimal theta values. "
]
},
{
"cell_type": "code",
"metadata": {
"id": "e5CvyWsXW25z",
"colab_type": "code",
"outputId": "10658e96-8e84-4dd2-b322-5a74e19aabb8",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 102
}
},
"source": [
"# create an array (as a column vector) composed of all the outcome values in our sexage dataset\n",
"sexage['outcome_death'] = sexage['outcome_death'].astype(int)\n",
"\n",
"Y = sexage[['outcome_death']].to_numpy()\n",
"\n",
"# here are the first five elements of that column vector Y\n",
"Y[:5]"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([[0],\n",
" [0],\n",
" [0],\n",
" [0],\n",
" [0]])"
]
},
"metadata": {
"tags": []
},
"execution_count": 252
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "V0VAZROKxR1Y",
"colab_type": "text"
},
"source": [
"Now we need to pick a loss function. Here we will use squared loss or the distance our predicted Y value is from the observed Y value for each individual in our data set."
]
},
{
"cell_type": "code",
"metadata": {
"id": "57ziexu9fw7y",
"colab_type": "code",
"colab": {}
},
"source": [
"# define an average squred loss function\n",
"def squared_loss(theta):\n",
" return np.mean((Y - X @ theta)**2) # 'X @ theta' here is our Y_hat prediction "
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "q-U6bbxeglzm",
"colab_type": "code",
"outputId": "8a8bab99-58fb-4d04-b572-8f1b68ebf68e",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"squared_loss(theta_guess)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"32.82412334239557"
]
},
"metadata": {
"tags": []
},
"execution_count": 147
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "kUiVnIUAyVWr",
"colab_type": "text"
},
"source": [
"Using our theta guesses, we get a loss of ~32. Our objective in calculating better thetas is to reduce the output of the loss function by optimizing our theta values. \n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "sDDdPGkAyM9a",
"colab_type": "text"
},
"source": [
"# Minimizing the Loss with the Normal Equation"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "EUWPZrg8zFZe",
"colab_type": "text"
},
"source": [
"Using the normal equation in linear algebra, we can get our optimal theta values by using dot production, matrix multiplication, transposition and invertion."
]
},
{
"cell_type": "code",
"metadata": {
"id": "ePW7xfyRhd8t",
"colab_type": "code",
"colab": {}
},
"source": [
"# in order to compute the normal equation we will need the ability to invert a matrix\n",
"from numpy.linalg import inv"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "S9BkFL0sJPzt",
"colab_type": "code",
"colab": {}
},
"source": [
"# define the normal equation\n",
"def norm_equ(X, Y):\n",
" return inv(X.T @ X) @ X.T @ Y"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "Upg5RS5-hYd6",
"colab_type": "code",
"outputId": "e8218f00-2621-46c6-f87f-6e9300572ce6",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 68
}
},
"source": [
"# minimize loss using the normal equation\n",
"theta_hat = norm_equ(X, Y)\n",
"theta_hat"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([[-0.19245584],\n",
" [ 0.00786593],\n",
" [-0.03575496]])"
]
},
"metadata": {
"tags": []
},
"execution_count": 255
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "tTP8HlVQ2v2N",
"colab_type": "text"
},
"source": [
"Now that we have better thetas, lets verify this is the case by throwing these thetas into our loss fuction as defined above. If our thetas are indeed better, the output of the loss funciton should be less than the output of the loss function when we used random thetas."
]
},
{
"cell_type": "code",
"metadata": {
"id": "w2092lvfiZ3W",
"colab_type": "code",
"outputId": "c6e1f334-f089-4a95-f7ea-0e76237ad6dd",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"# compute the loss using our optimal thetas\n",
"squared_loss(theta_hat)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0.08093504311091328"
]
},
"metadata": {
"tags": []
},
"execution_count": 167
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "G0gnlvEo3KQZ",
"colab_type": "text"
},
"source": [
"Using the normal equation we have minimized the loss of our model with more optimal thetas. Lets predict the output of our model for the third individual in our data; except this time, using our optimal theta values. "
]
},
{
"cell_type": "code",
"metadata": {
"id": "UzhasJpx3vrD",
"colab_type": "code",
"outputId": "25874f62-28e4-4d2e-eb92-35cb8b78142b",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"# predict the outcome of the third individual in the data set\n",
"linear_model(theta_hat, X[2,:])"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([0.11431536])"
]
},
"metadata": {
"tags": []
},
"execution_count": 256
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "5alUk0wT399R",
"colab_type": "text"
},
"source": [
"This is much closer to the actual outcome (0) then it was when we used random thetas. "
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "O74b0SA74T-v",
"colab_type": "text"
},
"source": [
"# Diagnosing the Model"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "eZhBNqtB4-L9",
"colab_type": "text"
},
"source": [
"Now lets see how good our predicitions are. First we can see how our residuals are distributed across the age variable."
]
},
{
"cell_type": "code",
"metadata": {
"id": "ozi2zkflnEDK",
"colab_type": "code",
"outputId": "b83dec7f-0081-40d2-96cb-148af7439c49",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 404
}
},
"source": [
"# lets plot our resulting residuals against our dimension 'Age'\n",
"plt.figure(figsize=(10, 6))\n",
"sns.scatterplot(x = X[:,1], y = (Y - Y_hat).flat)\n",
"plt.title('Residuals vs Age')\n",
"plt.xlabel('Age')\n",
"plt.ylabel('Residuals');"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\npAr6v4UL3WBOWL6nAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 720x432 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "j4jpLaD848vZ",
"colab_type": "text"
},
"source": [
"As we can see, there are two groups, those who fell critically ill to COVID-19 represented in the data cloud above, and those who survived below. Our model, consistently underestimates the likelyhood of an individual having a critical case of COVID. This is likely due to the fact that we don't have enough data. For instance, there are only 9 individuals in the data set who were labeled as having critical cases of COVID-19. This is a serious problem for health officials if this is the only data set available for predicting how age effects the likelyhood of having a critical case of COVID-19. Now lets compare how the observed Y values correspond to our predicted Y values.\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "l6vhvhKjjw1v",
"colab_type": "code",
"outputId": "ace65fd7-2765-4e95-a483-91b65f7da4eb",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 404
}
},
"source": [
"# lets plot our resulting Y_hat predictions relative to our observed Y values\n",
"plt.figure(figsize=(10, 6))\n",
"sns.regplot(Y[1:,0], Y_hat[1:,0], ci=None, line_kws = {'color': 'r', 'alpha': 1})\n",
"plt.title('Example Plot')\n",
"plt.xlabel('Y')\n",
"plt.ylabel('Y_hat');\n"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAnIAAAGDCAYAAACvCP20AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjAsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy8GearUAAAgAElEQVR4nO3de3hcd33n8c93RiPLsmVbiaXY8SWy\n4otICAWqhrDbGj8ltKG0SbsUiClt0gL2dpvCFnpJl+J23csS2IW2u2nXLg2k7JJQwhbUEsgCreuy\nxTxRuBvkm+LEcmzLiWVH9liWZua7f8woGUtHM+ORZs6co/freebxXM4589VzIvuT7/n9zs/cXQAA\nAIieRNgFAAAAoDoEOQAAgIgiyAEAAEQUQQ4AACCiCHIAAAARRZADAACIKIIcAFTBzO42s6/W4Lgf\nN7M/muvjAognghyAhmNmR83sopmdL3r8j7DrmitmtsfMxgo/17Nm9n/MbGUVx3EzW1+LGgFEA0EO\nQKP6GXdfXPS4J+yC5tg97r5Y0kZJyyR9JOR6AEQQQQ5ApJjZX5rZZ4pe32dmX7G8djP7BzM7bWYj\nheeri7bdY2Z/ZGb/WuiG/b2ZXW1m/9vMnjezx82sq2h7N7N3mdlgoXP2ITML/HvTzHrM7EtmdsbM\nDpjZmyv5edz9jKTPSHrpDMd9p5kdLhy3z8yuLby/t7DJtws/y1sq+T4A8UKQAxA175V0U2GM2o9J\nerukuzy/3mBC0sckXSdpraSLkqZekr1T0i9KWiXpeklfK+xzlaQfSPr9Kdv/nKReSa+UdIekX5la\nkJktkvQlSZ+U1Fn4jr8wsxvK/TBmtlzSGyV9M+CzH5f0XyS9WdJKSU9JeliS3H1zYbMfKnQsP1Xu\nuwDED0EOQKP6rJmdLXq8U5LcPa18EPuwpP8l6dfdfajw2XPu/hl3T7v7qKQ/lvSaKcf9mLsfcfdz\nkr4g6Yi7f9ndM5I+LekVU7a/z93PuPvTkv5U0taAWn9a0lF3/5i7Z9z9m8p32d5U4uf7czM7K+nb\nkk5Iek/ANr8g6QF3/4a7X5L0u5JeXdw1BDC/NYVdAADM4Gfd/ctBH7j7181sUPnu199Ovm9mrcqP\nNbtNUnvh7TYzS7p7tvD6VNGhLga8Xjzl644VPX9K0rUBJV0n6VWFYDapSdInguoveJe7f7TE5yp8\n1zcmX7j7eTN7Tvlu4tEy+wKYB+jIAYgcM/s1SQskPSPpt4s+eq+kTZJe5e5LJE1efrRZfN2aoudr\nC9851TFJ/+zuy4oei939V2fxvSp813WTLwqXcK+WdHyWxwUQEwQ5AJFiZhsl/ZGktyl/ifW3zezl\nhY/blO+qnTWzqzR9vFs1fqswiWKNpHdLChqL9g+SNprZL5pZqvD4ETN7ySy/+yFJv2xmLzezBZL+\nRNLX3f1o4fNTkrpn+R0AIowgB6BR/f2U+8j9nZk1KT8u7j53/7a7H5L0nyR9ohB0/lTSQknPSton\n6YtzUMfnJD0h6VuSPi/pr6duUBiP9xPKT3J4RtJJSfcp3zWsWuHS8vuVH293QvnJGXcWbfIHkh4s\njCGsaJYsgHix/EQvAMBUZuaSNrj74bBrAYAgdOQAAAAiiiAHAAAQUVxaBQAAiCg6cgAAABFFkAMA\nAIioWK7ssHz5cu/q6gq7DAAAgLKeeOKJZ929o5p9Yxnkurq61N/fH3YZAAAAZZnZU9Xuy6VVAACA\niCLIAQAARBRBDgAAIKIIcgAAABFFkAMAAIgoghwAAEBEEeQAAAAiiiAHAAAQUQQ5AACAiIplkBs4\nOaqtu/dpz8Bw2KUAAADUTCyDXFPCNDw6ph19+wlzAAAgtmIZ5CSptblJqaRp197BsEsBAACoidgG\nOUlamEpqaCQddhkAAAA1Eesgd3Eiq9XtrWGXAQAAUBOxDXLp8Ywmsq7tm7vDLgUAAKAmmsIuoBay\nOVdnW4u2b+7Wlp7OsMsBAACoiVgGuU0r2vTQtlvCLgMAAKCmYntpFQAAIO4IcgAAABFFkAMAAIgo\nghwAAEBEEeQAAAAiiiAHAAAQUQQ5AACAiCLIAQAARBRBDgAAIKIIcgAAABFFkAMAAIio0IOcmd1m\nZgfM7LCZ3Rvw+d1mdtrMvlV4vCOMOgEAABpNU5hfbmZJSfdLep2kIUmPm1mfu39/yqafcvd76l4g\nAABAAwu7I3ezpMPuPuju45IelnRHyDUBAABEQthBbpWkY0WvhwrvTfVGM/uOmT1iZmuCDmRm28ys\n38z6T58+XYtaAQAAGkrYQa4Sfy+py91fJulLkh4M2sjdd7t7r7v3dnR01LVAAACAMIQd5I5LKu6w\nrS689wJ3f87dLxVeflTSD9epNgAAgIYWdpB7XNIGM1tnZs2S7pTUV7yBma0senm7pB/UsT4AAICG\nFeqsVXfPmNk9kh6TlJT0gLvvN7OdkvrdvU/Su8zsdkkZSWck3R1awQAAAA3E3D3sGuZcb2+v9/f3\nh10GAABAWWb2hLv3VrNv2JdWAQAAUCWCHAAAQEQR5AAAACKKIAcAABBRBDkAAICIIsgBAABEFEEO\nAAAgoghyAAAAEUWQAwAAiCiCHAAAQEQR5AAAACKqKewCAAAA5qM9A8PatXdQqY6um6o9BkEOAACg\nzvYMDGtH336lkiZ5LlPtcbi0CgAAUGe79g4qlTS1Ns+up0aQAwAAqLNjI2ktTCVnfRyCHAAAQJ2t\naW/VxYnsrI9DkAMAAKiz7Zu7NZF1pcerHh4niSAHAABQd1t6OrXz9hvV2dYiWaLqgXLm7nNZV0Po\n7e31/v7+sMsAAAAoy8yecPfeavalIwcAABBRBDkAAICIIsgBAABEFEEOAAAgoghyAAAAEUWQAwAA\niCiCHAAAQEQR5AAAACKq6jsJAwAAoHp7Boa1a++gUh1dN1V7DIIcAABAne0ZGNaOvv1KJU3yXNUL\nrnJpFQAAoM527R1UKmlqbZ5dT40gBwAAUGfHRtJamErO+jgEOQAAgDpb096qixPZWR8n9CBnZreZ\n2QEzO2xm95bY7o1m5mbWW8/6AAAA5tr2zd2ayLrS41UPj5MUcpAzs6Sk+yW9XtINkraa2Q0B27VJ\nerekr9e3QgAAgLm3padTO2+/UZ1tLZIlqh4oF3ZH7mZJh9190N3HJT0s6Y6A7f5Q0n2SxupZHAAA\nQK1s6enUQ9tu0cTpo9+t9hhhB7lVko4VvR4qvPcCM3ulpDXu/vlSBzKzbWbWb2b9p0+fnvtKAQAA\nGkzYQa4kM0tI+rCk95bb1t13u3uvu/d2dHTUvjgAAICQhR3kjktaU/R6deG9SW2SXippj5kdlXSL\npD4mPAAAAIS/ssPjkjaY2TrlA9ydkt46+aG7n5O0fPK1me2R9Jvu3l/nOgEAAOZU5JfocveMmd0j\n6TFJSUkPuPt+M9spqd/d+8KsDwAAoBb2DAzrtx75tkbHMrJEMlXtccLuyMndH5X06JT3dsyw7ZZ6\n1AQAAFBL931xQCPpCSUTJkle7XHCHiMHAAAw7ww+e0EJkxJmszoOQQ4AACCiCHIAAAB1tu7qVuVc\nyuWqvqoqiSAHAABQd/e+/iVa1pqS5ZNY1ddXCXIAAAB1tqWnU//1539Ir1jTLs9lJ6o9jrnPrqXX\niHp7e72/n1vNAQCAxmdmT7h7VYsd0JEDAACIKIIcAABARBHkAAAAIoogBwAAEFEEOQAAgIgiyAEA\nAEQUQQ4AACCiYhnkBk6OauvufdozMBx2KQAAADUTyyDXlDANj45pR99+whwAAGhIewaGtXX3PqU6\num6q9hixDHKS1NrcpFTStGvvYNilAAAAXGbPwLB29O3X8OiY5LlMtceJbZCTpIWppIZG0mGXAQAA\ncJldeweVSppam5tmdZxYB7mLE1mtbm8NuwwAAIDLHBtJa2EqOevjxDbIpcczmsi6tm/uDrsUAACA\ny6xpb9XFieysjxPLIJfNuTrbWrTz9hu1pacz7HIAAAAus31ztyayrvR41cPjJEmzuzDboDataNND\n224JuwwAAIBAW3o6tVP5sXKyRNV5zNx9DstqDL29vd7f3x92GQAAAGWZ2RPu3lvNvrG8tAoAADAf\nEOQAAAAiiiAHAAAQUQQ5AACAiCLIAQAARBRBDgAAIKIIcgAAABFFkAMAAIgoghwAAEBEhR7kzOw2\nMztgZofN7N6Az/+9mX3XzL5lZl81sxvCqBMAAKDRhBrkzCwp6X5Jr5d0g6StAUHtk+5+k7u/XNIH\nJX24zmUCAADMLXfp9Gnpq1+d1WGqXqR1jtws6bC7D0qSmT0s6Q5J35/cwN2fL9p+kaT4LQ4LAADi\naXxcOnxYOnDg8sfAgDQyMuvDhx3kVkk6VvR6SNKrpm5kZr8m6T2SmiX9eH1KAwAAqMBkd21g4PKg\nduCA9OSTUjZbs68OO8hVxN3vl3S/mb1V0u9JumvqNma2TdI2SVqwrFNbd+/T9s3d2tLTWd9iAQBA\nPF26JB05cnlQm/zz7NnS+y5cKG3cKPX05B+bNuUfGzdKbW1VlxR2kDsuaU3R69WF92bysKS/DPrA\n3XdL2i1Jy9b2+PDomHb07ddOiTAHAAAq4y4ND1/eXZt8DA5KuVzp/VevvjyoTT5fvVpKzP3UhLCD\n3OOSNpjZOuUD3J2S3lq8gZltcPdDhZdvkHRIZYxNZHXy3JjaWpq0a+8gQQ4AAFzu0qUXx65N7a6d\nO1d639bWF4NacVjbuFFatKg+9ReEGuTcPWNm90h6TFJS0gPuvt/Mdkrqd/c+SfeY2a2SJiSNKOCy\napBM1vXchXFlss+X3xgAAMSPu3TqVPDYtaNHy3fX1qwJ7q6tWlWT7lo1wu7Iyd0flfTolPd2FD1/\n95Ue08yUSJhyOdd4lkmuAADE2tjYzN2158s0dBYtenHsWnGXLYTuWjVCD3K1kHPXWCarhKTmpsZI\nzAAAYBbcpZMnp3fWKu2urV17eVetuLtmVpcfoRZiGeQk5e82Z1LH4gVhVwIAACo1NiYdOjS9u3bw\nYGXdteKQNvnYsCES3bVqxDLImaTmZEJZd7lzaRUAgIbiLp04Mb2zNtldK/Vvt9nM3bVrr410d60a\nsQxyktSUNK1YvEAXxmt3Ez4AAFDCxYvTu2uTj9HR0vsuXjy9s9bTk++uLVxYn/ojIJZBriWVVHfH\nYqXHM+psawm7HAAA4muyuxY0M/Spp8p31667bvrl0J4eaeXKedddq0Ysg9zYRFaHTo2qraVJ73/D\nDWGXAwBA9KXTM3fXzp8vvW9b2/RbeEyOXaO7NiuxDHIuaTyb09gEl1UBAKiYu3T8+PTF3Se7a6WY\nSV1dwWPXVqygu1YjsQxyJimVSOjiRE4f+MIPWNkBAIBi6XR+FmhQd+3ChdL7LlkSPDN0/Xq6ayGI\nZ5Ar3BDYc64nn0uHXQ4AAPXnLg0NBd937emnS++bSEzvrk0+v+YaumsNJJZBDgCAeePChZm7a+ky\nzYylS4PXDF2/XmphsmAUxDLIuVw5d+Vc2tARzxsAAgDmkVwuP3YtaGbosWOl900kpHXrgi+H0l2L\nvHgGOZfGMzktWdik37mtJ+xyAACozPnzwd21gwfLd9eWLbs8pE0Gt/XrpQWschRXsQxyJmlBKqFU\nknVWAQANJpfLd9GCZoYODZXeN5GQuruDx651dNBdm4diGeRaUklt6GxTejyjXXsHmbUKAKi/8+eD\nJxocPJhf8aCUye7a1Nt4XH893TVcJpZBbtLCVFJDI8xaBQDUSHF3rXiB9wMH8mPaSkkm82PXpnbW\nNm2iuzZP7BkY1q69g0p1dN1U7TFiHeQuTmS1ur017DIAAFE3Onr5pdAr6a61tweHteuvl5qb61M/\nGs6egWHt6NuvVNIkz2WqPU4sgxxLdAEArlgul7+/WlB37ZlnSu+bTOaDWdAyVMuX013DNLv2DiqV\nNLU2zy6KxTLISZIsv1QXAACXef756Z21gYH8OqJjY6X3veqq4LFr3d1013BFjo2ktWxhatbHiWWQ\nY7IDAMxz2ezM3bUTJ0rv29SUD2ZT77nW05PvrgFzYE17q4ZHx+jIlcJkBwCIueLu2tSZoZculd73\n6qtn7q6lZt8pAUrZvrlbO/r2Kz1e9fA4STEPckx2AIAYyGalp54K7q6dPFl636am/Ni1qd21ybFr\nQEi29HRqp/Jj5WSJqvNYbINcejyjiaxr++busEsBAFTi3Lng9UIPHSrfXVu+PPgmuevW0V1Dw9rS\n06ktPZ2y7Ue/W+0xYhnksjlXZ1uLtm/uZnwcADSSbFY6enR6YBsYkE6dKr1vU1N+uamgmaFXX12X\n8oFGE8sgt2lFmx7adkvYZQDA/HX2bPASVIcOSePjpfft6Ji5u9YUy3+2gKrxGwEAqE4mE9xdO3Cg\nfHctlXqxuzZ1/NpVV9WlfCAOCHIAgNJGRoK7a4cPl++udXYGhzW6a8Cc4LcIAJDvrj35ZPDYtdOn\nS++bSkkbNgSPXWtvr0/9wDwVyyA3cHJUW3fvY7IDAEw1MjI9qE121yYmSu97zTXBYa2ri+4aEJJY\n/uY1JUzDo2Pa0bdfOyXCHID5JZORBgeDL4eW6641N8/cXVu2rD71A6hYLIOcJLU2N7FEF4B4O3Mm\nuLt25Ej57tqKFcFj17q68gvAA4iEioKcma1z9yfLvdcoxiayGjx9XssXN7NEF4Bom5h4sbs2dWbo\ns8+W3nfBgsu7a8XBbenS+tQPoKYq7ch9RtIrp7z3iKQfntty5k4m6zp+dkzrOxaFXQoAlPfcc8FL\nUB05kr9UWsrKlcH3XVu7lu4aEHMlg5yZ9Ui6UdJSM/t3RR8tkdQyFwWY2W2S/kxSUtJH3f0DUz5/\nj6R3SMpIOi3pV9z9qdIHLTxcMrO5KBMAZm+yuza1szYwkA9ypUx216Yu8L5xI901YB4r15HbJOmn\nJS2T9DNF749Keudsv9zMkpLul/Q6SUOSHjezPnf/ftFm35TU6+5pM/tVSR+U9JaSB/b8hIcVSxbo\n/KUy/ycLAHPt2WeDu2uDg5V116Z21jZtorsGIFDJIOfun5P0OTN7tbt/rQbff7Okw+4+KElm9rCk\nOyS9EOTc/Z+Ktt8n6W3lDtqSSqq7Y7HS4xl1ts1J4xAALjc+nr/sWdxZmwxtZ86U3relJd9JmxrW\nNm6UliypT/0AYqHSMXLfNLNfU/4y6wvJyN1/ZZbfv0rSsaLXQ5JeVWL7t0v6QtAHZrZN0jZJalrS\noUOnRtXW0qT3v+GGWZYIYN5yL91dy2ZL779qVfBtPNaulRKJ+vwMAGKt0iD3CUkDkn5S0k5JvyDp\nB7UqKoiZvU1Sr6TXBH3u7rsl7ZaklpUbXCZ5HesDEGHj4/kb4gbdd21kpPS+LS3Bs0I3bpTa2upT\nP4B5q9Igt97d32Rmd7j7g2b2SUn/Mgfff1zSmqLXqwvvXcbMbpX0PkmvcfdLlRw4aaamhHEfOQB5\n7vmb4QZ11558srLu2tR7rvX0SGvW0F0DEJpKg9zknSXPmtlLJZ2UNBfp6HFJG8xsnfIB7k5Jby3e\nwMxeIWmXpNvcfbjSA2eyrucujCuTfX4OygQQGZcuvTh2berNcs+eLb3vwoX5TlrQzNDFi+tTPwBc\ngUqD3G4za5f0fkl9khZL2jHbL3f3jJndI+kx5W8/8oC77zeznZL63b1P0ocK3/fpwq1Ennb320sd\n18yUSJhyOdd4lgusQOy4S8PDM3fXcrnS+69eHdxdW72a7hqASKkoyLn7RwtP/1lS91wW4O6PSnp0\nyns7ip7fesXHlCvnLrnU3MRfykBkXbqUH7sWdN+1c+dK79vaOnN3bRE3CgcQD5Uu0bVA0hsldRXv\n4+47a1PW7LhLE9mcli1MaUMng42BhuYunToVfCn06NHy3bU1a6ZPNOjpyY9po7sGIOYqvbT6OUnn\nJD0hqaLJBmEyScmE6dxYRq/uvirscgBI0tjY5TNDi0NbJd21oCWoNmyguwZgXqs0yK1299tqWskc\nckkTWdei5oS+NnhG7wq7IGC+cJdOngxe4L2S7tratcGBbdUqieX2AGCaSoPcv5rZTe7+3ZpWM8cu\njOf0veNlZqkBuHJjY9KhQ8HdtefLzBRftGj6ZdBNm/LdtdbW+tQPADFRMsiZ2XeVb3A1SfplMxtU\n/tKqSXJ3f1ntS6yOWb45kJ4o0wEAEMxdOnEieOzaU0/lPy/luuuCVzWguwYAc6ZcR+6nKzmImbW7\ne5nbn9fX5L8xXu4fG2C+u3hx5u7a6GjpfRcvDg5rdNcAoC5KBjl3f6rC43xF0itnX87ca2lKhl0C\nED536ZlngpegKtddMwvurvX0SCtX0l0DgBBVOkaunIb9m/yqRamwSwDq5+JF6eDB4O7a+fOl921r\nm95Zm+yuLVxYn/oBAFdkroJcw12/TJh09aKUjG4B4sZdOn48eGbo00+X7651dQUv8k53DQAiZ66C\nXENZmErqxmuXKj2eUWdbS9jlANVJp/Nj16YuQXXwYGXdtaAlqNavp7sGADFSbtbqo5L+g7sfLXOc\nhvrf+LGJrA4Nj2rxgia9/w03hF0OMLOZumsDA/nuWimT3bWpt/HYtElasYLuGgDMA+U6ch+T9H/N\n7EFJH3T3iRm2e+3cljUHvMHSJea3dDrfSQvqrl24UHrfJUum3yB306Z8d62FjjMAzGflZq1+2sy+\nIOn9kvrN7BOSckWff7jw55maVnmFWlJJbbimTenxjHbtHdSWns6wS8J8kMtJQ0OXj1mbDG3HjpXe\nN5GQ1q0LvpXHNdfQXQMABKpkjNy4pAuSFkhqU1GQa3QLU0kNjaTDLgNxc+HCzN21dJn/3pYuDb6N\nx/r10oIF9akfABAb5cbI3Sbpw5L6JL3S3SOVii5OZLW6nZuSogpTu2vFoW1oqPS+k921oLFrnZ10\n1wAAc6ZcR+59kt7k7vvrUcxcSo9nNJF1bd/cHXYpaGTnz1/eXZsMawcP5u/JVsqyZcEzQ6+/nu4a\nAKAuyo2R+7F6FTKXLk5kdXr0kt7xo+sYH4d8d+3YseCZocePl943mZy5u9bRQXcNABCq2N5HrqNt\ngR75xnG9bPUywtx8MToaPHbt0KHy3bX29uDuWnc33TUAQMOKZZC7OJHVk89e0NKFTcxajZtcLn9/\ntaCxa888U3rfZDIfzIJu5bF8Od01AEDkxDLISVLOpZF0Rt87fjbsUlCN0dHg9UIr6a5ddVXwzNDu\nbqm5uT71AwBQB7ENcmb5m+anJyJzt5T5J5sN7q4dOFBZd+3662furgEAMA/ENsipsG64l1pAHPXx\n/PPBC7wfPChdulR636uvnj7JYLK7lkrVp34AABpUbIOcmZSQtGhBbH/ExpLNSk89FdxdO3Gi9L5N\nTdO7a5OB7eqr61M/AAARFMuUY5KSCVPOpXf86Lqwy4mXc+eCb+Nx+HD57try5cFLUNFdAwCgKrEM\ncq78LUje8aPr9K5bN4ZdTvRks9LRo8EzQ0+dKr1vKpXvrk0Na5s20V0DAKDInoFh7do7qFRH103V\nHiOWQe6mVUvV/wc/GXYZje/s2emLux84UFl3raMjeGbounX5S6UAAGBGewaGtaNvv1JJkzyXqfY4\nsfwXd+DkqLbu3qftm7u5h1w2Kz35ZPDYtUq6a+vXT++sbdqUv8UHAACoyq69g0olTa3Ns4tisQxy\nTQnT8OiYdvTt105pfoS5kZHgmaGHD0vj46X37egIvo0H3TUAAGri2EhayxbOfnx4LP+VnlzZYUlL\nzFZ2yGTyY9emLkE1MCCdPl163+bmfHdt6qzQTZvyy1MBAIC6WdPequHRMTpyM8m5dPZiRt87PhJ2\nKVcuqLs2OTN0YqL0vtdcEzwztKuL7hoAAA1i++Zu7ejbr/R41cPjJMU4yE06f6lBV3bIZPJj16Z2\n1w4cqKy7tmHD9MC2cSPdNQAAImBLT6d2Kj9WTpaoOo+FHuTM7DZJfyYpKemj7v6BKZ9vlvSnkl4m\n6U53f+RKjh/6ug7PPXf5mLXJ0HbkSOXdtZ6e6d21ZLIu5QMAgNrY0tOpLT2dsu1Hv1vtMUINcmaW\nlHS/pNdJGpL0uJn1ufv3izZ7WtLdkn6z/hVWaGJi5u7as8+W3re4u1Z8G4+NG6Vly+pTPwAAiKSw\nO3I3Szrs7oOSZGYPS7pD0gtBzt2PFj4L/xppcXetOLQdOZK/VFrKypXBEw2uu47uGgAAqErYQW6V\npGNFr4ckvWouv6BtQeLKdpiYkAYHp080OHAgH+RKWbAg30mbGtg2bpSWLq3+hwAAAAgQdpCbM2a2\nTdI2SUou6VDCpCUtTXrJyhkC1LPPBs8MHRysrLtWfBl0MrStXUt3DQAA1E3YQe64pDVFr1cX3rti\n7r5b0m5JWra2x9ctXyS/NK7fWJWRPvvZ6aHtzJnSByzurk0du7ZkSTUlAgAAzKmwg9zjkjaY2Trl\nA9ydkt4624N2Dh/TX/3xL+i6c6eUzGVLb3zttcFLUNFdAwAADS7UIOfuGTO7R9Jjyt9+5AF3329m\nOyX1u3ufmf2IpL+T1C7pZ8zsP7v7jaWOu+RSWt2X0i++0dIyc3etra1mPx8AAEAtmXvod1qbc+sW\nLfO7/81bdKR9lZ7sWKt/+e+/JCWucNIDAABAHZjZE+7eW82+YV9arYlnlnTo472364WMSogDAAAN\nZs/AsHbtHVSqo+umao8RyyBXLJmwsEsAAAC4zJ6BYe3o269U0iTPVb3gamxbVZPduNtftiLcQgAA\nAKbYtXdQqaSptXl2PbXYBrlkwvRzL1+pj9z5yrBLAQAAuMyxkbQWpmZ/d4xYXlq9adVS9f/JT4Vd\nBgAAQKA17a0aHh2jIxdk4OSotu7epz0Dw2GXAgAAMM32zd2ayLrS41UPj5MU0yDXlDANj45pR99+\nwhwAAGg4W3o6tfP2G9XZ1iJZouq2XCyDnCS1NjcplTTt2jsYdikAAADTbOnp1EPbbtHE6aPfrfYY\nsQxyYxNZDZ4+r0w2p6GRdPkdAAAAIiiWQU4mZXKu42fHtHhBLOdzAAAAxDTIeeEhKY5LkAEAAEgx\nDXIuaSKXU3trky6MZ8MuBwAAoCZiGeTMpFQyoZF0hkurAAAgtmKZctylS5lc4TmXVgEAQDzFsiNX\n7PhZZq0CAIB4im2QM8v/mbEguvIAAAzMSURBVJ6gIwcAAOIptkHOmbUKAABiLrZBblJLUzLsEgAA\nAGoi9kHuqkWpsEsAAACoidgHuefHMmGXAAAAUBOxD3LnLxHkAABAPMU+yOWY6wAAAGIq9kHOwi4A\nAACgRmIf5FIJohwAAIin2Ae5ZJIgBwAA4in2QW48yyA5AAAQT7EPcqzsAAAA4ir2QY6VHQAAQFzF\nPsixsgMAAIirWAe55oRkxmQHAAAQT7EOcuM5Kc3KDgAAIKZiHeQk6Ux6IuwSAAAAaiL0IGdmt5nZ\nATM7bGb3Bny+wMw+Vfj862bWdSXHZ84qAACIq1CDnJklJd0v6fWSbpC01cxumLLZ2yWNuPt6SR+R\ndF99qwQAAGhMYXfkbpZ02N0H3X1c0sOS7piyzR2SHiw8f0TSa40ZDAAAAKEHuVWSjhW9Hiq8F7iN\nu2cknZN09dQDmdk2M+s3s/5s+lyNygUAAGgcYQe5OePuu9291917k61LX3g/Qe8OAADEVNhB7rik\nNUWvVxfeC9zGzJokLZX0XKVf0L6QGwIDAIB4CjvIPS5pg5mtM7NmSXdK6puyTZ+kuwrPf17SP/oV\nLKDKaDoAABBXTWF+ubtnzOweSY9JSkp6wN33m9lOSf3u3ifpryV9wswOSzqjfNgrK2H5EDee5QYk\nAAAgnkINcpLk7o9KenTKezuKno9JetOVH1fKkeEAAECMhR7kasUs/OvGAAAAtRTLIGeSUomEcnI1\nJxkkBwAA4imWQU6SmpKmtpaU1i1fHHYpAAAANRHLINeSSmrF0hZNZF3bN3eHXQ4AAEBNxDLIZXOu\nzrYWbd/crS09nWGXAwAAUBOxnA/AZFUAADAfxDLINSVMw6Nj2tG3X3sGhsMuBwAAoCZiGeQkqbW5\nSamkadfewbBLAQAAqInYBjlJWphKamgkHXYZAAAANRHrIHdxIqvV7a1hlwEAAFATsQ1y6fEMtx8B\nAACxxu1HAAAAIiqWQW7TijY9tO2WsMsAAACoqdheWgUAAIg7ghwAAEBEEeQAAAAiiiAHAAAQUQQ5\nAACAiIplkBs4Oaqtu/exzioAAIi1WAa5poRpeHRMO/r2E+YAAEBsxTLISVJrc5NSSdOuvYNhlwIA\nAFATsQ1ykrQwldTQSDrsMgAAAGoi1kHu4kRWq9tbwy4DAACgJmIb5NLjGU1kXds3d4ddCgAAQE3E\ncq3VbM7V2dai7Zu7taWnM+xyAAAAaiKWQW7TijY9tO2WsMsAAACoqdheWgUAAIg7ghwAAEBEEeQA\nAAAiiiAHAAAQUQQ5AACAiAotyJnZVWb2JTM7VPizfYbtvmhmZ83sH+pdIwAAQCMLsyN3r6SvuPsG\nSV8pvA7yIUm/WLeqAAAAIiLMIHeHpAcLzx+U9LNBG7n7VySN1qsoAACAqAgzyF3j7icKz09KuibE\nWgAAACKnpis7mNmXJa0I+Oh9xS/c3c3MZ/ld2yRtk6S1a9fO5lAAAACRUNMg5+63zvSZmZ0ys5Xu\nfsLMVkoanuV37Za0W5J6e3tnFQoBAACiIMxLq32S7io8v0vS50KsBQAAIHLCDHIfkPQ6Mzsk6dbC\na5lZr5l9dHIjM/sXSZ+W9FozGzKznwylWgAAgAZT00urpbj7c5JeG/B+v6R3FL3+sXrWBQAAEBWs\n7AAAABBRBDkAAICIIsgBAABEFEEOAAAgoghyAAAAEUWQAwAAiCiCHAAAQEQR5AAAACKKIAcAABBR\nBDkAAICIIsgBAABEFEEOAAAgoghyAAAAEUWQAwAAiCiCHAAAQEQR5AAAACIqlkFu4OSotu7epz0D\nw2GXAgAAUDOxDHJNCdPw6Jh29O0nzAEAgNiKZZCTpNbmJqWSpl17B8MuBQAAoCZiG+QkaWEqqaGR\ndNhlAAAA1ESsg9zFiaxWt7eGXQYAAEBNxDLIjU1kdejUqJ6/OKHtm7vDLgcAAKAmYhnkJEkmedg1\nAAAA1FBsg1zSTE0JJjsAAID4agq7gFrJZF3PXRhXJvt82KUAAADURCw7cmamRMIkSeNZLrACAIB4\nimVHLueusUxWCUnNTbHMqgAAAPHsyEl6YaZDx+IF4dYBAABQI7EMciapOZmQmcmdS6sAACCeYnlp\nVZKakqYVixfowng27FIAAABqIpZBriWVVHfHYqXHM+psawm7HAAAgJqI5aVVSUqPZzSRdVZ2AAAA\nsRVakDOzq8zsS2Z2qPBne8A2Lzezr5nZfjP7jpm9pZJjZ3OuzrYW7bz9Rm3p6Zz74gEAABqAhTUZ\nwMw+KOmMu3/AzO6V1O7uvzNlm42S3N0Pmdm1kp6Q9BJ3P1vq2L29vd7f31+z2gEAAOaKmT3h7r3V\n7BvmpdU7JD1YeP6gpJ+duoG7H3T3Q4Xnz0galtRRtwoBAAAaWJhB7hp3P1F4flLSNaU2NrObJTVL\nOjLD59vMrN/M+k+fPj23lQIAADSgms5aNbMvS1oR8NH7il+4u5vZjNd4zWylpE9Iusvdc0HbuPtu\nSbul/KXVqosGAACIiJoGOXe/dabPzOyUma109xOFoDY8w3ZLJH1e0vvcfV+NSgUAAIicMC+t9km6\nq/D8Lkmfm7qBmTVL+jtJf+Puj9SxNgAAgIYXZpD7gKTXmdkhSbcWXsvMes3so4Vt3ixps6S7zexb\nhcfLwykXAACgsYR2+5Fa4vYjAAAgKqJ6+xEAAADMAkEOAAAgoghyAAAAERXLMXJmNirpQNh1oGrL\nJT0bdhGoGucvujh30cb5i65N7t5WzY41vY9ciA5UO2gQ4TOzfs5fdHH+ootzF22cv+gys6pnaHJp\nFQAAIKIIcgAAABEV1yC3O+wCMCucv2jj/EUX5y7aOH/RVfW5i+VkBwAAgPkgrh05AACA2It0kDOz\n28zsgJkdNrN7Az5fYGafKnz+dTPrqn+VmEkF5+89ZvZ9M/uOmX3FzK4Lo05MV+7cFW33RjNzM2Mm\nXQOp5PyZ2ZsLv3/7zeyT9a4RM6vg7861ZvZPZvbNwt+fPxVGnZjOzB4ws2Ez+94Mn5uZ/Xnh3H7H\nzF5Z7piRDXJmlpR0v6TXS7pB0lYzu2HKZm+XNOLu6yV9RNJ99a0SM6nw/H1TUq+7v0zSI5I+WN8q\nEaTCcycza5P0bklfr2+FKKWS82dmGyT9rqR/6+43SvqPdS8UgSr8/fs9SX/r7q+QdKekv6hvlSjh\n45JuK/H56yVtKDy2SfrLcgeMbJCTdLOkw+4+6O7jkh6WdMeUbe6Q9GDh+SOSXmtmVscaMbOy58/d\n/8nd04WX+yStrnONCFbJ754k/aHy//M0Vs/iUFYl5++dku539xFJcvfhOteImVVy/lzSksLzpZKe\nqWN9KMHd90o6U2KTOyT9jeftk7TMzFaWOmaUg9wqSceKXg8V3gvcxt0zks5Jurou1aGcSs5fsbdL\n+kJNK0Klyp67wuWANe7++XoWhopU8ru3UdJGM/t/ZrbPzEp1EFBflZy/P5D0NjMbkvSopF+vT2mY\nA1f6b2NsV3ZAjJjZ2yT1SnpN2LWgPDNLSPqwpLtDLgXVa1L+0s4W5Tvhe83sJnc/G2pVqNRWSR93\n9/9mZq+W9Akze6m758IuDHMvyh2545LWFL1eXXgvcBsza1K+xfxcXapDOZWcP5nZrZLeJ+l2d79U\np9pQWrlz1ybppZL2mNlRSbdI6mPCQ8Oo5HdvSFKfu0+4+5OSDiof7BC+Ss7f2yX9rSS5+9cktSi/\nDisaX0X/NhaLcpB7XNIGM1tnZs3KD+jsm7JNn6S7Cs9/XtI/OjfOaxRlz5+ZvULSLuVDHGN0GkfJ\nc+fu59x9ubt3uXuX8uMbb3f3qtcSxJyq5O/OzyrfjZOZLVf+UutgPYvEjCo5f09Leq0kmdlLlA9y\np+taJarVJ+mXCrNXb5F0zt1PlNohspdW3T1jZvdIekxSUtID7r7fzHZK6nf3Pkl/rXxL+bDygwvv\nDK9iFKvw/H1I0mJJny7MUXna3W8PrWhIqvjcoUFVeP4ek/QTZvZ9SVlJv+XuXM1oABWev/dK+isz\n+w3lJz7cTROjMZjZQ8r/T9LywhjG35eUkiR3/5/Kj2n8KUmHJaUl/XLZY3JuAQAAoinKl1YBAADm\nNYIcAABARBHkAAAAIoogBwAAEFEEOQAAgIgiyAFACYX7OX3VzF5f9N6bzOyLYdYFABK3HwGAsszs\npZI+LekVyt9/85uSbnP3I6EWBmDeI8gBQAXM7IOSLkhaJGnU3f8w5JIAgCAHAJUws0WSviFpXFIv\na/8CaASRXaILAOrJ3S+Y2acknSfEAWgUTHYAgMrlCg8AaAgEOQAAgIgiyAEAAEQUkx0AAAAiio4c\nAABARBHkAAAAIoogBwAAEFEEOQAAgIgiyAEAAEQUQQ4AACCiCHIAAAARRZADAACIqP8PnlBwmQFX\n3rIAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 720x432 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Rfj_h_20gkU9",
"colab_type": "text"
},
"source": [
"This plot reveals that our critical cases were consistently underestimated in our model. For instance, for all the values where Y = 1, their corresponding Y_hat values are all within a range of between 0.0 and 0.5. If our model was optimal, our desired Y_hat values would be much closer to 1 for critical case of COVID-19 then it is currently. "
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "MgIQPc4l9mJ-",
"colab_type": "text"
},
"source": [
"# Takeaway"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "tJcTffjz9qh-",
"colab_type": "text"
},
"source": [
"The big takeaway from this exercise is that current data publicly available on Kaggle is not enough. If the objective is to see how different variables effect the likelyhood that someone contracts a critical case of COVID-19, this dataset is insufficient. For public health officials, information scarcity (repressented accutely by this dataset) could me the difference between life and death for many. It is important that researchers, public health, and government officials have access to properly and consistently labeled data so that they can take informed measures to reduce the negative impacts of this pandemic. "
]
},
{
"cell_type": "code",
"metadata": {
"id": "Mk0VrZBFM8LV",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": 0,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment