Modifications mineures.

parent 1e5e5439
...@@ -306,98 +306,6 @@ ...@@ -306,98 +306,6 @@
"* CO2 : concentration de CO2 en *ppm*." "* CO2 : concentration de CO2 en *ppm*."
] ]
}, },
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"hideCode": true,
"hideOutput": true,
"hidePrompt": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>CO2</th>\n",
" </tr>\n",
" <tr>\n",
" <th>date</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1958-03-29</th>\n",
" <td>316.19</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1958-04-05</th>\n",
" <td>317.31</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1958-04-12</th>\n",
" <td>317.69</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1958-04-19</th>\n",
" <td>317.58</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1958-04-26</th>\n",
" <td>316.48</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" CO2\n",
"date \n",
"1958-03-29 316.19\n",
"1958-04-05 317.31\n",
"1958-04-12 317.69\n",
"1958-04-19 317.58\n",
"1958-04-26 316.48"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Affichage partiel de la base de données mise en forme\n",
"data.head(5)"
]
},
{
"cell_type": "markdown",
"metadata": {
"hideCode": true,
"hidePrompt": true
},
"source": [
"L'inspection visuelle de la base de données complète montre que le fichier est bien formé et ne semble pas comporter de valeurs manquantes ou aberrantes. "
]
},
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": { "metadata": {
...@@ -421,7 +329,7 @@ ...@@ -421,7 +329,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 8, "execution_count": 7,
"metadata": { "metadata": {
"hideCode": false, "hideCode": false,
"hidePrompt": true "hidePrompt": true
...@@ -456,12 +364,12 @@ ...@@ -456,12 +364,12 @@
"source": [ "source": [
"La base de données comporte 3156 lignes de valeurs numériques (float64) sans valeur manquante. L'index est bien au format `datetime` allant du 29/03/1958 au 01/02/2020.\n", "La base de données comporte 3156 lignes de valeurs numériques (float64) sans valeur manquante. L'index est bien au format `datetime` allant du 29/03/1958 au 01/02/2020.\n",
"\n", "\n",
"Nous allons tout de même vérifier la continuité des mesures. Le but étant de constater si nous avons bien une mesure par semaine." "Nous allons vérifier la continuité des mesures. Le but étant de constater si nous avons bien une mesure par semaine."
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 9, "execution_count": 8,
"metadata": { "metadata": {
"hidePrompt": true "hidePrompt": true
}, },
...@@ -515,8 +423,7 @@ ...@@ -515,8 +423,7 @@
" # On ajouté 1ns à la date de fin d'une période sans mesures pour avoir un compte rond\n", " # On ajouté 1ns à la date de fin d'une période sans mesures pour avoir un compte rond\n",
" # Les périoees sans mesures sont ajoutées dans une liste sous forme de tuple\n", " # Les périoees sans mesures sont ajoutées dans une liste sous forme de tuple\n",
" empty_periods.append((p1.end_time+pd.Timedelta(1), p2.start_time))\n", " empty_periods.append((p1.end_time+pd.Timedelta(1), p2.start_time))\n",
" print(f\"Entre les semaines {p1.year}-{p1.week:<2} et {p2.year}-{p2.week:<2} \\\n", " print(f\"Entre les semaines {p1.year}-{p1.week:<2} et {p2.year}-{p2.week:<2} il y a {delta.days:<3} jours sans mesures.\")"
" il y a {delta.days:<3} jours sans mesures.\")"
] ]
}, },
{ {
...@@ -526,8 +433,8 @@ ...@@ -526,8 +433,8 @@
"hidePrompt": true "hidePrompt": true
}, },
"source": [ "source": [
"Nous avons donc plusieurs période sans mesures. Certaines de ces périodes sont longues. \n", "Nous avons plusieurs périodes sans mesures. Certaines de ces périodes sont longues. \n",
"Dans le graphique qui suit, les données sont tracées avec interpolation linéaire des données manquantes. Ne constatant pas d'impact sur la forme de la courbe, nous pouvons considérer que la base est suffisante et ne nécessite pas d'imputer les données manquantes." "Il est nécessaire de vérifier si ces périodes dans mesures peuvent avoir un impact sur le résultat final."
] ]
}, },
{ {
...@@ -557,14 +464,14 @@ ...@@ -557,14 +464,14 @@
"hidePrompt": true "hidePrompt": true
}, },
"source": [ "source": [
"Un tracé sous forme graphique nous permettra de constater les phénomènes. \n", "Après l'affichage de la base complète, nous traçons 2 sous-graphiques correspondant à l'évolution du taux de CO2 sur 2 années différentes. Une en début de base (du 01/01/1960 au 01/01/1961) et une autre en fin (du 01/01/2015 au 01/01/2016). \n",
"Après l'affichage de la base complète, nous tracerons 2 sous-graphiques correspondant à l'évolution du taux de CO2 sur 2 années différentes. Une en début de base (du 01/01/1960 au 01/01/1961) et une autre en fin (du 01/01/2015 au 01/01/2016). \n", "Les périodes sans mesures apparaissent en rouge. \n",
"Les périodes sans mesures apparaitront en rouge." "Ne constatant pas d'impact sur la forme de la courbe, nous pouvons considérer que la base est suffisante et ne nécessite pas d'imputer les données manquantes."
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 10, "execution_count": 9,
"metadata": { "metadata": {
"hideCode": false, "hideCode": false,
"hideOutput": true, "hideOutput": true,
...@@ -579,7 +486,7 @@ ...@@ -579,7 +486,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 11, "execution_count": 10,
"metadata": { "metadata": {
"hideCode": true, "hideCode": true,
"hidePrompt": true "hidePrompt": true
...@@ -679,7 +586,7 @@ ...@@ -679,7 +586,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 12, "execution_count": 11,
"metadata": { "metadata": {
"hideCode": false, "hideCode": false,
"hidePrompt": true "hidePrompt": true
...@@ -701,7 +608,7 @@ ...@@ -701,7 +608,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 13, "execution_count": 12,
"metadata": { "metadata": {
"hideCode": false, "hideCode": false,
"hidePrompt": true "hidePrompt": true
...@@ -718,7 +625,7 @@ ...@@ -718,7 +625,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 14, "execution_count": 13,
"metadata": { "metadata": {
"hidePrompt": true "hidePrompt": true
}, },
...@@ -755,37 +662,24 @@ ...@@ -755,37 +662,24 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 15, "execution_count": 14,
"metadata": { "metadata": {
"hideCode": false, "hideCode": false,
"hidePrompt": true "hidePrompt": true
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"# Fonction de prédiction à long terme\n", "# Ajout d'une colonne dans le dataframe data\n",
"def long_trend_fitted_curve(time, a, b, c):\n", "data['long_trend_fit'] = np.around(result_long_trend.best_fit, 2)"
" long_trend_CO2 = (a*time*time + b*time + c)\n",
" return np.round(long_trend_CO2, 2)"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 16, "execution_count": 15,
"metadata": { "metadata": {
"hideCode": false,
"hidePrompt": true "hidePrompt": true
}, },
"outputs": [], "outputs": [],
"source": [
"# Ajout d'une colonne dans le dataframe data\n",
"data['long_trend_fit'] = np.around(result_long_trend.best_fit, 2)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [ "source": [
"# Ajout des colonnes bandes inf et sup de l'intervalle de confiance sur la tendance longue\n", "# Ajout des colonnes bandes inf et sup de l'intervalle de confiance sur la tendance longue\n",
"# Avec 2 sigmas\n", "# Avec 2 sigmas\n",
...@@ -797,7 +691,7 @@ ...@@ -797,7 +691,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 18, "execution_count": 16,
"metadata": { "metadata": {
"hideCode": false, "hideCode": false,
"hidePrompt": true "hidePrompt": true
...@@ -809,7 +703,7 @@ ...@@ -809,7 +703,7 @@
"0.9936252499490063" "0.9936252499490063"
] ]
}, },
"execution_count": 18, "execution_count": 16,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
...@@ -832,7 +726,7 @@ ...@@ -832,7 +726,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 19, "execution_count": 17,
"metadata": { "metadata": {
"hideCode": true, "hideCode": true,
"hideOutput": false, "hideOutput": false,
...@@ -924,7 +818,7 @@ ...@@ -924,7 +818,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 20, "execution_count": 18,
"metadata": { "metadata": {
"hideCode": false, "hideCode": false,
"hidePrompt": true "hidePrompt": true
...@@ -937,7 +831,7 @@ ...@@ -937,7 +831,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 21, "execution_count": 19,
"metadata": { "metadata": {
"hideCode": true, "hideCode": true,
"hidePrompt": true "hidePrompt": true
...@@ -989,7 +883,7 @@ ...@@ -989,7 +883,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 22, "execution_count": 20,
"metadata": { "metadata": {
"hidePrompt": true "hidePrompt": true
}, },
...@@ -1002,7 +896,7 @@ ...@@ -1002,7 +896,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 23, "execution_count": 21,
"metadata": { "metadata": {
"hidePrompt": true "hidePrompt": true
}, },
...@@ -1019,7 +913,7 @@ ...@@ -1019,7 +913,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 24, "execution_count": 22,
"metadata": { "metadata": {
"hidePrompt": true "hidePrompt": true
}, },
...@@ -1056,21 +950,7 @@ ...@@ -1056,21 +950,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 25, "execution_count": 23,
"metadata": {
"hidePrompt": true
},
"outputs": [],
"source": [
"# Fonction de prédiction saisonnière\n",
"def seasonal_oscillation_fitted_curve(time, amp, freq, shift):\n",
" seasonal_oscillation_CO2 = (amp*np.sin(2*np.pi*freq*time) + shift)\n",
" return np.round(seasonal_oscillation_CO2, 2)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": { "metadata": {
"hidePrompt": true "hidePrompt": true
}, },
...@@ -1082,7 +962,7 @@ ...@@ -1082,7 +962,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 27, "execution_count": 24,
"metadata": { "metadata": {
"hideOutput": true, "hideOutput": true,
"hidePrompt": true "hidePrompt": true
...@@ -1099,7 +979,7 @@ ...@@ -1099,7 +979,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 28, "execution_count": 25,
"metadata": { "metadata": {
"hideOutput": true, "hideOutput": true,
"hidePrompt": true "hidePrompt": true
...@@ -1113,7 +993,7 @@ ...@@ -1113,7 +993,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 29, "execution_count": 26,
"metadata": { "metadata": {
"hideCode": true, "hideCode": true,
"hidePrompt": true "hidePrompt": true
...@@ -1160,7 +1040,7 @@ ...@@ -1160,7 +1040,7 @@
"source": [ "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", "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. \n", "Cela n'aura probablement pas un fort impact sur le résultat final. \n",
"Nous voyons tout de même que l'intervalle de confiance est très resserré et à peine visible." "Nous voyons tout de même que l'intervalle de confiance est très resserré."
] ]
}, },
{ {
...@@ -1183,7 +1063,7 @@ ...@@ -1183,7 +1063,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 30, "execution_count": 27,
"metadata": { "metadata": {
"hideCode": false, "hideCode": false,
"hidePrompt": true "hidePrompt": true
...@@ -1196,7 +1076,7 @@ ...@@ -1196,7 +1076,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 31, "execution_count": 28,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
...@@ -1208,7 +1088,7 @@ ...@@ -1208,7 +1088,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 32, "execution_count": 29,
"metadata": { "metadata": {
"hideCode": true, "hideCode": true,
"hidePrompt": true "hidePrompt": true
...@@ -1253,7 +1133,7 @@ ...@@ -1253,7 +1133,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 33, "execution_count": 30,
"metadata": { "metadata": {
"hidePrompt": true "hidePrompt": true
}, },
...@@ -1264,7 +1144,7 @@ ...@@ -1264,7 +1144,7 @@
"0.997596481376051" "0.997596481376051"
] ]
}, },
"execution_count": 33, "execution_count": 30,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
...@@ -1299,51 +1179,39 @@ ...@@ -1299,51 +1179,39 @@
"hidePrompt": true "hidePrompt": true
}, },
"source": [ "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." "Dans les chapitres précédents, 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."
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 34, "execution_count": 31,
"metadata": { "metadata": {
"hideOutput": true, "hideOutput": true,
"hidePrompt": true "hidePrompt": true
}, },
"outputs": [ "outputs": [],
{
"data": {
"text/plain": [
"(52,)"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"# Définition des différentes dates de l'année 2025 à calculer\n", "# Définition des différentes dates de l'année 2025 à calculer\n",
"# Une date par semaine comme pour la base de sonnées initiale\n", "# Une date par semaine comme pour la base de sonnées initiale\n",
"pred_range = pd.date_range(start='2025/01/01', end='2025/12/31', freq='W')\n", "pred_range = pd.date_range(start='2025/01/01', end='2025/12/31', freq='W')"
"pred_range.shape"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 35, "execution_count": 32,
"metadata": { "metadata": {
"hideOutput": false, "hideOutput": false,
"hidePrompt": true "hidePrompt": true
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"# Calcul du temps avec la même fonction que pour les calculs des chapitres précédents\n", "# Calcul de l'échelle de temps\n",
"time = dates_to_idx(pred_range)" "time = dates_to_idx(pred_range)"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 36, "execution_count": 33,
"metadata": { "metadata": {
"hideOutput": false, "hideOutput": false,
"hidePrompt": true "hidePrompt": true
...@@ -1358,7 +1226,7 @@ ...@@ -1358,7 +1226,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 37, "execution_count": 34,
"metadata": { "metadata": {
"hidePrompt": true "hidePrompt": true
}, },
...@@ -1369,7 +1237,7 @@ ...@@ -1369,7 +1237,7 @@
"425.0" "425.0"
] ]
}, },
"execution_count": 37, "execution_count": 34,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
...@@ -1382,7 +1250,7 @@ ...@@ -1382,7 +1250,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 38, "execution_count": 35,
"metadata": { "metadata": {
"hidePrompt": true "hidePrompt": true
}, },
...@@ -1393,7 +1261,7 @@ ...@@ -1393,7 +1261,7 @@
"425.0" "425.0"
] ]
}, },
"execution_count": 38, "execution_count": 35,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
...@@ -1415,7 +1283,7 @@ ...@@ -1415,7 +1283,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 39, "execution_count": 36,
"metadata": { "metadata": {
"hideCode": true, "hideCode": true,
"hidePrompt": true "hidePrompt": true
...@@ -1468,7 +1336,7 @@ ...@@ -1468,7 +1336,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 40, "execution_count": 37,
"metadata": { "metadata": {
"hideCode": true, "hideCode": true,
"hidePrompt": true "hidePrompt": true
...@@ -1485,7 +1353,7 @@ ...@@ -1485,7 +1353,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 41, "execution_count": 38,
"metadata": { "metadata": {
"hideCode": true, "hideCode": true,
"hideOutput": false, "hideOutput": false,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment