diff --git a/module3/exo1/Untitled.ipynb b/module3/exo1/Untitled.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..7fec51502cbc3200b3d0ffc6bbba1fe85e197f3d --- /dev/null +++ b/module3/exo1/Untitled.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/module3/exo2/.ipynb b/module3/exo2/.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..14d057d745584329b45180a9684827be14aa39db --- /dev/null +++ b/module3/exo2/.ipynb @@ -0,0 +1,393 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Incidence du syndrome grippal" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import isoweek" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Les données de l'incidence du syndrome grippal sont disponibles du site Web du [Réseau Sentinelles](http://www.sentiweb.fr/). Nous les récupérons sous forme d'un fichier en format CSV dont chaque ligne correspond à une semaine de la période demandée. Nous téléchargeons toujours le jeu de données complet, qui commence en 1984 et se termine avec une semaine récente." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "data_url = \"http://www.sentiweb.fr/datasets/incidence-PAY-3.csv\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Voici l'explication des colonnes données [sur le site d'origine](https://ns.sentiweb.fr/incidence/csv-schema-v1.json):\n", + "\n", + "| Nom de colonne | Libellé de colonne |\n", + "|----------------|-----------------------------------------------------------------------------------------------------------------------------------|\n", + "| week | Semaine calendaire (ISO 8601) |\n", + "| indicator | Code de l'indicateur de surveillance |\n", + "| inc | Estimation de l'incidence de consultations en nombre de cas |\n", + "| inc_low | Estimation de la borne inférieure de l'IC95% du nombre de cas de consultation |\n", + "| inc_up | Estimation de la borne supérieure de l'IC95% du nombre de cas de consultation |\n", + "| inc100 | Estimation du taux d'incidence du nombre de cas de consultation (en cas pour 100,000 habitants) |\n", + "| inc100_low | Estimation de la borne inférieure de l'IC95% du taux d'incidence du nombre de cas de consultation (en cas pour 100,000 habitants) |\n", + "| inc100_up | Estimation de la borne supérieure de l'IC95% du taux d'incidence du nombre de cas de consultation (en cas pour 100,000 habitants) |\n", + "| geo_insee | Code de la zone géographique concernée (Code INSEE) http://www.insee.fr/fr/methodes/nomenclatures/cog/ |\n", + "| geo_name | Libellé de la zone géographique (ce libellé peut être modifié sans préavis) |\n", + "\n", + "La première ligne du fichier CSV est un commentaire, que nous ignorons en précisant `skiprows=1`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On vérifie qu'une copie locale n'existe pas. Pour cela, on se donne un nom de fichier, data_file, ainsi qu'un répertoire, folder_path. S'il n'existe pas, on le crée à partir de data_url, en sauvegardant les données localement. On travaillera ensuite avec ces données locales." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os.path\n", + "data_file = \"inciden-PAY-3.csv\"\n", + "folder_path = \"myLocalisation/\"\n", + "if not (os.path.exists(folder_path + data_file)) : \n", + " df = pd.read_csv(data_url)\n", + " df.to_csv(folder_path + data_file, sep = '\\t')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "raw_data = pd.read_csv(data_file, skiprows=1)\n", + "raw_data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Y a-t-il des points manquants dans ce jeux de données ? Oui, la semaine 19 de l'année 1989 n'a pas de valeurs associées." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "raw_data[raw_data.isnull().any(axis=1)]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nous éliminons ce point, ce qui n'a pas d'impact fort sur notre analyse qui est assez simple." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data = raw_data.dropna().copy()\n", + "data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nos données utilisent une convention inhabituelle: le numéro de\n", + "semaine est collé à l'année, donnant l'impression qu'il s'agit\n", + "de nombre entier. C'est comme ça que Pandas les interprète.\n", + " \n", + "Un deuxième problème est que Pandas ne comprend pas les numéros de\n", + "semaine. Il faut lui fournir les dates de début et de fin de\n", + "semaine. Nous utilisons pour cela la bibliothèque `isoweek`.\n", + "\n", + "Comme la conversion des semaines est devenu assez complexe, nous\n", + "écrivons une petite fonction Python pour cela. Ensuite, nous\n", + "l'appliquons à tous les points de nos donnés. Les résultats vont\n", + "dans une nouvelle colonne 'period'." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def convert_week(year_and_week_int):\n", + " year_and_week_str = str(year_and_week_int)\n", + " year = int(year_and_week_str[:4])\n", + " week = int(year_and_week_str[4:])\n", + " w = isoweek.Week(year, week)\n", + " return pd.Period(w.day(0), 'W')\n", + "\n", + "data['period'] = [convert_week(yw) for yw in data['week']]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Il restent deux petites modifications à faire.\n", + "\n", + "Premièrement, nous définissons les périodes d'observation\n", + "comme nouvel index de notre jeux de données. Ceci en fait\n", + "une suite chronologique, ce qui sera pratique par la suite.\n", + "\n", + "Deuxièmement, nous trions les points par période, dans\n", + "le sens chronologique." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "sorted_data = data.set_index('period').sort_index()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nous vérifions la cohérence des données. Entre la fin d'une période et\n", + "le début de la période qui suit, la différence temporelle doit être\n", + "zéro, ou au moins très faible. Nous laissons une \"marge d'erreur\"\n", + "d'une seconde.\n", + "\n", + "Ceci s'avère tout à fait juste sauf pour deux périodes consécutives\n", + "entre lesquelles il manque une semaine.\n", + "\n", + "Nous reconnaissons ces dates: c'est la semaine sans observations\n", + "que nous avions supprimées !" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "periods = sorted_data.index\n", + "for p1, p2 in zip(periods[:-1], periods[1:]):\n", + " delta = p2.to_timestamp() - p1.end_time\n", + " if delta > pd.Timedelta('1s'):\n", + " print(p1, p2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Un premier regard sur les données !" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sorted_data['inc'].plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Un zoom sur les dernières années montre mieux la situation des pics en hiver. Le creux des incidences se trouve en été." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sorted_data['inc'][-200:].plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Etude de l'incidence annuelle" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Etant donné que le pic de l'épidémie se situe en hiver, à cheval\n", + "entre deux années civiles, nous définissons la période de référence\n", + "entre deux minima de l'incidence, du 1er août de l'année $N$ au\n", + "1er août de l'année $N+1$.\n", + "\n", + "Notre tâche est un peu compliquée par le fait que l'année ne comporte\n", + "pas un nombre entier de semaines. Nous modifions donc un peu nos périodes\n", + "de référence: à la place du 1er août de chaque année, nous utilisons le\n", + "premier jour de la semaine qui contient le 1er août.\n", + "\n", + "Comme l'incidence de syndrome grippal est très faible en été, cette\n", + "modification ne risque pas de fausser nos conclusions.\n", + "\n", + "Encore un petit détail: les données commencent an octobre 1984, ce qui\n", + "rend la première année incomplète. Nous commençons donc l'analyse en 1985." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "first_august_week = [pd.Period(pd.Timestamp(y, 8, 1), 'W')\n", + " for y in range(1985,\n", + " sorted_data.index[-1].year)]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En partant de cette liste des semaines qui contiennent un 1er août, nous obtenons nos intervalles d'environ un an comme les périodes entre deux semaines adjacentes dans cette liste. Nous calculons les sommes des incidences hebdomadaires pour toutes ces périodes.\n", + "\n", + "Nous vérifions également que ces périodes contiennent entre 51 et 52 semaines, pour nous protéger contre des éventuelles erreurs dans notre code." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "year = []\n", + "yearly_incidence = []\n", + "for week1, week2 in zip(first_august_week[:-1],\n", + " first_august_week[1:]):\n", + " one_year = sorted_data['inc'][week1:week2-1]\n", + " assert abs(len(one_year)-52) < 2\n", + " yearly_incidence.append(one_year.sum())\n", + " year.append(week2.year)\n", + "yearly_incidence = pd.Series(data=yearly_incidence, index=year)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Voici les incidences annuelles." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "yearly_incidence.plot(style='*')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Une liste triée permet de plus facilement répérer les valeurs les plus élevées (à la fin)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "yearly_incidence.sort_values()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Enfin, un histogramme montre bien que les épidémies fortes, qui touchent environ 10% de la population\n", + " française, sont assez rares: il y en eu trois au cours des 35 dernières années." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "yearly_incidence.hist(xrot=20)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/module3/exo2/analyse-syndrome-var.ipynb b/module3/exo2/analyse-syndrome-var.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..be611faf77d2bc491de08147f09e26911100e792 --- /dev/null +++ b/module3/exo2/analyse-syndrome-var.ipynb @@ -0,0 +1,2395 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Incidence du syndrome varicelle" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import isoweek" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Les données de l'incidence du syndrome varicelle sont disponibles du site Web du [Réseau Sentinelles](http://www.sentiweb.fr/). Nous les récupérons sous forme d'un fichier en format CSV dont chaque ligne correspond à une semaine de la période demandée. Nous téléchargeons toujours le jeu de données complet, qui commence en 1984 et se termine avec une semaine récente." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "data_url = \"http://www.sentiweb.fr/datasets/incidence-PAY-7.csv\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Voici l'explication des colonnes données [sur le site d'origine](https://ns.sentiweb.fr/incidence/csv-schema-v1.json):\n", + "\n", + "| Nom de colonne | Libellé de colonne |\n", + "|----------------|-----------------------------------------------------------------------------------------------------------------------------------|\n", + "| week | Semaine calendaire (ISO 8601) |\n", + "| indicator | Code de l'indicateur de surveillance |\n", + "| inc | Estimation de l'incidence de consultations en nombre de cas |\n", + "| inc_low | Estimation de la borne inférieure de l'IC95% du nombre de cas de consultation |\n", + "| inc_up | Estimation de la borne supérieure de l'IC95% du nombre de cas de consultation |\n", + "| inc100 | Estimation du taux d'incidence du nombre de cas de consultation (en cas pour 100,000 habitants) |\n", + "| inc100_low | Estimation de la borne inférieure de l'IC95% du taux d'incidence du nombre de cas de consultation (en cas pour 100,000 habitants) |\n", + "| inc100_up | Estimation de la borne supérieure de l'IC95% du taux d'incidence du nombre de cas de consultation (en cas pour 100,000 habitants) |\n", + "| geo_insee | Code de la zone géographique concernée (Code INSEE) http://www.insee.fr/fr/methodes/nomenclatures/cog/ |\n", + "| geo_name | Libellé de la zone géographique (ce libellé peut être modifié sans préavis) |\n", + "\n", + "La première ligne du fichier CSV est un commentaire, que nous ignorons en précisant `skiprows=1`." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
weekindicatorincinc_lowinc_upinc100inc100_lowinc100_upgeo_inseegeo_name
02020207848251671102FRFrance
120201973100753001FRFrance
22020187849981600102FRFrance
320201772720658001FRFrance
42020167758781438102FRFrance
5202015719186753161315FRFrance
62020147387922275531639FRFrance
7202013773265236941611814FRFrance
82020127812357901045612816FRFrance
9202011710198756812828151119FRFrance
1020201079011669111331141018FRFrance
112020097136311054416718211626FRFrance
12202008710424770813140161220FRFrance
1320200778959657411344141018FRFrance
1420200679264692511603141018FRFrance
1520200578505631410696131016FRFrance
162020047799158311015112915FRFrance
1720200375968410078369612FRFrance
18202002765344530853810713FRFrance
1920200179835701912651151119FRFrance
202019527794152461063612816FRFrance
2120195175823367579719612FRFrance
22201950764244276857210713FRFrance
23201949766214540870210713FRFrance
2420194875542338377018511FRFrance
252019477753650581001411715FRFrance
262019467263813163960426FRFrance
2720194574492261563697410FRFrance
2820194475728362778299612FRFrance
2920194374834275169177410FRFrance
.................................
15071991267176081130423912312042FRFrance
15081991257161691070021638281838FRFrance
15091991247161711007122271281739FRFrance
1510199123711947767116223211329FRFrance
1511199122715452995320951271737FRFrance
1512199121714903897520831261636FRFrance
15131991207190531274225364342345FRFrance
15141991197167391124622232291939FRFrance
15151991187213851388228888382551FRFrance
1516199117713462887718047241632FRFrance
15171991167148571006819646261834FRFrance
1518199115713975978118169251832FRFrance
1519199114712265768416846221430FRFrance
152019911379567604113093171123FRFrance
1521199112710864733114397191325FRFrance
15221991117155741118419964271935FRFrance
15231991107166431137221914292038FRFrance
1524199109713741878018702241533FRFrance
1525199108713289881317765231531FRFrance
1526199107712337807716597221529FRFrance
1527199106710877701314741191226FRFrance
1528199105710442654414340181125FRFrance
15291991047791345631126314820FRFrance
15301991037153871048420290271836FRFrance
15311991027162771104621508292038FRFrance
15321991017155651027120859271836FRFrance
15331990527193751329525455342345FRFrance
15341990517190801380724353342543FRFrance
1535199050711079666015498201228FRFrance
15361990497114302610205FRFrance
\n", + "

