ajout estimation lente

parent 6ff3c541
...@@ -1293,7 +1293,142 @@ ...@@ -1293,7 +1293,142 @@
"source": [ "source": [
"# Analyse des données\n", "# Analyse des données\n",
"\n", "\n",
"Bien que le fichier d'origine nous fournisse un jeu de données pré-traitées; nous allons " "Bien que le fichier d'origine nous fournisse un jeu de données pré-traitées; nous allons désormais tenter de retrouver ces résultats en:\n",
"- identifiant la composante lente en un polynôme de degré 2 en fonction du temps\n",
"- identifiant par la suite la composante périodique en effectuant une analyse spectrale une fois la composante lente enlevée."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Composante lente\n",
"\n",
"on considère un polynôme de la forme $C(t) = a + b t + c t^2$. Nous allons appliquer une régression linéaire (grâce à [`np.linalg.lstsq`](https://numpy.org/doc/stable/reference/generated/numpy.linalg.lstsq.html))\n",
"\n",
"Commençons par récupérer les tableaux numpy"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [],
"source": [
"temps = np.array(data_MLO[\"Date.1\"])\n",
"CO2 = np.array(data_MLO[\"CO2\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pour que les temps soient de taille plus raisonnable, nous allons soustraire le temps initial à tout les temps afin de commencer à zéro:"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [],
"source": [
"temps = temps - temps[0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Construisons ensuite la matrice qui nous permettra d'effectuer la régression linéaire:\n",
"\n",
"$$ A_{i,j} = t_i^j $$\n",
"\n",
"Cad,\n",
"$$ A = \\begin{bmatrix}\n",
" ... & ... & ... \\\\\n",
" 1 & 2020^2 & 2020^2 \\\\\n",
" 1 & 2020,1^2 & 2020,1^2 \\\\\n",
" 1 & 2020,2^2 & 2020,2^2 \\\\\n",
" ... & ... & ...\n",
" \\end{bmatrix}$$"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[1.00000000e+00 0.00000000e+00 0.00000000e+00]\n",
" [1.00000000e+00 8.50000000e-02 7.22500000e-03]\n",
" [1.00000000e+00 1.67200000e-01 2.79558400e-02]\n",
" ...\n",
" [1.00000000e+00 6.62536000e+01 4.38953951e+03]\n",
" [1.00000000e+00 6.63356000e+01 4.40041183e+03]\n",
" [1.00000000e+00 6.64203000e+01 4.41165625e+03]]\n"
]
}
],
"source": [
"A = np.column_stack([temps**0,temps, temps**2])\n",
"print(A)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Nous pouvons à présent résoudre le système linéaire: $$ Ax = b$$"
]
},
{
"cell_type": "code",
"execution_count": 103,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Estimation des coefficients de la régression: a = 314.830 ppm, b = 0.734 ppm/annee, c = 0.014 ppm/annee^2 \n"
]
}
],
"source": [
"param = np.linalg.lstsq(A,CO2,rcond=None)\n",
"a,b,c = param[0] \n",
"print(f\"Estimation des coefficients de la régression: a = {a:.3f} ppm, b = {b:.3f} ppm/annee, c = {c:.3f} ppm/annee^2 \" )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Nous allons désormais afficher le CO2 au cours du temps et y superposer notre estimation. Commençons par définir une fonction qui renvoie la composante lente:"
]
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {},
"outputs": [],
"source": [
"def CO2_comp_lente(t):\n",
" return a + b*t + c*t"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"CO2_estimation = CO2_compe_lente(temps)\n",
"\n",
"data"
] ]
} }
], ],
......
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