"Pour notre étude, nous prendrons les relevés hebdomadaires : *weekly_in_situ_co2_mlo.csv* que l'on peut télécharger à l'adresse suiavnte : https://scrippsco2.ucsd.edu/data/atmospheric_co2/mlo.html\n",
"\n",
"Nous travaillerons sur une base locale (copiée sur le serveur *Jupyter* de l'INRIA) téléchargée le 13 avril 2020.\n",
"La totalité des documents nécessaires à cette étude seront committés sur le serveur *GitLab* de l'INRIA."
"Nous travaillerons sur une base locale (copiée sur le serveur *jupyter* de l'INRIA) téléchargée le 13 avril 2020.\n",
"La totalité des documents nécessaires à cette étude seront committés sur le serveur *GitLab* de l'INRIA.\n",
"\n",
"Les parties du code nécessaires à l'affichage des courbes ne sera pas affichées dans le rapport final. Elles seront tout de même accessibles dans le fichier *jupyter*."
]
},
{
...
...
@@ -137,7 +139,7 @@
"cell_type": "code",
"execution_count": 48,
"metadata": {
"hideCode": true,
"hideCode": false,
"hidePrompt": true
},
"outputs": [],
...
...
@@ -152,7 +154,8 @@
"cell_type": "code",
"execution_count": 49,
"metadata": {
"hideCode": true,
"hideCode": false,
"hideOutput": true,
"hidePrompt": true
},
"outputs": [
...
...
@@ -201,6 +204,7 @@
"execution_count": 50,
"metadata": {
"hideCode": true,
"hideOutput": true,
"hidePrompt": true
},
"outputs": [
...
...
@@ -312,7 +316,7 @@
"cell_type": "code",
"execution_count": 51,
"metadata": {
"hideCode": true,
"hideCode": false,
"hidePrompt": true
},
"outputs": [
...
...
@@ -381,7 +385,7 @@
"cell_type": "code",
"execution_count": 52,
"metadata": {
"hideCode": true,
"hideCode": false,
"hidePrompt": true
},
"outputs": [],
...
...
@@ -480,6 +484,7 @@
"execution_count": 7,
"metadata": {
"hideCode": true,
"hideOutput": true,
"hidePrompt": true
},
"outputs": [
...
...
@@ -504,7 +509,7 @@
"cell_type": "code",
"execution_count": 8,
"metadata": {
"hideCode": true,
"hideCode": false,
"hidePrompt": true
},
"outputs": [],
...
...
@@ -516,7 +521,10 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hideCode": true,
"hidePrompt": true
},
"source": [
"Les index au format `dateindex` sont mal pris en compte par la librairie *lmfit*. Il est nécessaire de se recréer une échelle de temps permettant les calculs. \n",
"Cette même fonction servira pour tous les calculs à venir."
...
...
@@ -526,7 +534,7 @@
"cell_type": "code",
"execution_count": 54,
"metadata": {
"hideCode": true,
"hideCode": false,
"hidePrompt": true
},
"outputs": [],
...
...
@@ -545,7 +553,7 @@
"cell_type": "code",
"execution_count": 55,
"metadata": {
"hideCode": true,
"hideCode": false,
"hidePrompt": true
},
"outputs": [],
...
...
@@ -595,7 +603,7 @@
"cell_type": "code",
"execution_count": 62,
"metadata": {
"hideCode": true,
"hideCode": false,
"hidePrompt": true
},
"outputs": [],
...
...
@@ -612,7 +620,7 @@
"cell_type": "code",
"execution_count": 63,
"metadata": {
"hideCode": true,
"hideCode": false,
"hidePrompt": true
},
"outputs": [],
...
...
@@ -625,7 +633,7 @@
"cell_type": "code",
"execution_count": 64,
"metadata": {
"hideCode": true,
"hideCode": false,
"hidePrompt": true
},
"outputs": [
...
...
@@ -730,7 +738,7 @@
"cell_type": "code",
"execution_count": 66,
"metadata": {
"hideCode": true,
"hideCode": false,
"hidePrompt": true
},
"outputs": [],
...
...
@@ -803,7 +811,9 @@
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"metadata": {
"hidePrompt": true
},
"outputs": [],
"source": [
"# Définition de la fonction sinus\n",
...
...
@@ -814,7 +824,9 @@
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"metadata": {
"hidePrompt": true
},
"outputs": [],
"source": [
"# Instanciation du modèle\n",
...
...
@@ -827,7 +839,9 @@
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"metadata": {
"hidePrompt": true
},
"outputs": [
{
"data": {
...
...
@@ -850,7 +864,9 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidePrompt": true
},
"source": [
"Avec ces résulats nous pouvons caractériser l'oscillation saisonnière comme suit :\n",
"- +/- 2.5 *ppm* sur une année.\n",
...
...
@@ -861,7 +877,9 @@
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"metadata": {
"hidePrompt": true
},
"outputs": [],
"source": [
"def seasonal_oscillation_fitted_curve(time):\n",
...
...
@@ -874,7 +892,9 @@
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"metadata": {
"hidePrompt": true
},
"outputs": [],
"source": [
"# Ajout d'une colonne dans le dataframe data\n",
...
...
@@ -884,7 +904,10 @@
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"metadata": {
"hideCode": true,
"hidePrompt": true
},
"outputs": [
{
"data": {
...
...
@@ -926,7 +949,9 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidePrompt": true
},
"source": [
"Comme annoncé précédemment, nous voyons que le modèle basé sur un simple sinus, ne colle pas parfaitement au données. \n",
"Cela n'aura probablement pas un fort impact sur le résultat final."
...
...
@@ -934,14 +959,18 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidePrompt": true
},
"source": [
"#### d. Définition du modèle global"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidePrompt": true
},
"source": [
"Dans la suite, nous créeons le modèle prenant en compte l'évolution continue et l'oscillation saisonnière."
"L'intégration des oscillations prériodiques permet d'améliorer un peu plus le modèle initial. \n",
"Au vu de la très bonne valeur de $r²$, nous resterons sur ce modèle pour faire les prédictions pour les années futures."
...
...
@@ -1034,14 +1072,18 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidePrompt": true
},
"source": [
"### 6. Prédiction pour 2025"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidePrompt": true
},
"source": [
"Dans les chapitres précedents, nous avons défini un modèle permettant d'intégrer les oscillations saisonnières à la tendance continue. Nous allons donc pouvoir tenter une prédiction de l'évolution du CO2 dans l'atmosphère pour toute l'année 2025."
]
...
...
@@ -1049,7 +1091,10 @@
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"metadata": {
"hideOutput": true,
"hidePrompt": true
},
"outputs": [
{
"data": {
...
...
@@ -1072,7 +1117,9 @@
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"metadata": {
"hidePrompt": true
},
"outputs": [],
"source": [
"# Calcul du temps avec la même fonction que pour les calculs des chapitres précédents\n",
...
...
@@ -1082,7 +1129,9 @@
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"metadata": {
"hidePrompt": true
},
"outputs": [],
"source": [
"# Calcul des préditions sur l'année 2025\n",
...
...
@@ -1098,7 +1147,9 @@
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"metadata": {
"hidePrompt": true
},
"outputs": [
{
"data": {
...
...
@@ -1120,7 +1171,9 @@
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"metadata": {
"hidePrompt": true
},
"outputs": [
{
"data": {
...
...
@@ -1141,7 +1194,9 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidePrompt": true
},
"source": [
"La valeur moyenne attendue de CO2 dans l'atmosphère pour 2025 est de 425 *ppm*."
]
...
...
@@ -1149,7 +1204,10 @@
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"metadata": {
"hideCode": true,
"hidePrompt": true
},
"outputs": [
{
"data": {
...
...
@@ -1193,7 +1251,9 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidePrompt": true
},
"source": [
"L'oscillation saisonnière calculée respecte les caractérisques principales des relevés :\n",
"- Maximum dans la première moitié de l'année.\n",
...
...
@@ -1207,7 +1267,9 @@
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"metadata": {
"hidePrompt": true
},
"outputs": [],
"source": [
"# Préparation des échelles de temps pour le tracé des prédictions\n",
...
...
@@ -1220,7 +1282,10 @@
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"metadata": {
"hideCode": true,
"hidePrompt": true
},
"outputs": [
{
"data": {
...
...
@@ -1266,29 +1331,26 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidePrompt": true
},
"source": [
"### 7. Conclusion"
]
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"hidePrompt": true
},
"source": [
"Nous avons vu qu'il est possible de définir un modèle de prédiction crédible avec une simple régression quadratique. L'ajout des oscillations saisonnières permet tout de même d'améliorer très légèrement la qualité des prédictions. \n",
"D'un point de vue purement analytique, il serait intéressant de faire une transformée de Fourier sur les données brutes pour caractériser la variation périodique de 30 ans."