1537 rows × 10 columns

\n", + "
" + ], + "text/plain": [ + " week indicator inc inc_low inc_up inc100 inc100_low \\\n", + "0 202020 7 848 25 1671 1 0 \n", + "1 202019 7 310 0 753 0 0 \n", + "2 202018 7 849 98 1600 1 0 \n", + "3 202017 7 272 0 658 0 0 \n", + "4 202016 7 758 78 1438 1 0 \n", + "5 202015 7 1918 675 3161 3 1 \n", + "6 202014 7 3879 2227 5531 6 3 \n", + "7 202013 7 7326 5236 9416 11 8 \n", + "8 202012 7 8123 5790 10456 12 8 \n", + "9 202011 7 10198 7568 12828 15 11 \n", + "10 202010 7 9011 6691 11331 14 10 \n", + "11 202009 7 13631 10544 16718 21 16 \n", + "12 202008 7 10424 7708 13140 16 12 \n", + "13 202007 7 8959 6574 11344 14 10 \n", + "14 202006 7 9264 6925 11603 14 10 \n", + "15 202005 7 8505 6314 10696 13 10 \n", + "16 202004 7 7991 5831 10151 12 9 \n", + "17 202003 7 5968 4100 7836 9 6 \n", + "18 202002 7 6534 4530 8538 10 7 \n", + "19 202001 7 9835 7019 12651 15 11 \n", + "20 201952 7 7941 5246 10636 12 8 \n", + "21 201951 7 5823 3675 7971 9 6 \n", + "22 201950 7 6424 4276 8572 10 7 \n", + "23 201949 7 6621 4540 8702 10 7 \n", + "24 201948 7 5542 3383 7701 8 5 \n", + "25 201947 7 7536 5058 10014 11 7 \n", + "26 201946 7 2638 1316 3960 4 2 \n", + "27 201945 7 4492 2615 6369 7 4 \n", + "28 201944 7 5728 3627 7829 9 6 \n", + "29 201943 7 4834 2751 6917 7 4 \n", + "... ... ... ... ... ... ... ... \n", + "1507 199126 7 17608 11304 23912 31 20 \n", + "1508 199125 7 16169 10700 21638 28 18 \n", + "1509 199124 7 16171 10071 22271 28 17 \n", + "1510 199123 7 11947 7671 16223 21 13 \n", + "1511 199122 7 15452 9953 20951 27 17 \n", + "1512 199121 7 14903 8975 20831 26 16 \n", + "1513 199120 7 19053 12742 25364 34 23 \n", + "1514 199119 7 16739 11246 22232 29 19 \n", + "1515 199118 7 21385 13882 28888 38 25 \n", + "1516 199117 7 13462 8877 18047 24 16 \n", + "1517 199116 7 14857 10068 19646 26 18 \n", + "1518 199115 7 13975 9781 18169 25 18 \n", + "1519 199114 7 12265 7684 16846 22 14 \n", + "1520 199113 7 9567 6041 13093 17 11 \n", + "1521 199112 7 10864 7331 14397 19 13 \n", + "1522 199111 7 15574 11184 19964 27 19 \n", + "1523 199110 7 16643 11372 21914 29 20 \n", + "1524 199109 7 13741 8780 18702 24 15 \n", + "1525 199108 7 13289 8813 17765 23 15 \n", + "1526 199107 7 12337 8077 16597 22 15 \n", + "1527 199106 7 10877 7013 14741 19 12 \n", + "1528 199105 7 10442 6544 14340 18 11 \n", + "1529 199104 7 7913 4563 11263 14 8 \n", + "1530 199103 7 15387 10484 20290 27 18 \n", + "1531 199102 7 16277 11046 21508 29 20 \n", + "1532 199101 7 15565 10271 20859 27 18 \n", + "1533 199052 7 19375 13295 25455 34 23 \n", + "1534 199051 7 19080 13807 24353 34 25 \n", + "1535 199050 7 11079 6660 15498 20 12 \n", + "1536 199049 7 1143 0 2610 2 0 \n", + "\n", + " inc100_up geo_insee geo_name \n", + "0 2 FR France \n", + "1 1 FR France \n", + "2 2 FR France \n", + "3 1 FR France \n", + "4 2 FR France \n", + "5 5 FR France \n", + "6 9 FR France \n", + "7 14 FR France \n", + "8 16 FR France \n", + "9 19 FR France \n", + "10 18 FR France \n", + "11 26 FR France \n", + "12 20 FR France \n", + "13 18 FR France \n", + "14 18 FR France \n", + "15 16 FR France \n", + "16 15 FR France \n", + "17 12 FR France \n", + "18 13 FR France \n", + "19 19 FR France \n", + "20 16 FR France \n", + "21 12 FR France \n", + "22 13 FR France \n", + "23 13 FR France \n", + "24 11 FR France \n", + "25 15 FR France \n", + "26 6 FR France \n", + "27 10 FR France \n", + "28 12 FR France \n", + "29 10 FR France \n", + "... ... ... ... \n", + "1507 42 FR France \n", + "1508 38 FR France \n", + "1509 39 FR France \n", + "1510 29 FR France \n", + "1511 37 FR France \n", + "1512 36 FR France \n", + "1513 45 FR France \n", + "1514 39 FR France \n", + "1515 51 FR France \n", + "1516 32 FR France \n", + "1517 34 FR France \n", + "1518 32 FR France \n", + "1519 30 FR France \n", + "1520 23 FR France \n", + "1521 25 FR France \n", + "1522 35 FR France \n", + "1523 38 FR France \n", + "1524 33 FR France \n", + "1525 31 FR France \n", + "1526 29 FR France \n", + "1527 26 FR France \n", + "1528 25 FR France \n", + "1529 20 FR France \n", + "1530 36 FR France \n", + "1531 38 FR France \n", + "1532 36 FR France \n", + "1533 45 FR France \n", + "1534 43 FR France \n", + "1535 28 FR France \n", + "1536 5 FR France \n", + "\n", + "[1537 rows x 10 columns]" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "raw_data = pd.read_csv(data_url, skiprows=1)\n", + "raw_data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Y a-t-il des points manquants dans ce jeux de données ? A priori, non." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
weekindicatorincinc_lowinc_upinc100inc100_lowinc100_upgeo_inseegeo_name
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [week, indicator, inc, inc_low, inc_up, inc100, inc100_low, inc100_up, geo_insee, geo_name]\n", + "Index: []" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "raw_data[raw_data.isnull().any(axis=1)]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nous éliminons ce point, ce qui n'a pas d'impact fort sur notre analyse qui est assez simple." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
weekindicatorincinc_lowinc_upinc100inc100_lowinc100_upgeo_inseegeo_name
02020207848251671102FRFrance
120201973100753001FRFrance
22020187849981600102FRFrance
320201772720658001FRFrance
42020167758781438102FRFrance
5202015719186753161315FRFrance
62020147387922275531639FRFrance
7202013773265236941611814FRFrance
82020127812357901045612816FRFrance
9202011710198756812828151119FRFrance
1020201079011669111331141018FRFrance
112020097136311054416718211626FRFrance
12202008710424770813140161220FRFrance
1320200778959657411344141018FRFrance
1420200679264692511603141018FRFrance
1520200578505631410696131016FRFrance
162020047799158311015112915FRFrance
1720200375968410078369612FRFrance
18202002765344530853810713FRFrance
1920200179835701912651151119FRFrance
202019527794152461063612816FRFrance
2120195175823367579719612FRFrance
22201950764244276857210713FRFrance
23201949766214540870210713FRFrance
2420194875542338377018511FRFrance
252019477753650581001411715FRFrance
262019467263813163960426FRFrance
2720194574492261563697410FRFrance
2820194475728362778299612FRFrance
2920194374834275169177410FRFrance
.................................
15071991267176081130423912312042FRFrance
15081991257161691070021638281838FRFrance
15091991247161711007122271281739FRFrance
1510199123711947767116223211329FRFrance
1511199122715452995320951271737FRFrance
1512199121714903897520831261636FRFrance
15131991207190531274225364342345FRFrance
15141991197167391124622232291939FRFrance
15151991187213851388228888382551FRFrance
1516199117713462887718047241632FRFrance
15171991167148571006819646261834FRFrance
1518199115713975978118169251832FRFrance
1519199114712265768416846221430FRFrance
152019911379567604113093171123FRFrance
1521199112710864733114397191325FRFrance
15221991117155741118419964271935FRFrance
15231991107166431137221914292038FRFrance
1524199109713741878018702241533FRFrance
1525199108713289881317765231531FRFrance
1526199107712337807716597221529FRFrance
1527199106710877701314741191226FRFrance
1528199105710442654414340181125FRFrance
15291991047791345631126314820FRFrance
15301991037153871048420290271836FRFrance
15311991027162771104621508292038FRFrance
15321991017155651027120859271836FRFrance
15331990527193751329525455342345FRFrance
15341990517190801380724353342543FRFrance
1535199050711079666015498201228FRFrance
15361990497114302610205FRFrance
\n", + "

1537 rows × 10 columns

