diff --git a/module3/exo3/exercice.ipynb b/module3/exo3/exercice.ipynb index a12a77e906cffc1e3d1b594a3b55cb13975f5b50..49f021eefee6444a4e7bc82a81f1c1638bc2bb32 100644 --- a/module3/exo3/exercice.ipynb +++ b/module3/exo3/exercice.ipynb @@ -7,12 +7,12 @@ "hidePrompt": true }, "source": [ - "# Concentration de CO2 dans l'atmosphère depuis 1958" + "# Concentration de $\\rm CO_2$ dans l'atmosphère depuis 1958" ] }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 1, "metadata": { "hideCode": true, "hidePrompt": true @@ -30,6 +30,13 @@ "%matplotlib inline" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Chargement et vérification des données" + ] + }, { "cell_type": "markdown", "metadata": { @@ -43,7 +50,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 2, "metadata": { "hideCode": true, "hidePrompt": true @@ -69,7 +76,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 3, "metadata": { "hideCode": true, "hidePrompt": true, @@ -139,7 +146,7 @@ "1958-04-26 316.48" ] }, - "execution_count": 53, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -278,7 +285,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -305,16 +312,12 @@ " CO2\n", " Delta_days\n", " Day_number\n", - " Incr_trend\n", - " CO2_osc\n", " \n", " \n", " Date\n", " \n", " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", @@ -323,56 +326,46 @@ " 316.19\n", " 0\n", " 0\n", - " 314.722524\n", - " 1.467476\n", " \n", " \n", " 1958-04-05\n", " 317.31\n", " 7\n", " 7\n", - " 314.736879\n", - " 2.573121\n", " \n", " \n", " 1958-04-12\n", " 317.69\n", " 7\n", " 14\n", - " 314.751244\n", - " 2.938756\n", " \n", " \n", " 1958-04-19\n", " 317.58\n", " 7\n", " 21\n", - " 314.765619\n", - " 2.814381\n", " \n", " \n", " 1958-04-26\n", " 316.48\n", " 7\n", " 28\n", - " 314.780004\n", - " 1.699996\n", " \n", " \n", "\n", "" ], "text/plain": [ - " CO2 Delta_days Day_number Incr_trend CO2_osc\n", - "Date \n", - "1958-03-29 316.19 0 0 314.722524 1.467476\n", - "1958-04-05 317.31 7 7 314.736879 2.573121\n", - "1958-04-12 317.69 7 14 314.751244 2.938756\n", - "1958-04-19 317.58 7 21 314.765619 2.814381\n", - "1958-04-26 316.48 7 28 314.780004 1.699996" + " CO2 Delta_days Day_number\n", + "Date \n", + "1958-03-29 316.19 0 0\n", + "1958-04-05 317.31 7 7\n", + "1958-04-12 317.69 7 14\n", + "1958-04-19 317.58 7 21\n", + "1958-04-26 316.48 7 28" ] }, - "execution_count": 52, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -390,18 +383,23 @@ "hidePrompt": true }, "source": [ - "Aucune donnée n'est visiblement manquante dans le fichier, autrement dit toutes les lignes présentes bien une valeur.\n", + "Aucune donnée n'est visiblement manquante dans le fichier, autrement dit toutes les lignes présentent bien une valeur.\n", "\n", "En revanche nous voyons qu'il manque un certain nombre de semaines dans le fichier 72 au total.\n", "Nous voyons également que l'année 1964 est celle présentant le moins de relevés hebdomadaires, en partie dû à un intervalle de 133 jours entre deux relevés.\n", - "Nous gardons donc cette information en mémoire pour la suite de l'analyse.\n", - "\n", - "A présent, nous pouvons représenter les données." + "Nous gardons donc cette information en mémoire pour la suite de l'analyse." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Représentation des données" ] }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -427,15 +425,26 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Nous observons bien une oscillation périodique superposée à une évolution systématique plus lente.\n", - "A présent nous pouvons essayer de déterminer la période d'oscillation.\n", - "\n", - "Dans la suite, nous cherchons à séparer ces deux contributions. L'augmentation systématique de la teneur en oxygène $\\rm CO_2$ est etimée à partir d'une fonction polyomiale de degré 2 et d'équation: $y = a_2 x^2 + a_1 x + a_0$." + "Nous observons bien une oscillation périodique superposée à une évolution systématique plus lente." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Analyses des données: composante systématique" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dans la suite, nous cherchons à séparer les deux contributions (systématique et oscillatoire). L'augmentation systématique de la teneur en $\\rm CO_2$ est estimée à partir d'une fonction polyomiale de degré 2 et d'équation: $y = a_2 x^2 + a_1 x + a_0$." ] }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 8, "metadata": { "scrolled": true }, @@ -477,12 +486,49 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Dans la suite, nous soustrayons la contribution systématique des données brutes afin de ne garder que la composante oscillatoire." + "Nous pouvons dès à présent réaliser une estimation de la teneur moyenne en $\\rm CO_2$ dans l'atmosphère pour 2025. Notons que cette méthode n'est pas la plus adaptée mais permet d'obtenir un ordre de grandeur satisfaisant." ] }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "424.04528179868464" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "days_to_2025 = (pd.to_datetime(\"2025-01-01\") - new_data.index[0]).days\n", + "CO2_2025 = np.polyval(coeff, days_to_2025)\n", + "CO2_2025" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Analyses des données: composante oscillatoire" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A présent nous pouvons essayer de déterminer la période d'oscillation.\n", + "De fait, nous soustrayons la contribution systématique des données brutes afin de ne garder que la composante oscillatoire." + ] + }, + { + "cell_type": "code", + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -535,12 +581,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Nous pouvons réaliser une transformée de Fourier au signal précédemment obtenu afin de déterminer les fréquences qui lui sont associées." + "Nous réalisons par la suite une transformée de Fourier au signal précédemment obtenu afin de déterminer les fréquences qui lui sont associées.\n", + "\n", + "Note: l'ensemble des données est pris en compte dans l'analyse, ce qui n'est pas optimal sachant qu'il manque des relevés hebdomadaires. En effet, il vaudrait mieux se placer sur une plage de donnée dont l'incrément est uniforme. Cependant par manque de temps, l'analyse est tout de même poursuivie ainsi. A prendre donc avec des pincettes !" ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -577,12 +625,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Nous nous intéressons maintenant aux fréquences de plus fortes amplitudes. Le contenu ci-dessous permet d'obtenir les trois fréquences de plus fortes amplitudes. Ces dernières sont représentées en rouge sur le graphique ci-dessous." + "Nous nous intéressons maintenant aux fréquences de plus fortes amplitudes. Le bloc ci-dessous permet d'obtenir les trois fréquences de plus fortes amplitudes. Ces dernières sont représentées en rouge sur le graphique ci-dessous." ] }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 12, "metadata": { "scrolled": true }, @@ -630,7 +678,26 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Si l'on s'intéresse à la fréquence dont l'amplitude est maximale, cela correspond à un cycle tous les 362 jours environs. La seconde fréquence a peu de sens, dans la mesure où cette dernière est obtenu à très faible fréquence et provient probablement d'un artefact de calcul." + "Si l'on s'intéresse à la fréquence dont l'amplitude est maximale, cela correspond à un cycle tous les 362 jour environs. Cela semble cohérent avec les observations graphiques (cf. graphique zoomé à partir de 2011).\n", + "La seconde fréquence a peu de sens, dans la mesure où cette dernière est obtenu à très basse fréquence et provient probablement d'un artefact de calcul.\n", + "La troisième fréquence quant à elle correspond à période de 181 jours environ. Par la suite, il serait intéressant de creuser davantage l'analyse ainsi que l'interprétation de ces résultats." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Il a été possible de:\n", + "1. charger les données et conduire des analyses\n", + "1. estimer une concentration potentielle de $\\rm CO_2$ dans l'atmosphère à l'horizon 2025 d'environ 424 ppm à partir d'une méthode de régression polynomiale.\n", + "1. estimer la période d'oscillation des cycles de concentration en $\\rm CO_2$ dans l'atmosphère à environ 362 jours par application d'une transformée de Fourier." ] } ],