\n", + "
" + ], + "text/plain": [ + " week indicator inc inc_low inc_up inc100 inc100_low \\\n", + "0 202020 7 848 25 1671 1 0 \n", + "1 202019 7 310 0 753 0 0 \n", + "2 202018 7 849 98 1600 1 0 \n", + "3 202017 7 272 0 658 0 0 \n", + "4 202016 7 758 78 1438 1 0 \n", + "5 202015 7 1918 675 3161 3 1 \n", + "6 202014 7 3879 2227 5531 6 3 \n", + "7 202013 7 7326 5236 9416 11 8 \n", + "8 202012 7 8123 5790 10456 12 8 \n", + "9 202011 7 10198 7568 12828 15 11 \n", + "10 202010 7 9011 6691 11331 14 10 \n", + "11 202009 7 13631 10544 16718 21 16 \n", + "12 202008 7 10424 7708 13140 16 12 \n", + "13 202007 7 8959 6574 11344 14 10 \n", + "14 202006 7 9264 6925 11603 14 10 \n", + "15 202005 7 8505 6314 10696 13 10 \n", + "16 202004 7 7991 5831 10151 12 9 \n", + "17 202003 7 5968 4100 7836 9 6 \n", + "18 202002 7 6534 4530 8538 10 7 \n", + "19 202001 7 9835 7019 12651 15 11 \n", + "20 201952 7 7941 5246 10636 12 8 \n", + "21 201951 7 5823 3675 7971 9 6 \n", + "22 201950 7 6424 4276 8572 10 7 \n", + "23 201949 7 6621 4540 8702 10 7 \n", + "24 201948 7 5542 3383 7701 8 5 \n", + "25 201947 7 7536 5058 10014 11 7 \n", + "26 201946 7 2638 1316 3960 4 2 \n", + "27 201945 7 4492 2615 6369 7 4 \n", + "28 201944 7 5728 3627 7829 9 6 \n", + "29 201943 7 4834 2751 6917 7 4 \n", + "... ... ... ... ... ... ... ... \n", + "1507 199126 7 17608 11304 23912 31 20 \n", + "1508 199125 7 16169 10700 21638 28 18 \n", + "1509 199124 7 16171 10071 22271 28 17 \n", + "1510 199123 7 11947 7671 16223 21 13 \n", + "1511 199122 7 15452 9953 20951 27 17 \n", + "1512 199121 7 14903 8975 20831 26 16 \n", + "1513 199120 7 19053 12742 25364 34 23 \n", + "1514 199119 7 16739 11246 22232 29 19 \n", + "1515 199118 7 21385 13882 28888 38 25 \n", + "1516 199117 7 13462 8877 18047 24 16 \n", + "1517 199116 7 14857 10068 19646 26 18 \n", + "1518 199115 7 13975 9781 18169 25 18 \n", + "1519 199114 7 12265 7684 16846 22 14 \n", + "1520 199113 7 9567 6041 13093 17 11 \n", + "1521 199112 7 10864 7331 14397 19 13 \n", + "1522 199111 7 15574 11184 19964 27 19 \n", + "1523 199110 7 16643 11372 21914 29 20 \n", + "1524 199109 7 13741 8780 18702 24 15 \n", + "1525 199108 7 13289 8813 17765 23 15 \n", + "1526 199107 7 12337 8077 16597 22 15 \n", + "1527 199106 7 10877 7013 14741 19 12 \n", + "1528 199105 7 10442 6544 14340 18 11 \n", + "1529 199104 7 7913 4563 11263 14 8 \n", + "1530 199103 7 15387 10484 20290 27 18 \n", + "1531 199102 7 16277 11046 21508 29 20 \n", + "1532 199101 7 15565 10271 20859 27 18 \n", + "1533 199052 7 19375 13295 25455 34 23 \n", + "1534 199051 7 19080 13807 24353 34 25 \n", + "1535 199050 7 11079 6660 15498 20 12 \n", + "1536 199049 7 1143 0 2610 2 0 \n", + "\n", + " inc100_up geo_insee geo_name \n", + "0 2 FR France \n", + "1 1 FR France \n", + "2 2 FR France \n", + "3 1 FR France \n", + "4 2 FR France \n", + "5 5 FR France \n", + "6 9 FR France \n", + "7 14 FR France \n", + "8 16 FR France \n", + "9 19 FR France \n", + "10 18 FR France \n", + "11 26 FR France \n", + "12 20 FR France \n", + "13 18 FR France \n", + "14 18 FR France \n", + "15 16 FR France \n", + "16 15 FR France \n", + "17 12 FR France \n", + "18 13 FR France \n", + "19 19 FR France \n", + "20 16 FR France \n", + "21 12 FR France \n", + "22 13 FR France \n", + "23 13 FR France \n", + "24 11 FR France \n", + "25 15 FR France \n", + "26 6 FR France \n", + "27 10 FR France \n", + "28 12 FR France \n", + "29 10 FR France \n", + "... ... ... ... \n", + "1507 42 FR France \n", + "1508 38 FR France \n", + "1509 39 FR France \n", + "1510 29 FR France \n", + "1511 37 FR France \n", + "1512 36 FR France \n", + "1513 45 FR France \n", + "1514 39 FR France \n", + "1515 51 FR France \n", + "1516 32 FR France \n", + "1517 34 FR France \n", + "1518 32 FR France \n", + "1519 30 FR France \n", + "1520 23 FR France \n", + "1521 25 FR France \n", + "1522 35 FR France \n", + "1523 38 FR France \n", + "1524 33 FR France \n", + "1525 31 FR France \n", + "1526 29 FR France \n", + "1527 26 FR France \n", + "1528 25 FR France \n", + "1529 20 FR France \n", + "1530 36 FR France \n", + "1531 38 FR France \n", + "1532 36 FR France \n", + "1533 45 FR France \n", + "1534 43 FR France \n", + "1535 28 FR France \n", + "1536 5 FR France \n", + "\n", + "[1537 rows x 10 columns]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = raw_data.dropna().copy()\n", + "data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nos données utilisent une convention inhabituelle: le numéro de\n", + "semaine est collé à l'année, donnant l'impression qu'il s'agit\n", + "de nombre entier. C'est comme ça que Pandas les interprète.\n", + " \n", + "Un deuxième problème est que Pandas ne comprend pas les numéros de\n", + "semaine. Il faut lui fournir les dates de début et de fin de\n", + "semaine. Nous utilisons pour cela la bibliothèque `isoweek`.\n", + "\n", + "Comme la conversion des semaines est devenu assez complexe, nous\n", + "écrivons une petite fonction Python pour cela. Ensuite, nous\n", + "l'appliquons à tous les points de nos donnés. Les résultats vont\n", + "dans une nouvelle colonne 'period'." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "def convert_week(year_and_week_int):\n", + " year_and_week_str = str(year_and_week_int)\n", + " year = int(year_and_week_str[:4])\n", + " week = int(year_and_week_str[4:])\n", + " w = isoweek.Week(year, week)\n", + " return pd.Period(w.day(0), 'W')\n", + "\n", + "data['period'] = [convert_week(yw) for yw in data['week']]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Il restent deux petites modifications à faire.\n", + "\n", + "Premièrement, nous définissons les périodes d'observation\n", + "comme nouvel index de notre jeux de données. Ceci en fait\n", + "une suite chronologique, ce qui sera pratique par la suite.\n", + "\n", + "Deuxièmement, nous trions les points par période, dans\n", + "le sens chronologique." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "sorted_data = data.set_index('period').sort_index()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nous vérifions la cohérence des données. Entre la fin d'une période et\n", + "le début de la période qui suit, la différence temporelle doit être\n", + "zéro, ou au moins très faible. Nous laissons une \"marge d'erreur\"\n", + "d'une seconde.\n", + "\n", + "Ceci s'avère tout à fait juste sauf pour deux périodes consécutives\n", + "entre lesquelles il manque une semaine.\n", + "\n", + "Nous reconnaissons ces dates: c'est la semaine sans observations\n", + "que nous avions supprimées !" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "periods = sorted_data.index\n", + "for p1, p2 in zip(periods[:-1], periods[1:]):\n", + " delta = p2.to_timestamp() - p1.end_time\n", + " if delta > pd.Timedelta('1s'):\n", + " print(p1, p2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Un premier regard sur les données !" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sorted_data['inc'].plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Un zoom sur les dernières années montre mieux la situation des pics au printemps et en été. Le creux des incidences se trouve à la fin de l'été." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sorted_data['inc'][-100:].plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Etude de l'incidence annuelle" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Etant donné que le pic de l'épidémie se situe en hiver, à cheval\n", + "entre deux années civiles, nous définissons la période de référence\n", + "entre deux minima de l'incidence, du 1er août de l'année $N$ au\n", + "1er août de l'année $N+1$.\n", + "\n", + "Notre tâche est un peu compliquée par le fait que l'année ne comporte\n", + "pas un nombre entier de semaines. Nous modifions donc un peu nos périodes\n", + "de référence: à la place du 1er août de chaque année, nous utilisons le\n", + "premier jour de la semaine qui contient le 1er août.\n", + "\n", + "Comme l'incidence de syndrome grippal est très faible en été, cette\n", + "modification ne risque pas de fausser nos conclusions.\n", + "\n", + "Encore un petit détail: les données commencent an octobre 1984, ce qui\n", + "rend la première année incomplète. Nous commençons donc l'analyse en 1985." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "first_august_week = [pd.Period(pd.Timestamp(y, 8, 1), 'W')\n", + " for y in range(1991,\n", + " sorted_data.index[-1].year)]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En partant de cette liste des semaines qui contiennent un 1er août, nous obtenons nos intervalles d'environ un an comme les périodes entre deux semaines adjacentes dans cette liste. Nous calculons les sommes des incidences hebdomadaires pour toutes ces périodes.\n", + "\n", + "Nous vérifions également que ces périodes contiennent entre 51 et 52 semaines, pour nous protéger contre des éventuelles erreurs dans notre code." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "year = []\n", + "yearly_incidence = []\n", + "for week1, week2 in zip(first_august_week[:-1],\n", + " first_august_week[1:]):\n", + " one_year = sorted_data['inc'][week1:week2-1]\n", + " assert abs(len(one_year)-52) < 2\n", + " yearly_incidence.append(one_year.sum())\n", + " year.append(week2.year)\n", + "yearly_incidence = pd.Series(data=yearly_incidence, index=year)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Voici les incidences annuelles." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "yearly_incidence.plot(style='*')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Une liste triée permet de plus facilement répérer les valeurs les plus élevées (à la fin)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "yearly_incidence.sort_values()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Enfin, un histogramme montre bien que les épidémies fortes, qui touchent environ 10% de la population\n", + " française, sont assez rares: il y en eu trois au cours des 35 dernières années." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "yearly_incidence.hist(xrot=20)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/module4/src_Python3_challenger.ipynb b/module4/src_Python3_challenger.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..59b4d0ae2af9be254a47255677d1604736f33bdc --- /dev/null +++ b/module4/src_Python3_challenger.ipynb @@ -0,0 +1,812 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Risk Analysis of the Space Shuttle: Pre-Challenger Prediction of Failure" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this document we reperform some of the analysis provided in \n", + "*Risk Analysis of the Space Shuttle: Pre-Challenger Prediction of Failure* by *Siddhartha R. Dalal, Edward B. Fowlkes, Bruce Hoadley* published in *Journal of the American Statistical Association*, Vol. 84, No. 408 (Dec., 1989), pp. 945-957 and available at http://www.jstor.org/stable/2290069. \n", + "\n", + "On the fourth page of this article, they indicate that the maximum likelihood estimates of the logistic regression using only temperature are: $\\hat{\\alpha}=5.085$ and $\\hat{\\beta}=-0.1156$ and their asymptotic standard errors are $s_{\\hat{\\alpha}}=3.052$ and $s_{\\hat{\\beta}}=0.047$. The Goodness of fit indicated for this model was $G^2=18.086$ with 21 degrees of freedom. Our goal is to reproduce the computation behind these values and the Figure 4 of this article, possibly in a nicer looking way." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Technical information on the computer on which the analysis is run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will be using the python3 language using the pandas, statsmodels, numpy, matplotlib and seaborn libraries." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3.6.4 |Anaconda, Inc.| (default, Mar 13 2018, 01:15:57) \n", + "[GCC 7.2.0]\n", + "uname_result(system='Linux', node='a7ade41352bb', release='4.4.0-164-generic', version='#192-Ubuntu SMP Fri Sep 13 12:02:50 UTC 2019', machine='x86_64', processor='x86_64')\n", + "IPython 7.12.0\n", + "IPython.core.release 7.12.0\n", + "PIL 7.0.0\n", + "PIL.Image 7.0.0\n", + "PIL._version 7.0.0\n", + "_csv 1.0\n", + "_ctypes 1.1.0\n", + "_curses b'2.2'\n", + "decimal 1.70\n", + "argparse 1.1\n", + "backcall 0.1.0\n", + "cffi 1.13.2\n", + "csv 1.0\n", + "ctypes 1.1.0\n", + "cycler 0.10.0\n", + "dateutil 2.8.1\n", + "decimal 1.70\n", + "decorator 4.4.1\n", + "distutils 3.6.4\n", + "ipaddress 1.0\n", + "ipykernel 5.1.4\n", + "ipykernel._version 5.1.4\n", + "ipython_genutils 0.2.0\n", + "ipython_genutils._version 0.2.0\n", + "ipywidgets 7.2.1\n", + "ipywidgets._version 7.2.1\n", + "jedi 0.16.0\n", + "json 2.0.9\n", + "jupyter_client 6.0.0\n", + "jupyter_client._version 6.0.0\n", + "jupyter_core 4.6.3\n", + "jupyter_core.version 4.6.3\n", + "kiwisolver 1.1.0\n", + "logging 0.5.1.2\n", + "matplotlib 2.2.3\n", + "matplotlib.backends.backend_agg 2.2.3\n", + "numpy 1.15.2\n", + "numpy.core 1.15.2\n", + "numpy.core.multiarray 3.1\n", + "numpy.lib 1.15.2\n", + "numpy.linalg._umath_linalg b'0.1.5'\n", + "numpy.matlib 1.15.2\n", + "optparse 1.5.3\n", + "pandas 0.22.0\n", + "_libjson 1.33\n", + "parso 0.6.0\n", + "patsy 0.5.1\n", + "patsy.version 0.5.1\n", + "pexpect 4.8.0\n", + "pickleshare 0.7.5\n", + "platform 1.0.8\n", + "prompt_toolkit 3.0.3\n", + "ptyprocess 0.6.0\n", + "pygments 2.5.2\n", + "pyparsing 2.4.6\n", + "pytz 2019.3\n", + "re 2.2.1\n", + "scipy 1.1.0\n", + "scipy._lib.decorator 4.0.5\n", + "scipy._lib.six 1.2.0\n", + "scipy.fftpack._fftpack b'$Revision: $'\n", + "scipy.fftpack.convolve b'$Revision: $'\n", + "scipy.integrate._dop b'$Revision: $'\n", + "scipy.integrate._ode $Id$\n", + "scipy.integrate._odepack 1.9 \n", + "scipy.integrate._quadpack 1.13 \n", + "scipy.integrate.lsoda b'$Revision: $'\n", + "scipy.integrate.vode b'$Revision: $'\n", + "scipy.interpolate._fitpack 1.7 \n", + "scipy.interpolate.dfitpack b'$Revision: $'\n", + "scipy.linalg 0.4.9\n", + "scipy.linalg._fblas b'$Revision: $'\n", + "scipy.linalg._flapack b'$Revision: $'\n", + "scipy.linalg._flinalg b'$Revision: $'\n", + "scipy.ndimage 2.0\n", + "scipy.optimize._cobyla b'$Revision: $'\n", + "scipy.optimize._lbfgsb b'$Revision: $'\n", + "scipy.optimize._minpack 1.10 \n", + "scipy.optimize._nnls b'$Revision: $'\n", + "scipy.optimize._slsqp b'$Revision: $'\n", + "scipy.optimize.minpack2 b'$Revision: $'\n", + "scipy.signal.spline 0.2\n", + "scipy.sparse.linalg.eigen.arpack._arpack b'$Revision: $'\n", + "scipy.sparse.linalg.isolve._iterative b'$Revision: $'\n", + "scipy.special.specfun b'$Revision: $'\n", + "scipy.stats.mvn b'$Revision: $'\n", + "scipy.stats.statlib b'$Revision: $'\n", + "seaborn 0.8.1\n", + "seaborn.external.husl 2.1.0\n", + "seaborn.external.six 1.10.0\n", + "six 1.14.0\n", + "statsmodels 0.9.0\n", + "statsmodels.__init__ 0.9.0\n", + "traitlets 4.3.3\n", + "traitlets._version 4.3.3\n", + "urllib.request 3.6\n", + "zlib 1.0\n", + "zmq 17.1.2\n", + "zmq.sugar 17.1.2\n", + "zmq.sugar.version 17.1.2\n" + ] + } + ], + "source": [ + "def print_imported_modules():\n", + " import sys\n", + " for name, val in sorted(sys.modules.items()):\n", + " if(hasattr(val, '__version__')): \n", + " print(val.__name__, val.__version__)\n", + "# else:\n", + "# print(val.__name__, \"(unknown version)\")\n", + "def print_sys_info():\n", + " import sys\n", + " import platform\n", + " print(sys.version)\n", + " print(platform.uname())\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import statsmodels.api as sm\n", + "import seaborn as sns\n", + "\n", + "print_sys_info()\n", + "print_imported_modules()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading and inspecting data\n", + "Let's start by reading data." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DateCountTemperaturePressureMalfunction
04/12/81666500
111/12/81670501
23/22/82669500
311/11/82668500
44/04/83667500
56/18/82672500
68/30/836731000
711/28/836701000
82/03/846572001
94/06/846632001
108/30/846702001
1110/05/846782000
1211/08/846672000
131/24/856532002
144/12/856672000
154/29/856752000
166/17/856702000
177/2903/856812000
188/27/856762000
1910/03/856792000
2010/30/856752002
2111/26/856762000
221/12/866582001
\n", + "
" + ], + "text/plain": [ + " Date Count Temperature Pressure Malfunction\n", + "0 4/12/81 6 66 50 0\n", + "1 11/12/81 6 70 50 1\n", + "2 3/22/82 6 69 50 0\n", + "3 11/11/82 6 68 50 0\n", + "4 4/04/83 6 67 50 0\n", + "5 6/18/82 6 72 50 0\n", + "6 8/30/83 6 73 100 0\n", + "7 11/28/83 6 70 100 0\n", + "8 2/03/84 6 57 200 1\n", + "9 4/06/84 6 63 200 1\n", + "10 8/30/84 6 70 200 1\n", + "11 10/05/84 6 78 200 0\n", + "12 11/08/84 6 67 200 0\n", + "13 1/24/85 6 53 200 2\n", + "14 4/12/85 6 67 200 0\n", + "15 4/29/85 6 75 200 0\n", + "16 6/17/85 6 70 200 0\n", + "17 7/2903/85 6 81 200 0\n", + "18 8/27/85 6 76 200 0\n", + "19 10/03/85 6 79 200 0\n", + "20 10/30/85 6 75 200 2\n", + "21 11/26/85 6 76 200 0\n", + "22 1/12/86 6 58 200 1" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = pd.read_csv(\"https://app-learninglab.inria.fr/moocrr/gitlab/moocrr-session3/moocrr-reproducibility-study/raw/master/data/shuttle.csv\")\n", + "data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We know from our previous experience on this data set that filtering data is a really bad idea. We will therefore process it as such." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "pd.set_option('mode.chained_assignment',None) # this removes a useless warning from pandas\n", + "import matplotlib.pyplot as plt\n", + "\n", + "data[\"Frequency\"]=data.Malfunction/data.Count\n", + "data.plot(x=\"Temperature\",y=\"Frequency\",kind=\"scatter\",ylim=[0,1])\n", + "plt.grid(True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Logistic regression\n", + "\n", + "Let's assume O-rings independently fail with the same probability which solely depends on temperature. A logistic regression should allow us to estimate the influence of temperature." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "
Generalized Linear Model Regression Results
Dep. Variable: Frequency No. Observations: 23
Model: GLM Df Residuals: 21
Model Family: Binomial Df Model: 1
Link Function: logit Scale: 1.0000
Method: IRLS Log-Likelihood: -3.9210
Date: Tue, 26 May 2020 Deviance: 3.0144
Time: 10:19:52 Pearson chi2: 5.00
No. Iterations: 6 Covariance Type: nonrobust
\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "
coef std err z P>|z| [0.025 0.975]
Intercept 5.0850 7.477 0.680 0.496 -9.570 19.740
Temperature -0.1156 0.115 -1.004 0.316 -0.341 0.110
" + ], + "text/plain": [ + "\n", + "\"\"\"\n", + " Generalized Linear Model Regression Results \n", + "==============================================================================\n", + "Dep. Variable: Frequency No. Observations: 23\n", + "Model: GLM Df Residuals: 21\n", + "Model Family: Binomial Df Model: 1\n", + "Link Function: logit Scale: 1.0000\n", + "Method: IRLS Log-Likelihood: -3.9210\n", + "Date: Tue, 26 May 2020 Deviance: 3.0144\n", + "Time: 10:19:52 Pearson chi2: 5.00\n", + "No. Iterations: 6 Covariance Type: nonrobust\n", + "===============================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "-------------------------------------------------------------------------------\n", + "Intercept 5.0850 7.477 0.680 0.496 -9.570 19.740\n", + "Temperature -0.1156 0.115 -1.004 0.316 -0.341 0.110\n", + "===============================================================================\n", + "\"\"\"" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import statsmodels.api as sm\n", + "\n", + "data[\"Success\"]=data.Count-data.Malfunction\n", + "data[\"Intercept\"]=1\n", + "\n", + "logmodel=sm.GLM(data['Frequency'], data[['Intercept','Temperature']], \n", + " family=sm.families.Binomial(sm.families.links.logit)).fit()\n", + "\n", + "logmodel.summary()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The maximum likelyhood estimator of the intercept and of Temperature are thus $\\hat{\\alpha}=5.0849$ and $\\hat{\\beta}=-0.1156$. This **corresponds** to the values from the article of Dalal *et al.* The standard errors are $s_{\\hat{\\alpha}} = 7.477$ and $s_{\\hat{\\beta}} = 0.115$, which is **different** from the $3.052$ and $0.04702$ reported by Dallal *et al.* The deviance is $3.01444$ with 21 degrees of freedom. I cannot find any value similar to the Goodness of fit ($G^2=18.086$) reported by Dalal *et al.* There seems to be something wrong. Oh I know, I haven't indicated that my observations are actually the result of 6 observations for each rocket launch. Let's indicate these weights (since the weights are always the same throughout all experiments, it does not change the estimates of the fit but it does influence the variance estimates)." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "
Generalized Linear Model Regression Results
Dep. Variable: Frequency No. Observations: 23
Model: GLM Df Residuals: 21
Model Family: Binomial Df Model: 1
Link Function: logit Scale: 1.0000
Method: IRLS Log-Likelihood: -23.526
Date: Tue, 26 May 2020 Deviance: 18.086
Time: 10:19:58 Pearson chi2: 30.0
No. Iterations: 6 Covariance Type: nonrobust
\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "
coef std err z P>|z| [0.025 0.975]
Intercept 5.0850 3.052 1.666 0.096 -0.898 11.068
Temperature -0.1156 0.047 -2.458 0.014 -0.208 -0.023
" + ], + "text/plain": [ + "\n", + "\"\"\"\n", + " Generalized Linear Model Regression Results \n", + "==============================================================================\n", + "Dep. Variable: Frequency No. Observations: 23\n", + "Model: GLM Df Residuals: 21\n", + "Model Family: Binomial Df Model: 1\n", + "Link Function: logit Scale: 1.0000\n", + "Method: IRLS Log-Likelihood: -23.526\n", + "Date: Tue, 26 May 2020 Deviance: 18.086\n", + "Time: 10:19:58 Pearson chi2: 30.0\n", + "No. Iterations: 6 Covariance Type: nonrobust\n", + "===============================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "-------------------------------------------------------------------------------\n", + "Intercept 5.0850 3.052 1.666 0.096 -0.898 11.068\n", + "Temperature -0.1156 0.047 -2.458 0.014 -0.208 -0.023\n", + "===============================================================================\n", + "\"\"\"" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "logmodel=sm.GLM(data['Frequency'], data[['Intercept','Temperature']], \n", + " family=sm.families.Binomial(sm.families.links.logit),\n", + " var_weights=data['Count']).fit()\n", + "\n", + "logmodel.summary()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Good, now I have recovered the asymptotic standard errors $s_{\\hat{\\alpha}}=3.052$ and $s_{\\hat{\\beta}}=0.047$.\n", + "The Goodness of fit (Deviance) indicated for this model is $G^2=18.086$ with 21 degrees of freedom (Df Residuals).\n", + "\n", + "**I have therefore managed to fully replicate the results of the Dalal *et al.* article**." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Predicting failure probability\n", + "The temperature when launching the shuttle was 31°F. Let's try to estimate the failure probability for such temperature using our model.:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "data_pred = pd.DataFrame({'Temperature': np.linspace(start=30, stop=90, num=121), 'Intercept': 1})\n", + "data_pred['Frequency'] = logmodel.predict(data_pred)\n", + "data_pred.plot(x=\"Temperature\",y=\"Frequency\",kind=\"line\",ylim=[0,1])\n", + "plt.scatter(x=data[\"Temperature\"],y=data[\"Frequency\"])\n", + "plt.grid(True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "hideCode": false, + "hidePrompt": false, + "scrolled": true + }, + "source": [ + "This figure is very similar to the Figure 4 of Dalal *et al.* **I have managed to replicate the Figure 4 of the Dalal *et al.* article.**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Computing and plotting uncertainty" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Following the documentation of [Seaborn](https://seaborn.pydata.org/generated/seaborn.regplot.html), I use regplot." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.6/site-packages/scipy/stats/stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n", + " return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEKCAYAAAAIO8L1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3Xl8VPW9+P/XmTWTSUIWsgAJYQs7ogVRVERRRNkVqQJVq2LVVvttrfeqt9ar9qr1/nrtrW1vK1rrWlrBhSWKVlBwQ3GNBMIeCEsWsmcy21l+f0wyEhJgEjKZJe/n45FH5pycOfl8IDPv+Wzvj2IYhoEQQghxHFOkCyCEECI6SYAQQgjRIQkQQgghOiQBQgghRIckQAghhOiQBAghhBAdCluAuO+++5g8eTKzZ8/u8OeGYfBf//VfTJ8+nTlz5lBcXByuogghhOiCsAWIq666imeeeeaEP9+0aROlpaW88847/PrXv+bBBx8MV1GEEEJ0QdgCxNlnn02fPn1O+PP169czf/58FEXhzDPPpKGhgcrKynAVRwghRCdFbAyioqKCnJyc4HFOTg4VFRWnfJ7Pr+Lza/hVDb+qo2o6mqaj6Qa6biALw4UQontYIvWLO3ojVxTllM+ra/RRUdV4yusUBZSWByYABRSUwHlFwdTy/bvjwGOT6bvHZpMSUpm6U2ZmMlUh1C9WSf1iVzzXDXpH/TorYgEiJyeH8vLy4HF5eTlZWVnddn/DAKPlgf7d2U7fR1HApCiYTUogeJhaHisKFnPrsUwGE0LEn4gFiGnTpvHSSy8xa9YsvvnmG5KTk7s1QHQXwwDNMND0EwcXhUBrw2w2YTErWMymlq+eb4EIIUR3CVuAuOuuu/jss8+ora3lwgsv5M4770RVVQAWLVrE1KlT2bhxI9OnT8fhcPDoo4+GqyhhZwCqbqDqGl5/259ZTApWiyn4ZTGbJGgIIWKCEmvpvitrmkMag4hWigJWswmb1YzdasJqMbf5eW/oB5X6xaZ4rhv0jvp1VsS6mHorwwCfquNTdZrcYFLAbjVjt5mxW82nvoEQQvQQCRARphvg9mm4fRqKApYEGx6fit1qlq4oIURESYCIIoYBbq9KXZMPk0nBYTPjsFuwmGWWlBCi50mAiFK6buDyqLg8gdZEksPSbrxCCCHCSQJEDPD6Nbx+DZvFhNNhlbEKIUSPkAARQ3yqjq/R29KisGK1SNeTECJ8JEDEoNYWhcNuIdlhxWSSwWwhRPeTj6AxzO1VOVrvxu1VI10UIUQckgAR43QD6l0+ahu9aLp+6icIIUSIJEDECa9fo7reg9evRbooQog4IQEijugG1DZ6aXL7T32xEEKcggSIONTk9lPT4EGPrTRbQogoIwEiTvlUnZoGj4xLCCG6TAJEHFM1g+oGL35VgoQQovMkQMQ5XTeoafTgk8FrIUQnSYDoBQwDapu8EiSEEJ0iAaKXaA0SflWChBAiNBIgehHDgJpGCRJCiNBIgOhljJa1EqomA9dCiJOTANEL6QbUNXplnYQQ4qQkQPRSqm5Q1+jFkCAhhDgBCRC9mE/VaWiWtBxCiI5JgOjl3F6VZo+kCxdCtCcBQtDY7JPV1kKIdiRACAygvkkGrYUQbUmAEEBg0LrB5Yt0MYQQUUQChAjy+DTZvlQIESQBQrTR0OyTFOFCCEAChDiOYUCDS6a+CiFiMEA89Mxmvt51VBZ4hZHXL11NQgiwRLoAnXWgopEDFY18tauK+VMGk5acEOkixaWGZh82qwmzKeY+QwghuknMvfotZgWAXQfr+d8VRXz07RGZnhkG0tUkhIi5APHg0skMykkGwK/qFH6yn6fXbONovTvCJYs/Xr+G1yepwYXorWIuQPTr62TpnNHMnzIYu9UMwP7yRv6w8ltpTYRBY7NPxnuE6KViLkAAmBSFSaOy+X8Lz6Agtw8Afi3Qmni2cDt1Td4IlzB+qLqBS3I1CdErhTVAbNq0iRkzZjB9+nSWLVvW7ueNjY3cdtttzJ07l1mzZvHqq6926v6pSXZ+eMVIrrpwSLA1sfdwA0+uLOLr3TLTqbu4PH5ZGyFELxS2AKFpGg8//DDPPPMMhYWFrF27lt27d7e55uWXX2bo0KGsXr2aF198kccffxyfr3PpHhRFYeLILH569RkM6hcYm/D4NF7ZsJtX3tuNxyeffk+XYUCjpAUXotcJW4AoKioiPz+fvLw8bDYbs2bNYv369W2uURQFl8uFYRi4XC769OmDxdK1mbdpyXaWzhrNFecMxGwKzHT6Znc1f3z1W8oqm067Pr2dx6dJxlchepmwrYOoqKggJycneJydnU1RUVGba5YsWcLtt9/OlClTcLlc/O53v8MUwrz79HTnCX827+ICJozO4ZnVWymvbqam0ctTq4uZP3Uol04aiElRul6pHnKy+kVSgt1CesrprzvJzEzuhtJEr3iuXzzXDeK/fp0VtgDRUf+/ctyb84cffsioUaN44YUXOHDgADfeeCMTJ04kKSnppPeuqXGd9OeJVhO3zR1D4Sf72VJSia4bvPbebrbtOcrVFw0jMSF61wempztPWb9I8jZ7sZi73vDMzEymqqqxG0sUXeK5fvFcN+gd9eussHUx5eTkUF5eHjyuqKggKyurzTWvvfYal112GYqikJ+fT25uLnv37u2W32+zmrnywiEsurQgOIBdcqCOP75WRFll/P4RhJvLLWMRQvQWYQsQ48aNo7S0lLKyMnw+H4WFhUybNq3NNf369eOTTz4B4OjRo+zbt4/c3NzuLceQDO5YMI7+GYkA1DX5WLZ6G5uLy2WWUxd4fBqqJmMRQvQGYetrsVgsPPDAAyxduhRN01iwYAEFBQUsX74cgEWLFvHjH/+Y++67jzlz5mAYBnfffTfp6endXpaMlARunTeWNzfv59NtFWi6weqPSimrbGL+lCFYLTG5HCQiDMDlUenjtEW6KEKIMFOMGPsYXVnTTMVp9BN+vesor2/ai7/lU3D/jESWXDY8apL+RfsYBIAC9E1N6FIiv97Qzxuv9YvnukHvqF9n9bqPzmcW9OW2+WNIT7YDcLi6mT+9tpW9h+sjXLLY0dqKEELEt14XIAD6ZTj5yVXjGJ6XCkCzV+XZwhI2bys/xTNFK7dXRddjqvEphOikXhkgABx2C9fPGMGF4/sDoBsGqz8s5Y0P9kpaiRAYRiAFhxAifvXaAAFgMilcfs5Avj9tWHCfic+2V/LcWyWyo1oImr2qZM8VIo716gDR6sxhffnR3DGkJFoB2HOogT+/sZXqBk+ESxbdDAOaZSxCiLglAaJFbmYSt1/53XqJo/Ue/vz6VkrLGyJcsujW7FVlPYkQcUoCxDH6OG38aO4YRg9KA1oHr7fz7d7qCJcseum6Id1xQsQpCRDHsVnNLJ4+nCln9ANA1Qz+8e4uPiw6Ip+UT6DJI60IIeKRBIgOmBSFK87NZ875g1CUwLz/Nzfvp/CT/TIo24FAK0L2rhYi3kiAOInJY3JYMn041pbspR9vLeeVDbslF1EHmjx+aUUIEWckQJzC6EHpLJ0zikR7IG1V0Z5qXli3A69PPjEfS1oRQsQfCRAhyMtK5tZ5Y0hNCiSo232onqfXbqNJUl+3Ia0IIeKLBIgQZaY6uHXeWLLTHAAcPupi2epi6pq8ES5Z9JBWhBDxRQJEJ7ROg83PCWRFPFrv4alVxRytc0e4ZNFDWhFCxA8JEJ3ksFu4cebIYKK/epePp1YXc/hodKfo7im6buCR8Rkh4oIEiC6wWcz84LLhjBuSAQRSXz+zdptsZdpCFs4JER8kQHSRxWzimmnDOHtkYJ9tj0/jr4Xb2XtYUnP4VB2/KlOBhYh1EiBOg8mkMH/KYM4fmwOAz6/z/Fsl7Cyri3DJIq9ZWhFCxDwJEKdJURRmTs7norMGAODXdF58ewclB2ojXLLI8vgkFbgQsU4CRDdQFIXLzs7jsrPzANB0g5ff2cn20poIlyxyDAM80ooQIqZJgOhGF501gCvOGQi0BIl/7aJ4X+8NErJXhBCxTQJEN5syvj+zJucDgW1Ml7+7i629NF24qht4/TLlVYhYJQEiDM4f14855w0CAkHiH+t399qWhEx5FSJ2SYAIk8ljc5h7/iDgu5bEtl44JuH1aei6DFYLEYskQITRuWNy2rQklr+7q9cNXBuA2yetCCFikQSIMJs8NofZ5wXGJDTd4O/v7up16yTcMlgtREySANEDzhvbLzhwrekGL72zg92H6iNcqp6j6gY+GawWIuZIgOgh54/rx4xJgXUSqmbw4ts72Hek96TlkMFqIWKPBIgeNPXMAVwyIRcAv6rz/LqSXpPgz+PTZGW1EDFGAkQPm/a9AUw9sz8QyN30tzdLOFId/6nCDcAjmwkJEVMkQPSw1rQcrQn+PD6NZwu3U9kLNh2SbiYhYosEiAhoTfA3sSVVuMuj8mzhdmoaPBEuWXj5NR2/Kq0IIWKFBIgIURSF+RcM5oyhgU2HGlw+ni3cTn2c73Et+ZmEiB0SICLIZFJYePFQRuWnAVDT6OX3//wqrt9E3V5V9qwWIkaEFCBuvvlm3nvvvU6/sDdt2sSMGTOYPn06y5Yt6/CaTz/9lHnz5jFr1ix+8IMfdOr+8cBsMnHtJQUM6Z8CwOEqF8+9tR1vnO7rrOkGPr/sNidELAgpQFxzzTU8//zzXHrppSxbtoza2lNvhqNpGg8//DDPPPMMhYWFrF27lt27d7e5pqGhgYceeog///nPFBYW8vvf/75rtYhxVouJ6y4bQV5WEgAHq1y8+M6OuN22U1JvCBEbQgoQl112Gc899xxPP/00lZWVzJ49m3//939n69atJ3xOUVER+fn55OXlYbPZmDVrFuvXr29zzZo1a5g+fTr9+wemfWZkZJxGVWKb3WbmhstH0j/TCcDeww28smF3XCa6kwR+QsQGS1eeZLVasdvt3HPPPUyZMoV777233TUVFRXk5OQEj7OzsykqKmpzTWlpKaqqct111+Fyubj++uuZP3/+KX9/erqzK8WOeunA/7vmLP6/l77gaJ2b4tIa3tpSxg8uH4miKJEuXrdJS3fiTLKT5LBGuihhkZmZHOkihE081w3iv36dFVKAeOedd3jppZeorq5m8eLFFBYW4nQ6UVWVyy67rMMA0dF4xfFvcpqmUVxczHPPPYfH4+Haa69l/PjxDB48+KTlqamJ34Vl6elObrh8BE+tKqbJ7eejbw5jBi5v2aku1qWnO6mpcdFY7yajT0Kki9PtMjOTqaqKz9Xx8Vw36B3166yQAsTKlSu55ZZbmDJlStsnWyzcf//9HT4nJyeH8vLy4HFFRQVZWVntrklLSyMxMZHExEQmTpxISUnJKQNEvMtISeDGmSN5es02PD6NTd8cxumwMOWM/pEuWrfxazqqpmMxy0Q6IaJVSK/Op556ql1waDVt2rQOz48bN47S0lLKysrw+XwUFha2u/aSSy7h888/R1VV3G43RUVFDB06tJNViE/9Mpxcf/kILOZAq+utzQf4cmdVhEvVvZplZbUQUS2kALF48WLq679LT11XV8eSJUtO+hyLxcIDDzzA0qVLmTlzJldccQUFBQUsX76c5cuXAzB06FCmTJnC3LlzWbhwIVdffTXDhw8/jerEl0E5KSy6dDimlp651zbuYceBU88gixUeWRMhRFRTjBBeofPmzWPVqlWnPNcTKmuaqYjjfsLWPvpjfbGjklc37gXAajZx8+xRDMyOzcG04+vXx2nDYe/SXImoFM/92PFcN+gd9euskFoQuq7T3NwcPHa5XGhafC7kikYTRmRx+aTAILVf03l+3Q4qa+MjuZ8nThcEChEPQgoQs2fP5qabbmLVqlWsWrWKm2++mblz54a7bOIYU8b344Jx/YBAuoq/vRkfeZu8fg1Nj88FgULEupDa9rfeeitZWVls2LABwzC49tprQ1qvILqPoihcfu5Amtx+vt59lHqXj7+9VcKtc8fEfBeN26uR5JDZTEJEm5DfWa688kquvPLKcJZFnIJJUbhq6hBcHj+7DtZTWevmhbd3cNPMUVgtsfsG6/aqcbtoTohYFlKAqK6u5sUXX6SsrAxV/W5qYm/NnRRJFrOJxZcO55m12zh01MX+8kb+uWEXiy8djskUm6utNd3A69ewW82RLooQ4hghBYg777yToUOHMnnyZMxmeRFHmt1m5oYrRvKXVVupafCyrbSWNR+XMvf8QTGbksPtVSVACBFlQgoQDQ0N/PrXvw53WUQnJDms3DhzFH95Yysuj8qn2yro47Rx0VkDIl20LvH6NQzDiNkAJ0Q8CqnjuqCggIqKinCXRXRSRkoCN1wxElvL+MM7W8r4YkdlhEvVNYYRCBJCiOgRcgti7ty5nHXWWdjt9uB5GYOIvNzMJBZPH84L63agGwavb9pLksPKiIFpkS5ap3l8Ggm22J6RJUQ8CenVOHv2bGbPnh3usoguGp6XylVTh7Dy/T3oBix/dxdL54wmNzMp0kXrFOlmEiK6hBQgZHpr9Pve8EwaXD7e2VKGTw2str5t3hgyUmInpXZrN5O0IoSIDiGNQZSWlrJo0aJgNtbi4mL+8Ic/hLVgovOmntmfc0dnA+By+3nuzRKa3P4Il6pzJPWGENEjpADx4IMPcvvtt5OcHEj2NGrUKNatWxfWgonOUxSF2ecNYvSgwPhDdYOHF9aV4Iuhwd/WbiYhROSFFCAaGxu58MILg33DJpMJq1VWvkYjk0nhmmkF5Ldkez1Y5WL5+l1oMbIHtMxmEiJ6hBQgzGYzfr8/GCAqKiowmWI3tUO8s1pMXDdjOH1btvTccaCO1R/ui5lP5tLNJER0CHnDoDvuuIPa2lr+8Ic/sHjxYm666aZwl02chsQEKzfOHElyS46jLSWVbPjyUIRLFRqvT0OPkWAmRDwLabrI/Pnzyc3N5b333sPtdvP4448zceLEcJdNnKa05MBCumVrivH5ddZ/cZA+ThsTR2ad+skRZBBIveFMkG5MISIp5PmEEydOlKAQg/r3dbJk+nCefyuwkO6ND/aSnBj9C+ncHgkQQkRaSAFiwYIFHS5eWrlyZbcXSHS/gtxUFkwdwooYWkin6gZen4bdJgn8hIiUkALEPffcE3zs9XopLCwkKyu6uylEW2cNz6Q+xhbSNXtVCRBCRFBIAWLSpEltji+44AIZpI5BU8/sT73Lx6fbKoIL6W6dNyZqN+vx+jVUTcdilhlzQkRCl155TU1NlJWVdXdZRJgpisKcGFtI1+xVT32RECIsOj0Goes6Bw8e5MYbbwxrwUR4tC6k+2vhNg5UNAUX0v3gshGYo3BHutbtSE2SwE+IHtfpMQiz2Uxubi7Z2dlhK5QIL6vFxPUzRvDU6mKq6jzsOFDHqg/2cuWFQ6Iuk6phgMerkigzmoTocV0agxCxLzHByg+vGMVfVm2lsdnP5zuqSHHauHRiXqSL1k6zRwKEEJEQUoA499xzO/xk2Zq7/5NPPun2gonwS0u288MrRrJs9Ta8fo0NXx4iOdHGOaOjq3Wo6gZevyZ7VgvRw0IKEIsWLaKuro5rrrkGwzB49dVXyc7OZubMmeEunwizfhlOfnDZcJ57qwRNN1j90T6SE62MHpQe6aK10exRJUAI0cNCmsW0ZcsW/vM//5ORI0cyatQo7r//fjZu3MiAAQMYMGBAuMsowmzogD5cfdFQINDn/4/1u9hf3hjhUrXl82touh7pYgjRq4QUICorK6mpqQke19TUUFVVFbZCiZ43flhfZk3OB0DVDJ5fV0JFTXOES/WdQH6m6J2OK0Q8CqmL6YYbbmDevHlcfPHFAGzcuJFbb701rAUTPe/8cf1ocPn4oOgIHp/Gc28FFtKlJtkjXTQAmj1+nAmWqJtpJUS8CilALFmyhAkTJrBlyxYMw2DJkiWMGDEi3GUTETDjnIE0uf18teso9S4fz71Vwo/mjCExIfL7ROtGYK8Ihz3yZRGiNwj5lZabm4umaYwZMyac5RERZlIUrpo6hCa3n10H66msdfPC2yXcNGsUNkvkB4ndXlUChBA9JKQxiI0bNzJr1izuvPNOAL799ltuu+22sBZMRI7ZZGLx9OHkZjoBOFDRxPJ3d0XFILFP1fGrkS+HEL1BSAHiySefZOXKlaSkpAAwbtw4Dhw4ENaCiciyW83ccMXINtuWvr5pb1RsWyr5mYToGSEn68vMzGxzbLPZur0wIro4E6zcOHMUKc7A//WXO4/y1qcHIh4kPD5VtiQVogeEFCCcTidHjx4Nzh759NNPSU5OPuXzNm3axIwZM5g+fTrLli074XVFRUWMGjWKdevWhVhs0VNaV1s77IHxhw+LjrDpm8MRLVNrfiYhRHiFFCB+8YtfcMstt3Dw4EGuu+467r777jYJ/DqiaRoPP/wwzzzzDIWFhaxdu5bdu3d3eN1vf/tbLrjggq7VQIRdTnoi188YibVlX4a3PytjS0llRMvU7JEAIUS4hTQdZPz48bzwwgt8+eWXAJx11lnB8YgTKSoqIj8/n7y8QPK3WbNmsX79eoYNG9bmuhdffJEZM2bw7bffdqX8oofk5ySzeHoBL769M7i3tcNmZuyQjIiUR/IzCRF+pwwQmqbx/e9/n1dffZWpU6eGfOOKigpycnKCx9nZ2RQVFbW75t133+X555/vVIBIT3eGfG0sitb6TU53YrFZeHZ1MYYBr7y3m74ZTkYP7lyQ6K76JdjMZPRxdMu9ulNm5qm7X2NVPNcN4r9+nXXKAGE2m0lLS8Pr9WK3h76itqOBzONXwD7yyCPcfffdmM2d+xRYU+Pq1PWxJD3dGdX1G5qTzOzzB7Hmo1JUzeDPrxZx86xRDMwO7YXV3fXze3yYTdGzJWlmZjJVVdGVx6q7xHPdoHfUr7NC6mIaNGgQS5YsYcaMGSQmJgbPL1my5ITPycnJoby8PHhcUVFBVlZWm2u2bt3KXXfdBUBtbS0bN27EYrFw6aWXdqoSomdNHpOD26vy7ucH8as6z71Vwi1zRtMvo+dbPs0eleREmVEnRDiEFCBcLhcFBQXs3bs35BuPGzeO0tJSysrKyM7OprCwkP/5n/9pc82GDRuCj++9914uuugiCQ4x4uKzBuDxanz4bSBv09/eLOFHc0bTN7Vnu3xatySV/ExCdL+TBojf/OY33HvvvTz22GN89NFHnH/++aHf2GLhgQceYOnSpWiaxoIFCygoKGD58uVAYI8JEbsUReGKcwfi9ql8saOKJrefvxZu50dzx5CW3HPJ/XQjkOU1GnJFCRFvFOMkq56uvPJKXn/99XaPI6myppmKOO4njPYxiOPpusE/N+zi272BdPAZKQncMnc0KSfo9glH/Sxmhb5RMlgdz/3Y8Vw36B3166yTju4dGzsivXpWRCeTSWHhxcMYMTAVgOoGD88Wbsfl8fdYGVTNwOeXvSKE6G4nDRA+n489e/awe/fuNo9bv4QAsJhNLL50OEP6B9bGVNa6+Vvhdtw9uNrZJQvnhOh2J+1imjZt2omfqCisX78+LIU6Geliil5ev8bf3tzOgYomAPKykrhp5ijstu+mMYezfpmpCRGf8hrP3RTxXDfoHfXrrJOO7B07y0iIU7FbzfzwipH8de12Dh11UVbZxPPrSvjhFSOx9cCKZ5nyKkT3ip4VRiIuJNgs3DhzJDnpgfUypeWNvPD2Dnxq+McImr2S5VWI7iRzA0W3S0ywctOsUTy9ZhtVdW72Hm7gpbd3ct2M09umdtfBOj4vqaS20Utasp2JI7MoyE0N/twwAusinAnW062CiKCt+6r5sOgIVXVuMlMdXHBGP8Z2Mp2L6B7SghBhkeSwcvPsUcENh3Yfqueld3bg72JLYtfBOt7+rIzqBi+6AdUNXt7+rIxdB+vaXCdZXmPb1n3VvLpxLxW1bnQDKmrdvLpxL1v3VUe6aL2SBAgRNimJNpbOHk1GS5DYdbCev7z2bZe2DP38BOnFjz+v6UaPzp4S3evDoiOdOi/CSwKECKsUZyBIpKcEVlcX761uaUl0LkjUNnpDPi+tiNhVVec+wXlPD5dEgAQI0QP6HBckdh2s58VODlyfKH1HR+f9mi4L52JU5glyeWWmJvRwSQRIgBA9JDXJzi2zR5OVFngD2H2onhfW7Qj5jXziyKxOnZeFc7HpgjP6deq8CC8JEKLH9Emyc9fiCcGB672HG3jurRK8vlMHiYLcVGZMyiMjxY5JgYwUOzMm5bWZxXQsr1+TVkQMGjs4gwVTh5Cd5sCkKGSnOVgwdYjMYoqQk66kjkaykjq2pac7KT1Yy1/Xbgv2K+dlJfHDK0bisHfvrGuLSSGjT0KPpgKP59W48Vw36B316yxpQYgel5Jo45Y5Y4KL6coqm3hm7Taa3N2b4E/VDZplRpMQXSYBQkREksPK0tmjGZAZ2IXuSHUzT6/ZRr3L162/p8ntR9M7P61WCCEBQkRQYoKlZT/rJCAwxXHZ6mKqG7pvSqNhQIOr51KPCxFPJECIiArkbhrFsAF9gMC6hmWriimvae623+H1a3h80tUkRGdJgBARZ7eauf7yEYwelAZAo9vP02uKOVDRfQOGDS6fdDUJ0UkSIERUsJhNLLp0ON8b3hcI7DP917Xb2XGgtlvurxtQ39S94xtCxDsJECJqmE0KV00dyvnjcoDAiugX397BVzuruuX+PlXv9plSQsQzCRAiqpgUhZnn5jNjUh4Q+OS/4v09bPr6cLfsi+5y+2UBnRAhkgAhoo6iKEw9cwALpg7B1LLGbd1nB1jzUSm6fnpBwgDqXT7ZWEiIEEiAEFFrwogsfnDZCKyWwJ/p5m0VvPyvnae9O52mGzQ1S1eTEKciAUJEtZH5aSydPRpnQiANx/b9tfx17XYam09vwLnZq0pXkxCnIAFCRL28rCRumz82uPFQWWUTf1lVTMVprpWod/m6ZVxDiHglAULEhIyUBG6bN4b87EDCsdpGL39ZVdxuy9HO0HSDRulqEuKEJECImOFMCOxzfeawwFoJr1/j+bdK+KS4vMstgWavGlK6cSF6IwkQIqZYzCYWXjyUSybkAoFpsGs+KmXVh/tQta6tlK5zebu0T7YQ8U4ChIg5iqJwyYRcrr1kGBax8CRbAAAeZUlEQVRzYB7sZ9srefbN7V1aCGcYUNvkPe0ptELEGwkQImadMbQvt84dQ4rTBkDpkUb+7/VvOVTV1Ol76bpBbaNXBq2FOIYECBHTBmQm8ZMrx5KXFUgZXtfk46nVxXzZhfQcfk2nrklmNgnRSgKEiHnJiTZumTOas0dmAaBqBivf39OlcQmvX6O20SsrrYVAAoSIExaziSsvHMKVUwZjbsnP8em2CpatLqa20dupe/lUnZoGj4xJiF5PAoSIK2ePyuZHc0fTp2Vc4mCViz++VkRJJ9OGq5pBTYNH9pAQvVpYA8SmTZuYMWMG06dPZ9myZe1+vnr1aubMmcOcOXO49tprKSkpCWdxRC+Rl5XMHQvGUZAb2KXO7dV4Yd0O3tq8v1NdTqpuUNPg7fL0WSFiXdgChKZpPPzwwzzzzDMUFhaydu1adu/e3eaa3NxcXnrpJdasWcPtt9/Or371q3AVR/QyzgQrN1w+kksm5NKSEJYPio6wbHUxNZ3Y81prmd0kQUL0RmELEEVFReTn55OXl4fNZmPWrFmsX7++zTXf+9736NMn8CnvzDPPpLy8PFzFEb2QyRRYL3HjrFEkO6xAoMvpD69+y9e7j4Z8H003qGmUxXSi97GE68YVFRXk5OQEj7OzsykqKjrh9StXruTCCy8M6d7p6c7TLl80k/p1r0npTkYO6cvzhdso3luN16/xyobd7CtvZNFlI0hMsIZ0HwOwOawkJ9owtW5U0YHMzORuKnn0iee6QfzXr7PCFiA6mkuuKB2/qDZv3szKlSv5+9//HtK9a2pcp1W2aJae7pT6hcmiS4bxcVYSb392AE032LKtgp37a1l48VCG9O8T0j1qCLRMkh1WHPb2L5/MzGSqqhq7ueTRIZ7rBr2jfp0Vti6mnJycNl1GFRUVZGVltbuupKSE+++/n//7v/8jLS0tXMURApOicMEZ/fjxlWPJSnMAgZTff127nbUfl4a8EZGuG9S7fDI2IeJe2ALEuHHjKC0tpaysDJ/PR2FhIdOmTWtzzeHDh7nzzjv57//+bwYPHhyuogjRRr8MJz+5chznjQ10gRrAx1vL+cPKb9lfHvonSK9fo7reQ5PbL6uvRVwKWxeTxWLhgQceYOnSpWiaxoIFCygoKGD58uUALFq0iD/96U/U1dXx0EMPAWA2m3nttdfCVSQhgqwWE7PPG8TI/DRe27iHuiYf1Q0elq0uZvLYHKafnYfdaj7lfQygye2n2eMnMcFKhiyuE3FEMWLso09lTTMVcdxPKGMQPa94XzVvbT5AzTErrpMcFvr2SUDVDNKS7UwcmUVBbuop79U3IwlPsxdnguWEY24d2bqvmg+LjlBV5yYz1cEFZ/Rj7OCMLtWnu639pJT3vzqEy6PiTLBw0VkDmD15UKSL1e1kDKK9sLUghIgFuw7W8d5Xh0mwW0hXoL7Jh6YbNLlVmtxNOOxm/JrB25+VAZwySOiGQZPbj8erkuK0YQuhFbJ1XzWvbtwbPK6odQePIx0k1n5SytqPSoHAJJOmZn/wOB6DhGhLUm2IXu3zksrg4wSbhcw0RzCXEwRWYVfWNuNy+9myvSLk+6otayfqm049kP1h0ZFOne9J7391qFPnRXyRACF6teMT+ZkUBZMJzOZAAkAIbChU7/Kxo6yessrOdUG4fYGB7JMFiqo69wnOh77iO1xOtAGTqwsbM4nYIwFC9GppyfZ258wmE1azmczUBFKcNlqHEvyqzp/fKGbl+3tobPaF/DsMAoHiaL2H2kYv/uOm02amOjp8XmZqQsi/I1ySHB0vInSe4LyILxIgRK82cWT7tTmJCZbgIHOSw0pWqoME23djCV/urOKJf37Dxq8PdTr9htevUd3gpabBg8enAnDBGf06vPZE53vSRWcN6NR5EV/MDz744IORLkRnuNx+XJ349BZrHA4b7jhuvkdb/TJSEkhLtlPX6MXr00hPsTPte7mMGJgWPNe3TwIzJg1kwohMDle5cHlUNN1gz6EGvt5VhdNhJSvNgaIoIddP0w08Po1mr0pmqoOcdAe1jV7cXo2sNAeXnzMw4gPUAMPzUkGBw9UuVE3H6bBy2aSBcTlA7XTaaY7j9xans31r+VRkmmuUicZpoN0p1uun6Qafbavg3S8O4vaqwfMDMp3MOHsgk87o36X6KYDNasZhN2O3mjs1Rban9IZpoPFev86Saa5CdILZpDB5bA5nFvTl/a8O8fHWcjTd4FCVi2ff3M5HxeVMO2tAcI/sUBkEup+8fg2TAgl2Cw6bBatFeoFF5EiAEKILHHYLV5ybzzmjs/nX52V8s7sagB37a9mxv5aRA9O4ZMIABmR2LlAA6AY0e1SaPSoWk0KC3UKCzRycVSVET5EAIcRpSE9J4JppBVw4vj/vbCljx4E6AEoO1FJyoJZR+Wlc/L0B5HYhUEBgPUWT20+T24/VbMJhN2OzSrAQPUMChBDdoF+GkxsuH0lNs5/XNuxi7+EGALbvr2X7/loKcvsw9cwBDO6X3OXxBb+m42/WAT9mk4LNYsJmNWOzmjCbJGCI7icBQohuNCw3laWzR7PvSAPrvzgYDBS7Dtaz62A9A7OTmHJGf0blp51006FT0XQDt0/D7QusqbCYFKxWMwk2c0hJBoUIhQQIIcJgcL+UYKDY+PVhdpYFup4OVDTx8r92kpGSwPnjcvje8MyQ8jWdiqobqF4Vt1fFZFJIsJlx2MxYLRIsRNdJgBAijAb3S2FwvxQOH3Wx8etDbN1Xg2FAdYOH1R+V8s6WMiaOzOLc0dmkp3TPymldN4KD3CaTgt1qJsFqxmo1YYrC6bMiekmAEKIH9O/rZNGlw6lp8PDR1nK+KKnEp+p4fBofFh3ho6IjjBiYxqTRWQzPTT2t7qdj6bqBu6VlAWAxK9gsZqwWE1aLSQa7xUlJgBCiB6WnJDDnvEFcOiGXz0sq+aS4nLomHwbfzXxKTbIxcWQWE4Zn0iep86tfT0bVDFRNhZYchQqBpIRmsxL4blICX2ZFBr6FBAghIsFhtzBlfH/OH9ePkgO1bC6uYPehegDqmny8+/lB1n9+kGG5fZgwIotR+WlhWTRn0DI7SgNom0RQAcxmBavFjM1iwq/qGIYRlau8RXjEXICw2wJ/rIYBhmGgG0bgcaQLJkQXmEwKowelM3pQOtX1Hj7bXsEXO6to9qgYfDf7KcFmZuyQDM4q6Et+TnKPjCUYfNficHvBXNtMba0bkynQ2jC1tjZMChaz0nIsrY54EnO5mIAO86W0CRaGga4TPA58P+ZnxwWX1u89qd3Lu+VEerqT2uNz+Rz3ZqCc4HFHJ5RjThiGgUHghW/oRkSCaqznYjqV7qifquls31/LFzuq2HWwrt3fZh+njXFDMzhjaAYD+jp77BN9KHVToKWLyhTsqlJQMGj7GgsMsSgoSiBImpRAoOmusZeukFxM7cVcC+JEFEXBfJovFL2lKXL8H/N3v+O44/bvxh09DJYvFJl9k7D2ULRqEyT1tsFUb32sR0dA7U0sZhPjhmQwbkgG9S4fX++q4qtdR6msDWwsVO/y8WHRET4sOkJ6sp0xg9MZOySdAZlJEZ+lZNAy5VbXTnltRxSFlhaJKfAaaqmPorRs5qQEXkvhCiqt7wGtL+Cuvo7jRdy0IOJFLH2K0Q0jGFjateCOCTCabqBqOrohLYiuMgyDI9XNfL3rKN/urabe1T4tdYrTxqj8NEblpzGkf0q3z1CK1v+7Y1stikLwb5CW861dYUDww06wW7r1b1U36JOayNHqplP/vtYgRUvrp+VLCf5cadNjYbScCwa3lu/KCY/DE4S60oKQABFlYilAdJZuGKSlOTlS3oCq66iqjqoHgky86Ik3Ud0wKKtoomhPNVv3VdPY3H7/CZvFxLDcPozIS2V4Xmq3zIaK1gDRXaKpfscGoZMFk1BiSes7/OCB6Z0uR9x0MYnoZ1IUbFYziQlt/+z0YAsjMHZ0oi4+aN/NB8d3A7R/0XR0L90ItGw0TUfXA62fWIlTJkUhPyeZ/JxkZp2Xz8HKJor31VC8r4aalj22farOttJatpXWApCd5qAgN5VhuX0YlJPcLau3RfgEW+KBo4iVQwKEiDiTScFmivwbVkfdZMd2Fai6garq+DU9asZgTIrCwOxkBmYnc/k5A6msc1PSkiCwrLIpWM6KWjcVtW4+/PYIZpNCXnYSQ/qlMKR/CnlZybLvhOiQBAghWnRmooOq6TR7VTxeNWpaHoqikJ2WSHZaIlPPHECzR2X3oTp2ltWxq6yexpatUDXdoPRII6VHGtnw5SEsZoXczCTyc5IZlBMINg67vDUICRBCdInFbCIl0Uayw4rHp+H2qvhUPdLFaiMxwcIZQ/tyxtC+GIZBRa2bPYfq2X2wntLyRryB1XGomkFpeSOl5Y1sbHluZqqDgdlJDMxKIjcriay0xMhVRESMBAghToOiKDjsFhx2C6qm40iw0mBSoGVaJhCcwRXpcuakJ5KTnsj54/qh6QaHj7rYe7ie0iON7K9oxOP7bmpqVZ2bqjo3X+yoAsBqNjGwXzJZqQ4G9HXSv6+TzFRHcHaQiE8SIIToJhazidRkO36Po93P/KqOT9Xw+rSoaGmYTQp5WUnkZSUx9czAoH1FTTP7yxs5UNHEgcpGahq8wev9ms6eg/XsOVgfPGcxK2SlJdIvPZGcjESy0xPJTnOQ5LD2uvUC8UoChBA9oDV7qjPBiq4beHwaXr+Gz69FRZoYk6LQL8NJvwwn544JnGty+zlU1URZZROHqlwcrna1mVKraoFWyOGjbaeGJiZYyEpzkJXqIDP4lUCfJHvEF/KJzpEAIUQPM5kUEhMsJCZY0A0Dn1/D69fx+qJnwBsgyWFlxMA0RgxMAyAtLZHSsloOH3Vx6KiL8ppmjlQ3U9vobfO8Zo8aHAQ/lsWs0LePg4yUBDL62MlISSA9JYH0FDspTrt0V0UhCRBCRJBJUUiwWUiwAU4bPr+Gx6/h8WlRt4BQURT6JNnpk2Rn1KDvFl15fCoVNW7Ka5qpqG2moiYwftHkbruAT9UMymuaKa9pbndvk6KQmmwjNclOWrI9+L1PUuBcH6dN9q6IAAkQQkQRm9WMzWomJTEwbuH1a3h8KqoWXcHiWAk2S3Dh3rGaPWpwsPtovZuqOg9H6z3UNHjQjgt+umFQ0+BtM+5xPGeChT5OGylOG8mJge8piVaSE20ktX53WCSjbDeSACFElGodt0hyBMYtvH4tONitaZHJxtsZiQkdBw5dN2ho9nG03kNto5eahkDQqGvyUdvobdfyaOXyqLg8Koer27dAjuWwW0hyWElyWHE6LDgTAo8TEyw4EywkJlhJtFuC3XxWs0kG1U9AAoQQMcBkap1OGzg2DAO/qqNqOn4tkDIkGqbThsJkUkhNCnQjdcSnatQ1+ahv8lLf5KOuyUu9y0eDy0e9y0d9ky+4hqMjrVusVtW5QyqPxRz4t01KtGGzmHDYLDjs5kDXn91Mgq3lsc0c/LJbLditppb9acwRTVMeThIghIhBSkteq+NzKum6gabrqNp3WXRVTUfTYydFu81iJis1MAvqRHx+jcZmP/UuH01uH43Nfhqb/TS523653P523VnHUzUj+PyuslpM2K1mbNbW74GNzY7/brWY2uwJfuyXxdzyuOW7peVx65awkZgBFtYAsWnTJh555BF0XWfhwoX86Ec/avNzwzB45JFH2LhxIwkJCfzmN79hzJgx4SySEHFr675qPiw6QlWdm8xUBxec0Y+xgzP4a+E2tmyvxKfqWM0K3xuRyYQRmXyytYKj9W7SUxKYOCKTYQNS2Xmwjs9LKqlt9JKWbGfiyCwOVjXx2bYKmn0aiTYzk0Znc/FZuScsx64O7gG0O1eQmxry8wtyU3nvq4OBcnhVEu2Wk5aj9R41DZ7AoHp+GpmpDnYfqqdkfy2NzX5sVhPpyQlYLSbcPhW/atDY7MPtVfH6Ojf92K/q+FUdQmu0dEnrPhmW1v3DW75bWjdoMitYTKaW/cQDu/tZWh+bTYwbkd3p3xm2dN+apjFjxgz+9re/kZ2dzdVXX80TTzzBsGHDgtds3LiRF198kaeffppvvvmGRx55hBUrVpzy3vGaDhviO903SP3CZeu+al7duLfdeWeChe0tGV1bGQTGBzKP+4Q+YUQmn5dUfnedAfUuLy63H5OiBPc5ALhkYh7TzhqAzncJDSHwxvz2Z2Vt7uvxqSiA3db28+iMSXntgkRHzwfISXfw7Z7qducv+t6AdkHiRPcYMziN4n217c63luPYdN87y2pZ92lZmw20DN1g7JB0UpPswXUsXn9g8WPr+FDrsU/VA18t56PBmv+Z1+nnhK0FUVRURH5+Pnl5eQDMmjWL9evXtwkQ69evZ/78+SiKwplnnklDQwOVlZVkZWWFq1hCxKUPi450eL5kf/s3RAC3R2137v2vDpGcaAseKwq43CqGAYpJaTOQ+9n2Cr5/8bA2zzcMg9c37cFibtsV4vYGfldigrXN+W92H2XC8CwCCd4DAemb3UeP6c//7rNrR8EBYMv2Smaek9/m6q92VnWYFn7L9kqcDmu781/trGLMoPRA11BLVtuvdx0NfBI/Lpl8vcvH3PMHd1iWYx37sVs3AlmAff5A4GidaND6uN2XprWMLwW6CP0tGYS1Y45VLbCXSmDsqeV7S5eiprXtZjwdYQsQFRUV5OTkBI+zs7MpKio66TU5OTlUVFScMkB0ZWekWCL1i22RqF9tk6/DlN260cEeGi27qR1/vcujkp6ScNzzA28wrcGh9XuzR+2wnnUufwfjIoACdlvb800elfy8tDbnGt0qCbb2qd9V3cBmaX/e49MYNrhv23p4tQ6z0R6t99C3g3GNZp/GiKGZAMGfu7zbOryH+5hre4OwBYiOeq6On0oWyjVCiFN74mdTI10E4PTL0R31iJZ7xIOwrSjJycmhvLw8eNxRy+D4a8rLy6V7SQghokTYAsS4ceMoLS2lrKwMn89HYWEh06ZNa3PNtGnTeOONNzAMg6+//prk5GQJEEIIESXC1sVksVh44IEHWLp0KZqmsWDBAgoKCli+fDkAixYtYurUqWzcuJHp06fjcDh49NFHw1UcIYQQnRS2aa5CCCFim2S1EkII0SEJEEIIIToU1bmYvF4vS5YswefzBVdm//SnP6Wuro6f//znHDp0iAEDBvC///u/9OnTJ9LF7ZLW8Zns7GyeeuqpuKrbtGnTcDqdmEwmzGYzr732WlzVr6Ghgfvvv5+dO3eiKAqPPvoogwcPjov67d27l5///OfB47KyMn76058yf/78uKjfc889x4oVK1AUheHDh/PYY4/hdrvjom4Azz//PCtWrMAwDBYuXMgPf/jDLr32oroFYbPZeP7551m9ejVvvPEGH3zwAV9//TXLli1j8uTJvPPOO0yePJlly5ZFuqhd9sILLzB06NDgcTzVDQJ/qKtWreK1114D4qt+jzzyCFOmTGHdunWsWrWKoUOHxk39hgwZwqpVq4L/dw6Hg+nTp8dF/SoqKnjhhRd49dVXWbt2LZqmUVhYGBd1A9i5cycrVqxgxYoVrFq1ivfff5/S0tIu1S+qA4SiKDidTgBUVUVVVRRFCaboAJg/fz7vvvtuJIvZZeXl5bz//vtcffXVwXPxUrcTiZf6NTU1sWXLluD/nc1mIyUlJW7qd6xPPvmEvLw8BgwYEDf10zQNj8eDqqp4PB6ysrLipm579uxh/PjxOBwOLBYLZ599Nv/617+6VL+oDhAQ+I+cN28e5513Hueddx7jx4+nuro6uF4iKyuLmpqaCJeyax599FH+7d/+DdMxO2DFS91a3XzzzVx11VX885//BOKnfmVlZaSnp3Pfffcxf/58fvnLX9Lc3Bw39TtWYWEhs2fPBuLj/y87O5ubbrqJiy++mAsuuICkpCQuuOCCuKgbwPDhw/n888+pra3F7XazadMmysvLu1S/qA8QZrOZVatWsXHjRoqKiti5c2eki9Qt3nvvPdLT0xk7dmykixI2y5cv5/XXX+fpp5/m5ZdfZsuWLZEuUrdRVZVt27axaNEi3njjDRwOR8x2SZyMz+djw4YNXH755ZEuSrepr69n/fr1rF+/ng8++AC3282qVasiXaxuM3ToUJYuXcpNN93E0qVLGTFiBGZz+zxWoYj6ANEqJSWFc845hw8++ICMjAwqKwNpiSsrK0lPTz/Fs6PPl19+yYYNG5g2bRp33XUXmzdv5u67746LurXKzg7kn8/IyGD69OkUFRXFTf1ycnLIyclh/PjxAFx++eVs27YtburXatOmTYwZM4a+fQMJ8eKhfh9//DG5ubmkp6djtVq57LLL+Oqrr+Kibq0WLlzI66+/zssvv0xqair5+fldql9UB4iamhoaGhoA8Hg8fPzxxwwZMiSYogPgjTfe4JJLLolkMbvkF7/4BZs2bWLDhg088cQTnHvuufz2t7+Ni7oBNDc309TUFHz80UcfUVBQEDf1y8zMJCcnh717A3swfPLJJwwdOjRu6teqsLCQWbNmBY/joX79+/fnm2++we12YxhGXP7fVVcH0qMfPnyYd955h9mzZ3epflG9krqkpIR7770XTdMwDIPLL7+cO+64g9raWn72s59x5MgR+vXrx+9//3tSUzvenSoWfPrppzz77LM89dRTcVO3srIyfvKTnwCBcaTZs2dz++23x039ALZv384vf/lL/H4/eXl5PPbYY+i6Hjf1c7vdXHTRRbz77rskJwdSe8fL/9+TTz7Jm2++icViYdSoUTzyyCO4XK64qBvA4sWLqaurw2KxcN999zF58uQu/d9FdYAQQggROVHdxSSEECJyJEAIIYTokAQIIYQQHZIAIYQQokMSIIQQQnQoqrO5CnEyCxcuxOfz4ff7KS0tpaCgAIDRo0fz2GOPRbh0oSkuLqasrCyuViqL+CHTXEXMO3jwIAsWLODTTz+NdFHaUVUVi+XEn8NWrFjBxx9/zO9+97tuv7cQp0v+ukRcWrlyJf/4xz/QNI2UlBQeeughBg0axIoVK1i3bh1Op5OdO3fSr18//uM//oPHH3+csrIyxo8fz+OPP46iKNx99904HA4OHDhAeXk555xzDr/61a+wWq00Njby6KOPsmvXLrxeL+eddx733HMPJpOJRYsWMWnSJL766isSExN58skng4sEvV4v48eP56GHHqKhoYE//elPuFwu5s2bxznnnMOSJUtYvHgxH330EQD79+8PHu/fv59FixZxzTXXsHnzZq666irmzZvHE088weeff47P52PUqFE8+OCDOByOCP8PiLhgCBHjysrKjEmTJgWPN2/ebNx6662G1+s1DMMw1q9fbyxZssQwDMN45ZVXjEmTJhnl5eWGYRjGTTfdZMyfP99obGw0fD6fMXPmTGPz5s2GYRjGL37xC2PevHmGy+UyfD6fcf311xt///vfDcMwjHvuucdYs2aNYRiGoWma8dOf/tRYuXKlYRiGce211xo//vGPDVVVgz+vq6sLPr7rrruMV155JVien/3sZ8Gyl5aWGuedd16Hx6Wlpcbw4cONdevWBX/+5JNPGk899VTw+LHHHjN+//vfn94/qBAtpAUh4s6GDRvYtm0bCxcuBMAwDFwuV/DnEyZMCCYSHD16NB6Ph6SkJABGjBjBgQMHOOeccwCYOXMmiYmJQCCH/vvvv8+iRYt47733KC4u5umnnwYCucIGDhwY/B1z5swJZtDUdZ1ly5bx4Ycfous6dXV1Xd6pLDExkRkzZrSpq9vtprCwEAhkXx0zZkyX7i3E8SRAiLhjGAbf//73ueOOOzr8ud1uDz42mUztjlVVPeF9FUUBAm/6Tz31FP379+/w2tagArBq1SqKior4+9//jtPp5I9//CNHjhzp8Hlmsxld14PHXq/3hPdtLdOvf/1rzj777A7vJ8TpkGmuIu60Zq2sqKgAAskCt27d2qV7vfXWW7jdbvx+P2vWrAm2LKZNm8ayZcvQNA0IZB4uKyvr8B6NjY2kpaXhdDqpr68PftoHcDqdNDY2Bo+zsrLweDzBe61du/aUdX322WeDgaSpqYk9e/Z0qa5CHE8ChIg75557LnfccQe33norc+fOZc6cObz//vtduteECRO4/fbbmT17Nnl5ecEtRn/1q1+h6zrz5s1jzpw53HLLLVRVVXV4jyuvvJK6ujpmz57NXXfd1ebT/vnnn09jYyNz587l0UcfxWazce+993LDDTdw3XXXYbVaT1q+2267jaFDh3L11VczZ84clixZwr59+7pUVyGOJ9NchTiBu+++mwkTJrBo0aJIF0WIiJAWhBBCiA5JC0IIIUSHpAUhhBCiQxIghBBCdEgChBBCiA5JgBBCCNEhCRBCCCE69P8DNrSqc6nmqFEAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.set(color_codes=True)\n", + "plt.xlim(30,90)\n", + "plt.ylim(0,1)\n", + "sns.regplot(x='Temperature', y='Frequency', data=data, logistic=True)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**I think I have managed to correctly compute and plot the uncertainty of my prediction.** Although the shaded area seems very similar to [the one obtained by with R](https://app-learninglab.inria.fr/moocrr/gitlab/moocrr-session3/moocrr-reproducibility-study/tree/master/challenger.pdf), I can spot a few differences (e.g., the blue point for temperature 63 is outside)... Could this be a numerical error ? Or a difference in the statistical method ? It is not clear which one is \"right\"." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Hide code", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}