python-pour-finance/08-Analyse-Time-Series/4-ARIMA-et-ARIMA-Saisonnier...

2453 lines
679 KiB
Plaintext
Raw Permalink Normal View History

2023-08-21 15:12:19 +00:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Attention ! C'est un sujet compliqué ! Rappelez-vous que c'est un notebook facultatif à parcourir et que pour le comprendre pleinement, vous devez lire les liens supplémentaires et regarder la vidéo explicative entièrement. Ce notebook et les vidéos liées n'ont pas pour but de donner un aperçu complet d'ARIMA, mais plutôt de vous montrer à quoi il peut servir, afin que vous puissiez comprendre plus tard pourquoi il peut être ou non un bon choix pour les données financières sur les actions.\n",
"____\n",
"\n",
"\n",
"# ARIMA et ARIMA Saisonnier\n",
"\n",
"\n",
"## Moyennes Mobiles Intégrées Auto-Régressives\n",
"\n",
"Le processus général pour les modèles ARIMA est le suivant:\n",
"* Visualiser les données de la série temporelle\n",
"* Rendre les données de la série temporelle stationnaires\n",
"* Tracer les graphiques de corrélation et d'auto-corrélation\n",
"* Construire le modèle ARIMA\n",
"* Utiliser le modèle pour faire des prédictions\n",
"\n",
"Passons par ces étapes !"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Étape 1: Obtenir les données (et les formatter)\n",
"\n",
"Nous utiliserons quelques données sur la production laitière mensuelle.\n",
"\n",
"C'est déjà enregistré en csv pour vous, chargeons le:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import statsmodels.api as sm\n",
"\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv('monthly-milk-production-pounds-p.csv')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"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>Month</th>\n",
" <th>Monthly milk production: pounds per cow. Jan 62 ? Dec 75</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1962-01</td>\n",
" <td>589.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1962-02</td>\n",
" <td>561.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1962-03</td>\n",
" <td>640.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1962-04</td>\n",
" <td>656.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1962-05</td>\n",
" <td>727.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Month Monthly milk production: pounds per cow. Jan 62 ? Dec 75\n",
"0 1962-01 589.0 \n",
"1 1962-02 561.0 \n",
"2 1962-03 640.0 \n",
"3 1962-04 656.0 \n",
"4 1962-05 727.0 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"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>Month</th>\n",
" <th>Monthly milk production: pounds per cow. Jan 62 ? Dec 75</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>164</th>\n",
" <td>1975-09</td>\n",
" <td>817.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>165</th>\n",
" <td>1975-10</td>\n",
" <td>827.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>166</th>\n",
" <td>1975-11</td>\n",
" <td>797.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>167</th>\n",
" <td>1975-12</td>\n",
" <td>843.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>168</th>\n",
" <td>Monthly milk production: pounds per cow. Jan 6...</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Month \\\n",
"164 1975-09 \n",
"165 1975-10 \n",
"166 1975-11 \n",
"167 1975-12 \n",
"168 Monthly milk production: pounds per cow. Jan 6... \n",
"\n",
" Monthly milk production: pounds per cow. Jan 62 ? Dec 75 \n",
"164 817.0 \n",
"165 827.0 \n",
"166 797.0 \n",
"167 843.0 \n",
"168 NaN "
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.tail()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Nettoyage**\n",
"\n",
"Nettoyons un peu tout ça !"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"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>Month</th>\n",
" <th>Milk in pounds per cow</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1962-01</td>\n",
" <td>589.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1962-02</td>\n",
" <td>561.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1962-03</td>\n",
" <td>640.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1962-04</td>\n",
" <td>656.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1962-05</td>\n",
" <td>727.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Month Milk in pounds per cow\n",
"0 1962-01 589.0\n",
"1 1962-02 561.0\n",
"2 1962-03 640.0\n",
"3 1962-04 656.0\n",
"4 1962-05 727.0"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.columns = ['Month','Milk in pounds per cow']\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"# Dernière valeur bizarre en bas causant des problèmes\n",
"df.drop(168,axis=0,inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"df['Month'] = pd.to_datetime(df['Month'])"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"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>Month</th>\n",
" <th>Milk in pounds per cow</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1962-01-01</td>\n",
" <td>589.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1962-02-01</td>\n",
" <td>561.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1962-03-01</td>\n",
" <td>640.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1962-04-01</td>\n",
" <td>656.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1962-05-01</td>\n",
" <td>727.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Month Milk in pounds per cow\n",
"0 1962-01-01 589.0\n",
"1 1962-02-01 561.0\n",
"2 1962-03-01 640.0\n",
"3 1962-04-01 656.0\n",
"4 1962-05-01 727.0"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"df.set_index('Month',inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"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>Milk in pounds per cow</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Month</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1962-01-01</th>\n",
" <td>589.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1962-02-01</th>\n",
" <td>561.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1962-03-01</th>\n",
" <td>640.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1962-04-01</th>\n",
" <td>656.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1962-05-01</th>\n",
" <td>727.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Milk in pounds per cow\n",
"Month \n",
"1962-01-01 589.0\n",
"1962-02-01 561.0\n",
"1962-03-01 640.0\n",
"1962-04-01 656.0\n",
"1962-05-01 727.0"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"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>count</th>\n",
" <th>mean</th>\n",
" <th>std</th>\n",
" <th>min</th>\n",
" <th>25%</th>\n",
" <th>50%</th>\n",
" <th>75%</th>\n",
" <th>max</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Milk in pounds per cow</th>\n",
" <td>168.0</td>\n",
" <td>754.708333</td>\n",
" <td>102.204524</td>\n",
" <td>553.0</td>\n",
" <td>677.75</td>\n",
" <td>761.0</td>\n",
" <td>824.5</td>\n",
" <td>969.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" count mean std min 25% 50% \\\n",
"Milk in pounds per cow 168.0 754.708333 102.204524 553.0 677.75 761.0 \n",
"\n",
" 75% max \n",
"Milk in pounds per cow 824.5 969.0 "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe().transpose()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Étape 2: Visualiser les données\n",
"\n",
"Visualisons ces données avec quelques méthodes."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1c1ead22d0>"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEGCAYAAACevtWaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOy9d5gkZ33v+307Vuee6emevHlXaYO0il6UkJBACCPAwAWM0LHggAMXOFhguCQZX9nCcI+v8bHBCESw9YhoI2xAxyAQq5xW0mqTtHl2cuycqrve80fVW13d06FSa2dn38/z6NFuT8/bPbMz3/rV95cIpRQcDofDWV04Tvcb4HA4HI79cHHncDicVQgXdw6Hw1mFcHHncDicVQgXdw6Hw1mFuE73GwCAvr4+um7dutP9NjgcDueM4rnnnpunlMabfWxFiPu6devw7LPPnu63weFwOGcUhJCTrT7GbRkOh8NZhXBx53A4nFUIF3cOh8NZhawIz70ZoihifHwcxWLxdL8VzipCEASMjIzA7Xaf7rfC4XSVFSvu4+PjCIVCWLduHQghp/vtcFYBlFIsLCxgfHwc69evP91vh8PpKivWlikWi4jFYlzYObZBCEEsFuN3g5yzghUr7gC4sHNsh/9Mcc4WVrS4czgczunmVwdmMJEsnO63YRgu7m0ghODWW29V/16pVBCPx/GmN70JAPCzn/0Md999NwDgzjvvxFe+8hUAwLXXXtuxKesDH/gADhw40KV3bg/r1q3D/Pz86X4bHM5pg1KKP7tvD/7xt0e6+hrd2KuxYhOqK4FAIIB9+/ahUCjA5/PhV7/6FYaHh9WPv/nNb8ab3/xmU2d/85vftOttnvFUKhW4XPxHkbPyyJWrKFcl7J9Ide013vKPj+GG8/vx4es223ouj9w7cNNNN+HnP/85AOD+++/Hu9/9bvVj3/nOd/DhD3+45edKkoTbbrsNn/3sZ5d9TBvdB4NBfOYzn8GOHTtwxRVXYGZmZtnz77zzTtx666247rrrsHnzZtxzzz0A5Kv+Jz7xCWzduhXbtm3DD37wAwDAww8/rN5hAMCHP/xhfOc73wEgR+Rf+MIXsHPnTmzbtg2HDh0CACwsLODGG2/ERRddhA996ENqNJHL5XDzzTdjx44d2Lp1q/oajV/Pxz72MezatQtbt27F008/rX7u7bffjksvvRQXXXQRHnjgAfV79453vAO///u/jxtvvHHZed/73vewfft27NixQ717OnnyJK6//nps374d119/PcbGxlCtVrFhwwZQSpFMJuFwOLB7924AwFVXXYUjR7oXcXFWP+mCCAA4NJ1BpSp15TUOTmfw9Ikl2889I8Klv/yP/Tgwmbb1zPOHwvjC71/Q8Xnvete78MUvfhFvetObsHfvXtx+++145JFHOn5epVLBH/7hH2Lr1q34zGc+0/a5uVwOV1xxBe666y588pOfxD333NP0grB37148+eSTyOVyuOiii3DzzTfjiSeewAsvvIAXX3wR8/PzuPTSS3H11Vd3fH99fX3Ys2cP/umf/glf+cpX8M1vfhN/+Zd/iSuvvBKf//zn8fOf/xzf+MY3AAAPPvgghoaG1ItcKtU8isnlcnj88cexe/du3H777di3bx/uuusuXHfddbj33nuRTCZx2WWX4XWvex0A4IknnsDevXvR29tbd87+/ftx11134bHHHkNfXx8WFxcByBeo973vfbjttttw77334iMf+Qh++tOfYsuWLThw4ACOHz+Oiy++GI888gguv/xyjI+PY9OmTR2/F5zuIUkUf/PLg3jP5Wuxvi9wut+OYdJFWdxLFQlH53I4ZyBk6/lFsYpyRcKJ+Zyt5wI8cu/I9u3bceLECdx///144xvfqPvzPvShD+kSdgDweDxqlH3xxRfjxIkTTZ93yy23wOfzoa+vD6997Wvx9NNP49FHH8W73/1uOJ1O9Pf345prrsEzzzzT8TXf9ra3LXu93bt3473vfS8A4Oabb0ZPTw8AYNu2bfj1r3+Nv/iLv8AjjzyCSCTS9Ex2V3P11VcjnU4jmUziv/7rv3D33XfjwgsvxLXXXotisYixsTEAwA033LBM2AHgN7/5Dd7+9rejr68PANTnPPHEE3jPe94DALj11lvx6KOPApAj9N27d2P37t349Kc/jUcffRTPPPMMLr300o7fB053mUoXcc8jx/Hvz0+c7rdiinShov55/6T91kxKuTMYX8qjXLH3zuCMiNz1RNjd5M1vfjPuuOMOPPzww1hYWND1Obt27cJvf/tb/Pmf/zkEQWj7XLfbrZboOZ1OVCqVps9rLOMjhLRMxLhcLkhS7Yelsbbb6/U2fb1mpYJbtmzBc889h1/84hf49Kc/jRtvvBGf//zndb+/n/zkJzjnnHPqPvbUU08hEGgeyVFKdZUssudcddVV+PrXv47JyUl88YtfxJe//GU8/PDDuu5gON0llZfF6+hstivnU0rxyR/vxbsuG8XFa5cHClZhtgwA7J9M42077T2fibtEgbHFPDYlgradzSN3Hdx+++34/Oc/j23btun+nPe///144xvfiHe84x0txdooDzzwAIrFIhYWFvDwww+rFswPfvADVKtVzM3NYffu3bjsssuwdu1aHDhwAKVSCalUCg899FDH86+++mrcd999AIBf/vKXWFqSfcDJyUn4/X68973vxR133IE9e/Y0/XzmxT/66KOIRCKIRCJ4/etfj3/4h39QL0LPP/98x/dx/fXX44c//KF6IWW2zK5du/D9738fAHDffffhyiuvBABcfvnlePzxx+FwOCAIAi688EL88z//M6666qqOr8XpLslCGQBweDbTlfNTBRE/em4cv3xpuivnM1umN+DpSuSezNcuHnZbM2dE5H66GRkZwUc/+lHDn/fxj38cqVQKt956K+677z44HNaupZdddhluvvlmjI2N4XOf+xyGhobw1re+FU888QR27NgBQgj+9m//FgMDAwCAd77zndi+fTs2b96Miy66qOP5X/jCF/Dud78bO3fuxDXXXIM1a9YAAF566SV84hOfgMPhgNvtxte+9rWmn9/T04Ndu3YhnU7j3nvvBQB87nOfw8c+9jFs374dlFKsW7cO//mf/9n2fVxwwQX4zGc+g2uuuQZOpxMXXXQRvvOd7+CrX/0qbr/9dnz5y19GPB7Ht7/9bQDyXcjo6CiuuOIKAHIkf//99xu6GHO6A4vcj8/nUKlKcDntjSeZOJ5aytt6LoNF7lds6MWjh+d131XqJaW5MzixYK+4k27UVxrlkksuoY114QcPHsR55513mt7RyuPOO+9EMBjEHXfccbrfSlOuvfZafOUrX8Ell1xyut9KR/jP1qvH958ew6f+7SUAwEN/fg02xu2zHQDghVNJvOUfH8P5g2H84qP236n9/a8P4+9+/Qr+6pYL8LkH9uORT74Wo71+287/8XPjuONHLwIA/vDyNbjrrcYCEkLIc5TSpr903JbhcDhdI6mJTI90wXdfysu2z3i3IveiiIDHie0jUQDAPpvr3VnkvqEvgOPcljk7ufPOO0/3W2jLww8/fLrfAmcFksyLcDoIqhLFkdksXm9zbQSzfdLFClIFERGfvaOc0wURYZ8b5wyE4HQQHJxK46Ztg7adnyqIIATYNhLBM8cXbTsXWOGR+0qwjDirC/4z9eqSKpTRG/BgKCJ0JXJPKpE7AJxatD96TxdFhAU3BLcT/SEvxm2eMZMuiAh5XdgYD2IyVURRrNp29ooVd0EQsLCwwH8ZObbB5rl3Kk09m6hUJfz1Lw5iJt2dMcgsmt6YCHalYkZr+3TDmkkXKgj7ZIOjPyLY/n1KFURE/G6sUxq8Ti7Y9zWsWFtmZGQE4+PjmJubO91vhbOKYJuYODJH53L4xu5jGAgLuP1K+xeYJPMioj43NidCuP/pMUgShcNhX7VJMi/C5SCoSBTjS/ZPbkwXRQyE5WBgICzglRl7L1DJfBkRnxvrY7K4H5/P2tYFu2LF3e128205HE6XYQk9u8vwGMm8iKGogE2JIApiFRPJgq3VJsl
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df.plot()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"timeseries = df['Milk in pounds per cow']"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x1c1ef56550>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"timeseries.rolling(12).mean().plot(label='12 Month Rolling Mean')\n",
"timeseries.rolling(12).std().plot(label='12 Month Rolling Std')\n",
"timeseries.plot()\n",
"plt.legend()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x1c1ef1c0d0>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"timeseries.rolling(12).mean().plot(label='12 Month Rolling Mean')\n",
"timeseries.plot()\n",
"plt.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Décomposition\n",
"\n",
"La décomposition ETS nous permet de voir les différentes parties !"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 432x288 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9QAAAIDCAYAAADlmFanAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdZ1RU19eA8ecOvSMISBNUEJBiBcVuNPYSY2wxlpiYXk3PPz2mmB5TTLUlxhg1iTWa2BVRQEXAgtKLIr13uO8HwNdCGXQaeH5ruVZg7sxsJsxw9z377C3JsowgCIIgCIIgCIIgCK2j0HYAgiAIgiAIgiAIgtAWiYRaEARBEARBEARBEG6CSKgFQRAEQRAEQRAE4SaIhFoQBEEQBEEQBEEQboJIqAVBEARBEARBEAThJoiEWhAEQRAEQRAEQRBugr62A7gVHTt2lN3d3bUdhiAIgiAIgiAIgtBOHT9+PFuWZbvGbmvTCbW7uzsRERHaDkMQBEEQBEEQBEFopyRJSm7qNlHyLQiCIAiCIAiCIAg3QSTUgiAIgiAIgiAIWrAqJJGPd52jqqZW26FoXVlljbZDuCkioRYEQRAEQRAEDaiqqUWWZW2HIeiIgrIqPtx5jm/2xTN/RRj5pZXaDklrotMK6Pn2v3yzL07bobSaSKgFQRAEQRAEQc1qamUmfXWY+34+RklFtbbD0bq0vFJth6B1WyLTKa+q5eFhXYlIyuOub0KIyyzWdlhasTIkkcqaWj7eFcu6sBRth9MqIqEWBEEQBEEQBDXbffYy5zKKCInL4f6V4RTfxkn1hohUBi/dx69Hm+zz1O7Jssy6sFR6OFry8lhvflvUn6LyaqZ+G8LB81naDk+jsosr2BZ1idlBnRnuZcf//opmZ0yGtsNSmkioBUEQBEEQBEHNVoYk4mxtwpezenE8JY/5K8IoKq/SdlgaJ8sy3x9MAODtraeJSMrVckTaEZ1ewJlLhcwOckWSJPq52/D344Nwtjbh/lXhrApJvG22B6wPT6WyppYHBrvz7Zw+9HS15qnfT3I0IUfboSlFJNSCIAiCIAiCWt3uDZfOXirkaEIuc4PdmNLLma9n9+ZUaj5zfw6j8DZLqvefzyIus5i3JvXAydqER9ee4HJhubbD0rh1YakYGyiY0tv5yvdcbUzZ+OhARnjZ89bWM/wRkarFCDWjplbmt2MpDOxmi4e9BaaG+qyYH0hnG1MWrY7gzMVCbYfYIpFQC4IgCIIgCGqzPjyFPu/8R/htuhIJsCokCWMDBbMCXQEY5+/IN3P6cPpiAXN/OkZB6e2TVP90KAEHSyPu7e/GD3P7UVJRzSO/Hqeium12eL4ZJRXVbIlMZ4K/E5bGBtfcZm6kz/dz+xLc1ZZ3t51t93vN95y9THp+GfOC3a58r4OZIWsWBmFurM+8FWGk5Oj2ayASakEQBEEQBEEtamtlvjuQQFFFNQ+sCudchu6vNqlabkklf0emc3cfF6xNDa98f4xvJ5bP6cvZS0XM+fnobdGo7MzFQkLiclgwsAuG+gq8Olnw6fSenEzJ583Np2+bEuftUZcoqaxhdpBro7frKSQ+uicAWZZ5cWMUtbXt93VZE5qMo5Uxo3wcrvm+k7UJvzwQRHVtLfevCqO8SncvuIiEWhAEQRAEQVCLI/E5JGaX8MIYL0wM9Zi/Iqzdr7hdb11YChXVtdw/0P2G20b1cGD5fX2ISS/k412xmg9Ow346nICpoR73BnW+8r1x/o48PqIbv4ensvZY2+rufLPWhafgYW9OX7cOTR7jamPKaxN7cCQ+h1/aafO2+KxiDsdlM6d/Z/T1bkxLPewtWDarN/FZJXy194IWIlSOSKgFQRAEQRAEtfjlaBI2ZoY8OKQLaxb2p6yyhnk/h5FTXKHt0DSiqqaWX0KTGeLZEU8Hi0aPGenjwNwBbqwOTeJESp5mA9Sgy4XlbD11kRn9XLEyvbbMefGdXgz3srstmpTFZhRxMiWfWYF1zciaMyvQlWHd7fjwn3MkZZdoKELN+SU0GQM9iZmBnZs8Zmh3O6b1ceH7Awk6u59aJNSCIAiCIAiCyl0qKGP32Uxm9HPFSF8Pr04WrFgQSHp+Gfevuj3GRv0Tk0FGYTn3D3Jv9rgXx3rRydKYlzdFUVndPhu4rT6SRHWtzMJBXW64TU8h8eXM3jhZm/DM+kjKKnW3vPdWrQtLwVBPwd19XFo8VpIkPpzmj76exPMbTlHTjkq/Syqq2XQ8jQn+jthZGDV77OsTfbA2NeClTVFU62CDQ5FQC4IgCIIgCCq3LiyVWllmTv//X33q527Dt3P6cPpiIY/8crzdJo8NVoYk4m5ryvDu9s0eZ2FswHtT/Th/uZhv98dpKDrNKa2sZu2xFMb06ERnW9NGj7EyNeDDuwNIyytrl68BQHlVDX+dTGe0rwM2ZoYt3wFwtDLhrUm+RCTn8fPhBDVHqDl/nUynqKKaucHuLR5rbWrIW5N9iU4vYGVIktpjay2RUAuCIAiCIAgqVVVTy+9hKQzvboerzbUJ1EgfB5ZOC+BwXDbvbjujpQjVLzI1n5Mp+cwf6I5C0XxpL8Ad3g5M7unEN/viOH+5SAMRas6GiDQKyqpYNPTG1emrBXezZWpvZ74/kEBCVrGGotOcnTEZFJRVMTuo6RLnxtzdx5k7ezjwyb/nudAOfjdkWeaX0GR8nSzp09laqftM8HdklI8Dn/4XS3KObpW/i4RaEARBEARBUKn/zlwms6iCuVeNwrnaPX1dWDioC78eSyYqLV/D0WnGqpBEzI30uadvy6W9Dd6c1ANzI31e2hTVbsp7a2plVoQk0ruzNX3dbFo8/pXx3hjpK3ijHXb9XheWQmcbU4K72rbqfpIk8f5Uf8wM9dpF6XdYYi6xl4uYH+ze4j7yBpIkseQuPwwUCl75M1qnfjdEQi0IgiAIgiCo1C+hyThbmzCsmVLnZ+/0pKO5Ea//HdPuxgKl55exPfoS0/u5YHHdnOHm2Job8cakHpxMyeeX0CS1xadJ/525THJOKQ8O7qrU8fYWxjw/xovDcdlsj76k5ug0o7ZWZnNkOscSc5kZ6KpUxcL17CyMeHuKH6fSClgZkqiGKNWvsrqWzZHpvPZ3DFYmBkzq6dSq+3eyMubl8d4cic9hQ0SamqJsPZFQC4IgCIIgCCoTl1lEaEIOcwZ0Rq+ZxMHC2ID/jffhVFoB6yNSNRihetTUyhw8n8VT605yxyf7AZivxP7Q693Vy5nhXnZ8tCu2zY8Yi04r4ONd53DpYMIYX4eW71DvvgFu+DpZ8u62M226eV1NrcyWUxcZ++VBnv49Ek97c2YFNj57WhmTAhwZ6W3PJ//GkpLTdn430vPL+GRXLAM/3MPTv0dSVVPLR/cEYGKo1+rHmh3YmaAuNizZfobMwnI1RNt6IqEWBEEQBEEQVObXoykY6EnM6Ndy4jCllxNBXWxYuvMceSWVGohO9dLySvlkVyxDlu5l3oowDpzPYmagK1ueGIx7R7NWP15DaSugc6WtyrpcWM5zf5xi0teHyS+tYsldfo3OGW6KnqLuNcgsquCL/86rMVL1qK6p5a+Tadz5+QGeWneSWhm+nNWLnc8Mxda8+Y7WzZEkiSVT/dBXKHj1L93/3SiuqObRX48zZOlevt0fRy/XDqxeGMTe54YzxrfTTT2mQiHx4d3+VFTX8rKOvD/0tR2AIAiCIAhCe3QuoxAnaxMsW1Hy29aVVtaNwhnv70hHJRIHSZJ4d4of45cd4qNdsXxwt78GolSdiuoapnwdQl5pJUM87Xh1gg+jfBwwNmj9ytvVXDqY8so4b17ffJp1Yanc2791Tay0payyhh8PJbB8fzw1tTIPD+vK4yM8buo90LtzB2YFurLySBL39HPBu5OlGiJWj0d+Pc7us5l4OVjwzb19GOfX6abKvBvjaGXCS+O8ef3vGDYcT1PqwpW2bDt1kX9iMlg0pAvzB7rj0qHxDu+t1dXOnJfHefP21jM68f4QK9SCIAiCIAgqlpZXyoRlh5nxXSi5bXTl9WZsjrxYNwpnQOPNyBrj1cm
"text/plain": [
"<Figure size 1080x576 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"from statsmodels.tsa.seasonal import seasonal_decompose\n",
"decomposition = seasonal_decompose(df['Milk in pounds per cow'], freq=12) \n",
"fig = plt.figure() \n",
"fig = decomposition.plot() \n",
"fig.set_size_inches(15, 8)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Test pour la Stationnarité\n",
"\n",
"Nous pouvons utiliser le test de [Dickey-Fuller](https://en.wikipedia.org/wiki/Augmented_Dickey%E2%80%93Fuller_test) augmenté ([unit root test](https://en.wikipedia.org/wiki/Unit_root_test)).\n",
"\n",
"En statistique et en économétrie, un test de Dickey-Fuller augmenté (ADF) permet de tester l'hypothèse nulle de la présence d'une racine unitaire dans un échantillon de série temporelle. L'hypothèse de rechange est différente selon la version du test utilisée, mais il s'agit habituellement de la stationnarité ou de la tendance-stationnarité.\n",
"\n",
"Fondamentalement, nous essayons d'accepter l'hypothèse nulle **H0** (que la série temporelle a une racine unitaire, indiquant qu'elle est non stationnaire) ou de rejeter **H0** et d'opter pour l'hypothèse alternative (que la série temporelle n'a pas de racine unitaire et est stationnaire).\n",
"\n",
"Nous finissons par décider cela en fonction du rendement de la valeur p.\n",
"\n",
"* Une petite valeur p (typiquement ≤ 0,05) indique une forte évidence contre l'hypothèse nulle, donc vous rejetez l'hypothèse nulle.\n",
"\n",
"* Une valeur p élevée (> 0,05) indique une faible preuve contre l'hypothèse nulle, donc vous ne pouvez pas rejeter l'hypothèse nulle.\n",
"\n",
"Faisons le test du Dickey-Fuller Augmenté sur nos données :"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"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>Milk in pounds per cow</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Month</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1962-01-01</th>\n",
" <td>589.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1962-02-01</th>\n",
" <td>561.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1962-03-01</th>\n",
" <td>640.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1962-04-01</th>\n",
" <td>656.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1962-05-01</th>\n",
" <td>727.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Milk in pounds per cow\n",
"Month \n",
"1962-01-01 589.0\n",
"1962-02-01 561.0\n",
"1962-03-01 640.0\n",
"1962-04-01 656.0\n",
"1962-05-01 727.0"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"from statsmodels.tsa.stattools import adfuller"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"result = adfuller(df['Milk in pounds per cow'])"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Augmented Dickey-Fuller test (DAF):\n",
"ADF Test Statistic : -1.3038115874221294\n",
"p-value : 0.6274267086030316\n",
"#Lags Used : 13\n",
"Number of Observations Used : 154\n",
"Faible preuve contre l'hypothèse nulle, la série temporelle a une racine unitaire, ce qui indique qu'elle est non stationnaire \n"
]
}
],
"source": [
"print('Augmented Dickey-Fuller test (DAF):')\n",
"labels = ['ADF Test Statistic','p-value','#Lags Used','Number of Observations Used']\n",
"\n",
"for value,label in zip(result,labels):\n",
" print(label+' : '+str(value) )\n",
" \n",
"if result[1] <= 0.05:\n",
" print(\"Preuves solides contre l'hypothèse nulle, rejette l'hypothèse nulle. Les données n'ont pas de racine unitaire et sont stationnaires\")\n",
"else:\n",
" print(\"Faible preuve contre l'hypothèse nulle, la série temporelle a une racine unitaire, ce qui indique qu'elle est non stationnaire \")"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"# Mémoriser dans une fonction pour une utilisation ultérieure !\n",
"def adf_check(time_series):\n",
" \"\"\"\n",
" Passe une série temporelle, retourne le rapport ADF\n",
" \"\"\"\n",
" result = adfuller(time_series)\n",
" print('Augmented Dickey-Fuller test (DAF):')\n",
" labels = ['ADF Test Statistic','p-value','#Lags Used','Number of Observations Used']\n",
"\n",
" for value,label in zip(result,labels):\n",
" print(label+' : '+str(value) )\n",
" \n",
" if result[1] <= 0.05:\n",
" print(\"Preuves solides contre l'hypothèse nulle, rejeter l'hypothèse nulle. Les données n'ont pas de racine unitaire et sont stationnaires\")\n",
" else:\n",
" print(\"Faible preuve contre l'hypothèse nulle, la série temporelle a une racine unitaire, ce qui indique qu'elle est non stationnaire \")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___________\n",
"\n",
"## Remarque Importante!\n",
"\n",
"**Nous avons maintenant réalisé que nos données sont saisonnières (c'est aussi assez évident d'après le tracé lui-même). Cela signifie que nous devons utiliser ARIMA saisonnier sur notre modèle. Si nos données n'étaient pas saisonnières, cela signifie que nous pourrions utiliser seulement ARIMA sur ce modèle. Nous en tiendrons compte lorsque nous différencierons nos données ! En général, les données financières sur les actions ne sont pas saisonnières, mais c'est en quelque sorte le but de cette section, de vous montrer des méthodes courantes, qui ne fonctionneront pas bien sur les données financières sur les actions !**\n",
"\n",
"_____"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Différenciation\n",
"\n",
"La première différence d'une série temporelle est la série de changements d'une période à l'autre. On peut le faire facilement avec pandas. Vous pouvez continuer à prendre la deuxième différence, la troisième différence, et ainsi de suite jusqu'à ce que vos données soient stationnaires."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Première différence**"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"df['Milk First Difference'] = df['Milk in pounds per cow'] - df['Milk in pounds per cow'].shift(1)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Augmented Dickey-Fuller test (DAF):\n",
"ADF Test Statistic : -3.0549955586530704\n",
"p-value : 0.030068004001785647\n",
"#Lags Used : 14\n",
"Number of Observations Used : 152\n",
"Preuves solides contre l'hypothèse nulle, rejeter l'hypothèse nulle. Les données n'ont pas de racine unitaire et sont stationnaires\n"
]
}
],
"source": [
"adf_check(df['Milk First Difference'].dropna())"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1c1ef40850>"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df['Milk First Difference'].plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Seconde différence**"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"# Il sera parfois nécessaire de faire une deuxième différence \n",
"# C'est juste pour faire le show, on n'avait pas besoin de faire une seconde différence dans notre cas\n",
"df['Milk Second Difference'] = df['Milk First Difference'] - df['Milk First Difference'].shift(1)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Augmented Dickey-Fuller test (DAF):\n",
"ADF Test Statistic : -14.327873645603301\n",
"p-value : 1.1126989332084581e-26\n",
"#Lags Used : 11\n",
"Number of Observations Used : 154\n",
"Preuves solides contre l'hypothèse nulle, rejeter l'hypothèse nulle. Les données n'ont pas de racine unitaire et sont stationnaires\n"
]
}
],
"source": [
"adf_check(df['Milk Second Difference'].dropna())"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1c1f3b1390>"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df['Milk Second Difference'].plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Différence Saisonnière**"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1c215f8450>"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df['Seasonal Difference'] = df['Milk in pounds per cow'] - df['Milk in pounds per cow'].shift(12)\n",
"df['Seasonal Difference'].plot()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Augmented Dickey-Fuller test (DAF):\n",
"ADF Test Statistic : -2.335419314359398\n",
"p-value : 0.1607988052771135\n",
"#Lags Used : 12\n",
"Number of Observations Used : 143\n",
"Faible preuve contre l'hypothèse nulle, la série temporelle a une racine unitaire, ce qui indique qu'elle est non stationnaire \n"
]
}
],
"source": [
"# Différence Saisonnière non suffisante !\n",
"adf_check(df['Seasonal Difference'].dropna())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Première différence saisoniière**"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1c21713ad0>"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# You can also do seasonal first difference\n",
"df['Seasonal First Difference'] = df['Milk First Difference'] - df['Milk First Difference'].shift(12)\n",
"df['Seasonal First Difference'].plot()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Augmented Dickey-Fuller test (DAF):\n",
"ADF Test Statistic : -5.038002274921984\n",
"p-value : 1.8654234318788342e-05\n",
"#Lags Used : 11\n",
"Number of Observations Used : 143\n",
"Preuves solides contre l'hypothèse nulle, rejeter l'hypothèse nulle. Les données n'ont pas de racine unitaire et sont stationnaires\n"
]
}
],
"source": [
"adf_check(df['Seasonal First Difference'].dropna())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Graphiques d'Autocorrélation et d'Autocorrélation Partielle\n",
"\n",
"Un tracé d'autocorrélation (aussi connu sous le nom de [Corrélogramme](https://en.wikipedia.org/wiki/Correlogram) ) montre la corrélation de la série avec elle-même, décalée de x unités de temps. L'axe des y est donc la corrélation et l'axe des x est le nombre d'unités de temps de retard.\n",
"\n",
"Imaginez donc de prendre votre série temporelle de longueur T, de la copier, et d'effacer la première observation de la copie #1 et la dernière observation de la copie #2. Vous avez maintenant deux séries de longueur T-1 pour lesquelles vous calculez un coefficient de corrélation. C'est la valeur de l'axe vertical à x=1 dans vos tracés. Il représente la corrélation de la série décalée d'une unité de temps. Vous continuez et faites cela pour tous les décalages possibles x et cela définit le tracé.\n",
"\n",
"Vous exécuterez ces tracés sur vos données différentielles/stationnaires. Il y a beaucoup d'informations intéressantes pour identifier et interpréter ACF (Auto-Correlation Function) et PACF (Partial Auto-Correlation Function) [ici](http://people.duke.edu/~rnau/arimrule.htm) and [ici](https://people.duke.edu/~rnau/411arim3.htm).\n",
"\n",
"### Interprétation de l'autocorrélation\n",
"\n",
"L'interprétation réelle et son rapport avec les modèles ARIMA peuvent devenir un peu compliqués, mais il existe quelques méthodes de base communes que nous pouvons utiliser pour le modèle ARIMA. Notre principale priorité ici est d'essayer de déterminer si nous utiliserons les composantes AR ou MA pour le modèle ARIMA (ou les deux !) ainsi que le nombre de décalages que nous devrions utiliser. En général, vous utiliserez soit AR (Auto-Regressive) soit MA (Moving average), l'utilisation des deux est moins courante.\n",
"\n",
"* Si le graphique d'autocorrélation montre une autocorrélation positive au premier retard (retard-1), alors il suggère d'utiliser les termes AR en relation avec le retard\n",
"\n",
"* Si le graphique d'autocorrélation montre une autocorrélation négative au premier retard, il suggère alors d'utiliser les termes MA."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"_____\n",
"### <font color='red'> Remarque Importante! </font> \n",
"\n",
"Ici, nous montrerons le fonctionnement de l'ACF et du PACF sur de multiples ensembles de données différentielles qui ont été rendus stationnaires de différentes façons. En général, il suffit de choisir un seul ensemble de données stationnaires et de continuer jusqu'au bout.\n",
"\n",
"La raison pour laquelle nous en utilisons deux ici est de vous montrer les deux types de comportement typiques que vous observeriez en utilisant l'ACF.\n",
"_____"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"from statsmodels.graphics.tsaplots import plot_acf,plot_pacf"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Dupliquer les graphiques\n",
"# Regarde: https://stackoverflow.com/questions/21788593/statsmodels-duplicate-charts\n",
"# https://github.com/statsmodels/statsmodels/issues/1265\n",
"fig_first = plot_acf(df[\"Milk First Difference\"].dropna())"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEICAYAAABcVE8dAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAc7UlEQVR4nO3de5QcZ33m8e8zLY0sWRayrYstWReDhSLBhrEzx8JLICLGic2CzXIIayWAyTEIFkzChk0wlzWsEwjJHhYOi8OiYMfGgC9JCChEWQMCActircdGXCStsOLI1iBZMzaWJaHLaLp/+0dXSz2tnlt3Td/q+ZyjM11vVfX7dk3rqbfeentaEYGZmXW+rmY3wMzMGsOBb2aWEQ58M7OMcOCbmWWEA9/MLCMc+GZmGeHAN2sQSXskvaLGfV8qaVfabbJsceBby5C0RdIzkmZMYp+QdMlUtqsZKl9XRHwvIlY2s03W/hz41hIkLQdeCgRwbVMbMw5J0yZSZtZqHPjWKt4EPAjcCdxQKkx6/W8pW36zpP+dPP5uUvwjSUck/Yek/K2Sdkv6haSNkhaV7f8CSd9I1h2Q9P6kfIakT0ral/z7ZOlKQ9JaSf2S3ivpSeBvqpUl275K0jZJByX9H0m/Wu3FSrpc0g+S7fZL+rSk7tFeV6m+sv1XJcfmoKTtkq4tW3enpNsk/ZOkw5K2Snpebb8W6yQOfGsVbwK+mPz7bUkLx9shIl6WPHxRRMyOiPsk/Sbw58DrgQuBx4F7ASSdA3wT+F/AIuASYHPyHB8AXgz0AC8CLgc+WFbdBcB5wDJgfbUySZcBdwBvA84HPgtsHGWIKg/8J2AecAVwJfCO0V5X+Y6SpgP/CHwdWAC8C/iipPIhn3XAfwXOBXYDH6l6EC1THPjWdJJ+nWJo3h8RDwP/AvxujU/3e8AdEfFIRJwA3gdckQwZvQp4MiI+HhHHI+JwRGwt2+/WiBiIiEGKYfnGsuctAB+KiBMRcWyUsrcCn42IrRGRj4i7gBMUTyQjRMTDEfFgRAxHxB6KJ4ffmOBrfDEwG/hYRAxFxLeAr1EM+ZIvR8T/jYhhiifRngk+t3UwB761ghuAr0fEU8nylygb1pmkRRR79QBExBHgaWAxsITiyWTc/ZLHi8qWByPieMU+lWXLgPckwywHJR1M6lxUsR+Sni/pa5KelHQI+CjF3v5ELAL2RkShor2Ly5afLHt8lOIJwjLON5qsqSTNpDj8kkvGwgFmAHMlvQj4JTCrbJcLxnnKfRSDt/T8Z1McXvk5sJeRveBq+21PlpcmZSXV/qxsZdle4CMRMZHhk88APwTWRcRhSe8GXjeB/UptXSKpqyz0lwI/m+D+llHu4VuzvYbiePZqisMOPcAq4HsUx/W3Aa+VNCuZpnhjxf4HgOeWLX8J+H1JPcnY+UeBrcmwydeACyS9O7lJe46kNcl+9wAflDRf0jzgFuALk3wtfw28XdIaFZ0t6d8l9w4qnQMcAo5I+hXgP47zusptpXgi/BNJ0yWtBV5Ncq/CbDQOfGu2G4C/iYgnIuLJ0j/g0xTH1T8BDFEMwLsojkeX+zBwVzKE8vqI2Az8F+Dvgf3A84DrASLiMHAVxXB8EngUeHnyPH8G9AE/Bn4CPJKUTVhE9FEcx/808AzFm6VvHmXz/0zxPsVhiieK+yrWj3hdFfUMUZy6eg3wFPBXwJsi4v9Npr2WPfIXoJiZZYN7+GZmGeHANzPLCAe+mVlGOPDNzDKiZefhz5s3L5YvX97sZpiZtZWHH374qYiYX21dywb+8uXL6evra3YzzMzaiqTHR1vnIR0zs4xw4JuZZYQD38wsIxz4ZmYZ4cA3M8uIVAJf0h2SBiT9dJT1kvSp5Gvnfpx8M9CUyBeCzTsP8KnNj7J55wHyBf+tIDMzSG9a5p0U/0Lg50dZfw2wIvm3huLfAl8zyrY1yxeCN96+lW17D3JsKM/M7hw9S+Zy941ryHUp7erMzNpKKj38iPgu8IsxNrkO+HwUPUjxyy0uTKPuclt2DbBt70GODuUJ4OhQnm17D7Jl10DaVZmZtZ1GjeEvpvhtQCX9jPw6NgAkrZfUJ6lvcHBw0pVs33eIY0P5EWXHhvLs2Hdo0s9lZtZpGhX41cZTzhhcj4gNEdEbEb3z51f9ZPCYXrBoDjO7cyPKZnbnWL1ozqSfy8ys0zQq8PspfplzyUWM/L7QVKxduYCeJXNRfgiiwKxkDH/tygVpV2Vm1nYaFfgbgTcls3VeDDwbEfvTriTXJe6+cQ3zH/1H5vZ/n/+x7lLfsDUzS6QyS0fSPcBaYJ6kfuBDwHSAiPifwCbglRS/4/Mo8Ptp1FtNrkvMOvgYsw4+xpWrFk5VNWZmbSeVwI+IdeOsD+CdadRlZma18SdtzcwywoFvZpYRDnwzs4xw4JuZZYQD38wsIxz4ZmYZ4cA3M8sIB76ZWUY48M3MMsKBb2aWEQ58M7OMcOCbmWWEA9/MLCMc+GZmGeHANzPLCAe+mVlGOPDNzDLCgW9mlhEOfDOzjEgl8CVdLWmXpN2Sbq6yfqmkb0v6oaQfS3plGvWamdnE1R34knLAbcA1wGpgnaTVFZt9ELg/Ii4Frgf+qt56zcxsctLo4V8O7I6IxyJiCLgXuK5imwDmJI+fA+xLoV4zM5uENAJ/MbC3bLk/KSv3YeANkvqBTcC7qj2RpPWS+iT1DQ4OptA0MzMrSSPwVaUsKpbXAXdGxEXAK4G7JZ1Rd0RsiIjeiOidP39+Ck0zM7OSNAK/H1hStnwRZw7Z3AjcDxARPwDOAualULeZmU1QGoH/ELBC0sWSuinelN1Ysc0TwJUAklZRDHyP2ZiZNVDdgR8Rw8BNwAPAToqzcbZLulXStclm7wHeKulHwD3AmyOictjHzMym0LQ0niQiNlG8GVtedkvZ4x3AS9Koy8zMauNP2pqZZYQD38wsIxz4ZmYZ4cA3M8sIB76ZWUY48M3MMsKBb2aWEQ58M7OMcOCbmWWEA9/MLCMc+GZmGeHANzPLCAe+mVlGOPDNzDLCgW9mlhEOfDOzjHDgm5llhAPfzCwjUgl8SVdL2iVpt6SbR9nm9ZJ2SNou6Utp1GtmZhNX93faSsoBtwFXAf3AQ5I2Jt9jW9pmBfA+4CUR8YykBfXWa2Zmk5NGD/9yYHdEPBYRQ8C9wHUV27wVuC0ingGIiIEU6jUzs0lII/AXA3vLlvuTsnLPB54v6fuSHpR0dbUnkrReUp+kvsHBwRSaZmZmJWkEvqqURcXyNGAFsBZYB3xO0twzdorYEBG9EdE7f/78FJpmZmYlaQR+P7CkbPkiYF+Vbb4aEScj4l+BXRRPAGZm1iBpBP5DwApJF0vqBq4HNlZs8xXg5QCS5lEc4nkshbrNzGyC6g78iBgGbgIeAHYC90fEdkm3Sro22ewB4GlJO4BvA38cEU/XW7eZmU1c3dMyASJiE7CpouyWsscB/FHyz8zMmsCftDUzywgHvplZRjjwzcwywoFvZpYRDnwzs4xw4JuZZYQD38wsIxz4ZmYZ4cA3M8sIB76ZWUY48M3MMsKBb2aWEQ58M7OMcOCbmWWEA9/MLCMc+GZmGeHANzPLCAe+mVlGOPDNzDIilcCXdLWkXZJ2S7p5jO1eJykk9aZRr5mZTVzdgS8pB9wGXAOsBtZJWl1lu3OAPwC21lunmZlNXho9/MuB3RHxWEQMAfcC11XZ7k+BvwSOp1CnmZlNUhqBvxjYW7bcn5SdIulSYElEfG2sJ5K0XlKfpL7BwcEUmmZmZiVpBL6qlMWplVIX8AngPeM9UURsiIjeiOidP39+Ck0zM7OSNAK/H1hStnwRsK9s+RzghcAWSXuAFwMbfePWzKyx0gj8h4AVki6W1A1cD2wsrYyIZyNiXkQsj4jlwIPAtRHRl0LdZmY2QXUHfkQMAzcBDwA7gfsjYrukWyVdW+/zm5lZOqal8SQRsQnYVFF2yyjbrk2jTjMzmxx/0tbMLCMc+GZmGeHANzPLCAe+mVlGOPDNzDLCgW9mlhEOfDOzjHDgm5llhAPfzCwjHPhmZhnhwDc
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig_seasonal_first = plot_acf(df[\"Seasonal First Difference\"].dropna())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pandas a également intégré cette fonctionnalité, mais uniquement pour l'ACF, et non pour le PACF. Je recommande donc l'utilisation de statsmodels, car ACF et PACF sont plus au cœur de sa fonctionnalité que de celle de pandas."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1c21a0b850>"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"from pandas.plotting import autocorrelation_plot\n",
"autocorrelation_plot(df['Seasonal First Difference'].dropna())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Autocorrelation Partielle\n",
"\n",
"En général, une corrélation partielle est une corrélation conditionnelle.\n",
"\n",
"C'est la corrélation entre deux variables sous l'hypothèse que nous connaissons et prenons en compte les valeurs d'un autre ensemble de variables.\n",
"\n",
"Par exemple, considérons un contexte de régression dans lequel y = une variable réponse et x1, x2 et x3 sont des variables prédicteurs. La corrélation partielle entre y et x3 est la corrélation entre les variables déterminées en tenant compte de la façon dont y et x3 sont liés à x1 et x2.\n",
"\n",
"Formellement, cette relation est définie comme suit\n",
"\n",
"## $\\frac{\\text{Covariance}(y, x_3|x_1, x_2)}{\\sqrt{\\text{Variance}(y|x_1, x_2)\\text{Variance}(x_3| x_1, x_2)}}$\n",
"\n",
"Regarde ce [lien](http://www.itl.nist.gov/div898/handbook/pmc/section4/pmc4463.htm) pour avoir tous les détails."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Nous pouvons alors tracer cette relation:"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"result = plot_pacf(df[\"Seasonal First Difference\"].dropna())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Interprétation\n",
"\n",
"En général, une chute ou baisse brutale après le décalage \"k\" suggère d'utiliser un modèle AR-k (Auto-regressive). S'il y a une baisse graduelle, cela suggère un modèle MA (Moving Average)."
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"### Réflexions finales sur l'Autocorrélation et l'Autocorrélation Partielle\n",
"\n",
"* L'identification d'un modèle AR est souvent mieux faite avec le PACF.\n",
" * Pour un modèle de AR, le PACF théorique \"s'arrête\" au-delà de l'ordre du modèle. L'expression \"s'arrête\" signifie qu'en théorie, les autocorrélations partielles sont égales à 0 au-delà de ce point. Autrement dit, le nombre d'autocorrélations partielles non nulles donne l'ordre du modèle AR. Par \"ordre du modèle\", nous entendons le retard le plus extrême de x qui est utilisé comme prédicteur.\n",
" \n",
" \n",
"* L'identification d'un modèle MA est souvent mieux faite avec l'ACF plutôt qu'avec le PACF.\n",
" * Pour un modèle MA, le PACF théorique ne s'arrête pas, mais se rétrécit plutôt vers 0 d'une manière ou d'une autre. Un modèle plus clair pour un modèle MA se trouve dans le PACF. L'ACF aura des autocorrélations non nulles seulement aux retards impliqués dans le modèle."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"_____\n",
"### Graphiques définitifs de ACF et PACF\n",
"\n",
"Nous avons exploité un certain nombre de graphiques, alors obtenons rapidement nos graphiques \"finaux\" de l'ACF et du PACF. Ce sont ceux que nous allons référencer dans le reste du notebook ci-dessous.\n",
"_____"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 864x576 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize=(12,8))\n",
"ax1 = fig.add_subplot(211)\n",
"fig = sm.graphics.tsa.plot_acf(df['Seasonal First Difference'].iloc[13:], lags=40, ax=ax1)\n",
"ax2 = fig.add_subplot(212)\n",
"fig = sm.graphics.tsa.plot_pacf(df['Seasonal First Difference'].iloc[13:], lags=40, ax=ax2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## En utilisant le modèle ARIMA Saisonnier\n",
"\n",
"Enfin, nous pouvons utiliser notre modèle ARIMA maintenant que nous avons une bonne compréhension de nos données !"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"# Pour des données non sasonnières\n",
"from statsmodels.tsa.arima_model import ARIMA"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Help on class ARIMA in module statsmodels.tsa.arima_model:\n",
"\n",
"class ARIMA(ARMA)\n",
" | ARIMA(endog, order, exog=None, dates=None, freq=None, missing='none')\n",
" | \n",
" | Autoregressive Integrated Moving Average ARIMA(p,d,q) Model\n",
" | \n",
" | Parameters\n",
" | ----------\n",
" | endog : array-like\n",
" | The endogenous variable.\n",
" | order : iterable\n",
" | The (p,d,q) order of the model for the number of AR parameters,\n",
" | differences, and MA parameters to use.\n",
" | exog : array-like, optional\n",
" | An optional array of exogenous variables. This should *not* include a\n",
" | constant or trend. You can specify this in the `fit` method.\n",
" | dates : array-like of datetime, optional\n",
" | An array-like object of datetime objects. If a pandas object is given\n",
" | for endog or exog, it is assumed to have a DateIndex.\n",
" | freq : str, optional\n",
" | The frequency of the time-series. A Pandas offset or 'B', 'D', 'W',\n",
" | 'M', 'A', or 'Q'. This is optional if dates are given.\n",
" | \n",
" | \n",
" | Notes\n",
" | -----\n",
" | If exogenous variables are given, then the model that is fit is\n",
" | \n",
" | .. math::\n",
" | \n",
" | \\phi(L)(y_t - X_t\\beta) = \\theta(L)\\epsilon_t\n",
" | \n",
" | where :math:`\\phi` and :math:`\\theta` are polynomials in the lag\n",
" | operator, :math:`L`. This is the regression model with ARMA errors,\n",
" | or ARMAX model. This specification is used, whether or not the model\n",
" | is fit using conditional sum of square or maximum-likelihood, using\n",
" | the `method` argument in\n",
" | :meth:`statsmodels.tsa.arima_model.ARIMA.fit`. Therefore, for\n",
" | now, `css` and `mle` refer to estimation methods only. This may\n",
" | change for the case of the `css` model in future versions.\n",
" | \n",
" | Method resolution order:\n",
" | ARIMA\n",
" | ARMA\n",
" | statsmodels.tsa.base.tsa_model.TimeSeriesModel\n",
" | statsmodels.base.model.LikelihoodModel\n",
" | statsmodels.base.model.Model\n",
" | builtins.object\n",
" | \n",
" | Methods defined here:\n",
" | \n",
" | __getnewargs__(self)\n",
" | \n",
" | __init__(self, endog, order, exog=None, dates=None, freq=None, missing='none')\n",
" | Initialize self. See help(type(self)) for accurate signature.\n",
" | \n",
" | fit(self, start_params=None, trend='c', method='css-mle', transparams=True, solver='lbfgs', maxiter=500, full_output=1, disp=5, callback=None, start_ar_lags=None, **kwargs)\n",
" | Fits ARIMA(p,d,q) model by exact maximum likelihood via Kalman filter.\n",
" | \n",
" | Parameters\n",
" | ----------\n",
" | start_params : array-like, optional\n",
" | Starting parameters for ARMA(p,q). If None, the default is given\n",
" | by ARMA._fit_start_params. See there for more information.\n",
" | transparams : bool, optional\n",
" | Whehter or not to transform the parameters to ensure stationarity.\n",
" | Uses the transformation suggested in Jones (1980). If False,\n",
" | no checking for stationarity or invertibility is done.\n",
" | method : str {'css-mle','mle','css'}\n",
" | This is the loglikelihood to maximize. If \"css-mle\", the\n",
" | conditional sum of squares likelihood is maximized and its values\n",
" | are used as starting values for the computation of the exact\n",
" | likelihood via the Kalman filter. If \"mle\", the exact likelihood\n",
" | is maximized via the Kalman Filter. If \"css\" the conditional sum\n",
" | of squares likelihood is maximized. All three methods use\n",
" | `start_params` as starting parameters. See above for more\n",
" | information.\n",
" | trend : str {'c','nc'}\n",
" | Whether to include a constant or not. 'c' includes constant,\n",
" | 'nc' no constant.\n",
" | solver : str or None, optional\n",
" | Solver to be used. The default is 'lbfgs' (limited memory\n",
" | Broyden-Fletcher-Goldfarb-Shanno). Other choices are 'bfgs',\n",
" | 'newton' (Newton-Raphson), 'nm' (Nelder-Mead), 'cg' -\n",
" | (conjugate gradient), 'ncg' (non-conjugate gradient), and\n",
" | 'powell'. By default, the limited memory BFGS uses m=12 to\n",
" | approximate the Hessian, projected gradient tolerance of 1e-8 and\n",
" | factr = 1e2. You can change these by using kwargs.\n",
" | maxiter : int, optional\n",
" | The maximum number of function evaluations. Default is 500.\n",
" | tol : float\n",
" | The convergence tolerance. Default is 1e-08.\n",
" | full_output : bool, optional\n",
" | If True, all output from solver will be available in\n",
" | the Results object's mle_retvals attribute. Output is dependent\n",
" | on the solver. See Notes for more information.\n",
" | disp : int, optional\n",
" | If True, convergence information is printed. For the default\n",
" | l_bfgs_b solver, disp controls the frequency of the output during\n",
" | the iterations. disp < 0 means no output in this case.\n",
" | callback : function, optional\n",
" | Called after each iteration as callback(xk) where xk is the current\n",
" | parameter vector.\n",
" | start_ar_lags : int, optional\n",
" | Parameter for fitting start_params. When fitting start_params,\n",
" | residuals are obtained from an AR fit, then an ARMA(p,q) model is\n",
" | fit via OLS using these residuals. If start_ar_lags is None, fit\n",
" | an AR process according to best BIC. If start_ar_lags is not None,\n",
" | fits an AR process with a lag length equal to start_ar_lags.\n",
" | See ARMA._fit_start_params_hr for more information.\n",
" | kwargs\n",
" | See Notes for keyword arguments that can be passed to fit.\n",
" | \n",
" | Returns\n",
" | -------\n",
" | `statsmodels.tsa.arima.ARIMAResults` class\n",
" | \n",
" | See Also\n",
" | --------\n",
" | statsmodels.base.model.LikelihoodModel.fit : for more information\n",
" | on using the solvers.\n",
" | ARIMAResults : results class returned by fit\n",
" | \n",
" | Notes\n",
" | -----\n",
" | If fit by 'mle', it is assumed for the Kalman Filter that the initial\n",
" | unknown state is zero, and that the initial variance is\n",
" | P = dot(inv(identity(m**2)-kron(T,T)),dot(R,R.T).ravel('F')).reshape(r,\n",
" | r, order = 'F')\n",
" | \n",
" | predict(self, params, start=None, end=None, exog=None, typ='linear', dynamic=False)\n",
" | ARIMA model in-sample and out-of-sample prediction\n",
" | \n",
" | Parameters\n",
" | ----------\n",
" | params : array-like\n",
" | The fitted parameters of the model.\n",
" | start : int, str, or datetime\n",
" | Zero-indexed observation number at which to start forecasting, ie.,\n",
" | the first forecast is start. Can also be a date string to\n",
" | parse or a datetime type.\n",
" | end : int, str, or datetime\n",
" | Zero-indexed observation number at which to end forecasting, ie.,\n",
" | the first forecast is start. Can also be a date string to\n",
" | parse or a datetime type. However, if the dates index does not\n",
" | have a fixed frequency, end must be an integer index if you\n",
" | want out of sample prediction.\n",
" | exog : array-like, optional\n",
" | If the model is an ARMAX and out-of-sample forecasting is\n",
" | requested, exog must be given. Note that you'll need to pass\n",
" | `k_ar` additional lags for any exogenous variables. E.g., if you\n",
" | fit an ARMAX(2, q) model and want to predict 5 steps, you need 7\n",
" | observations to do this.\n",
" | dynamic : bool, optional\n",
" | The `dynamic` keyword affects in-sample prediction. If dynamic\n",
" | is False, then the in-sample lagged values are used for\n",
" | prediction. If `dynamic` is True, then in-sample forecasts are\n",
" | used in place of lagged dependent variables. The first forecasted\n",
" | value is `start`.\n",
" | typ : str {'linear', 'levels'}\n",
" | \n",
" | - 'linear' : Linear prediction in terms of the differenced\n",
" | endogenous variables.\n",
" | - 'levels' : Predict the levels of the original endogenous\n",
" | variables.\n",
" | \n",
" | \n",
" | Returns\n",
" | -------\n",
" | predict : array\n",
" | The predicted values.\n",
" | \n",
" | \n",
" | \n",
" | Notes\n",
" | -----\n",
" | Use the results predict method instead.\n",
" | \n",
" | ----------------------------------------------------------------------\n",
" | Static methods defined here:\n",
" | \n",
" | __new__(cls, endog, order, exog=None, dates=None, freq=None, missing='none')\n",
" | Create and return a new object. See help(type) for accurate signature.\n",
" | \n",
" | ----------------------------------------------------------------------\n",
" | Methods inherited from ARMA:\n",
" | \n",
" | geterrors(self, params)\n",
" | Get the errors of the ARMA process.\n",
" | \n",
" | Parameters\n",
" | ----------\n",
" | params : array-like\n",
" | The fitted ARMA parameters\n",
" | order : array-like\n",
" | 3 item iterable, with the number of AR, MA, and exogenous\n",
" | parameters, including the trend\n",
" | \n",
" | hessian(self, params)\n",
" | Compute the Hessian at params,\n",
" | \n",
" | Notes\n",
" | -----\n",
" | This is a numerical approximation.\n",
" | \n",
" | loglike(self, params, set_sigma2=True)\n",
" | Compute the log-likelihood for ARMA(p,q) model\n",
" | \n",
" | Notes\n",
" | -----\n",
" | Likelihood used depends on the method set in fit\n",
" | \n",
" | loglike_css(self, params, set_sigma2=True)\n",
" | Conditional Sum of Squares likelihood function.\n",
" | \n",
" | loglike_kalman(self, params, set_sigma2=True)\n",
" | Compute exact loglikelihood for ARMA(p,q) model by the Kalman Filter.\n",
" | \n",
" | score(self, params)\n",
" | Compute the score function at params.\n",
" | \n",
" | Notes\n",
" | -----\n",
" | This is a numerical approximation.\n",
" | \n",
" | ----------------------------------------------------------------------\n",
" | Class methods inherited from ARMA:\n",
" | \n",
" | from_formula(formula, data, subset=None, drop_cols=None, *args, **kwargs) from builtins.type\n",
" | Create a Model from a formula and dataframe.\n",
" | \n",
" | Parameters\n",
" | ----------\n",
" | formula : str or generic Formula object\n",
" | The formula specifying the model\n",
" | data : array-like\n",
" | The data for the model. See Notes.\n",
" | subset : array-like\n",
" | An array-like object of booleans, integers, or index values that\n",
" | indicate the subset of df to use in the model. Assumes df is a\n",
" | `pandas.DataFrame`\n",
" | drop_cols : array-like\n",
" | Columns to drop from the design matrix. Cannot be used to\n",
" | drop terms involving categoricals.\n",
" | args : extra arguments\n",
" | These are passed to the model\n",
" | kwargs : extra keyword arguments\n",
" | These are passed to the model with one exception. The\n",
" | ``eval_env`` keyword is passed to patsy. It can be either a\n",
" | :class:`patsy:patsy.EvalEnvironment` object or an integer\n",
" | indicating the depth of the namespace to use. For example, the\n",
" | default ``eval_env=0`` uses the calling namespace. If you wish\n",
" | to use a \"clean\" environment set ``eval_env=-1``.\n",
" | \n",
" | Returns\n",
" | -------\n",
" | model : Model instance\n",
" | \n",
" | Notes\n",
" | -----\n",
" | data must define __getitem__ with the keys in the formula terms\n",
" | args and kwargs are passed on to the model instantiation. E.g.,\n",
" | a numpy structured or rec array, a dictionary, or a pandas DataFrame.\n",
" | \n",
" | ----------------------------------------------------------------------\n",
" | Data descriptors inherited from statsmodels.tsa.base.tsa_model.TimeSeriesModel:\n",
" | \n",
" | exog_names\n",
" | \n",
" | ----------------------------------------------------------------------\n",
" | Methods inherited from statsmodels.base.model.LikelihoodModel:\n",
" | \n",
" | information(self, params)\n",
" | Fisher information matrix of model\n",
" | \n",
" | Returns -Hessian of loglike evaluated at params.\n",
" | \n",
" | initialize(self)\n",
" | Initialize (possibly re-initialize) a Model instance. For\n",
" | instance, the design matrix of a linear model may change\n",
" | and some things must be recomputed.\n",
" | \n",
" | ----------------------------------------------------------------------\n",
" | Data descriptors inherited from statsmodels.base.model.Model:\n",
" | \n",
" | __dict__\n",
" | dictionary for instance variables (if defined)\n",
" | \n",
" | __weakref__\n",
" | list of weak references to the object (if defined)\n",
" | \n",
" | endog_names\n",
" | Names of endogenous variables\n",
"\n"
]
}
],
"source": [
"# Je vous recommande d'y jeter un coup d'oeil !\n",
"\n",
"# \n",
"help(ARIMA)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Paramètres p, d, q\n",
"\n",
"* p: Le nombre d'observations de retard incluses dans le modèle.\n",
"* d: Le nombre de fois que les observations brutes sont différentes, aussi appelé le degré de différence.\n",
"* q: La taille de la fenêtre de la moyenne mobile, aussi appelée l'ordre de la moyenne mobile."
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Statespace Model Results \n",
"==========================================================================================\n",
"Dep. Variable: Milk in pounds per cow No. Observations: 168\n",
"Model: SARIMAX(0, 1, 0)x(1, 1, 1, 12) Log Likelihood -534.065\n",
"Date: Fri, 27 Dec 2019 AIC 1074.131\n",
"Time: 13:58:54 BIC 1083.261\n",
"Sample: 01-01-1962 HQIC 1077.839\n",
" - 12-01-1975 \n",
"Covariance Type: opg \n",
"==============================================================================\n",
" coef std err z P>|z| [0.025 0.975]\n",
"------------------------------------------------------------------------------\n",
"ar.S.L12 -0.0449 0.106 -0.422 0.673 -0.253 0.163\n",
"ma.S.L12 -0.5860 0.102 -5.762 0.000 -0.785 -0.387\n",
"sigma2 55.5118 5.356 10.365 0.000 45.015 66.009\n",
"===================================================================================\n",
"Ljung-Box (Q): 33.48 Jarque-Bera (JB): 32.04\n",
"Prob(Q): 0.76 Prob(JB): 0.00\n",
"Heteroskedasticity (H): 0.69 Skew: 0.77\n",
"Prob(H) (two-sided): 0.18 Kurtosis: 4.60\n",
"===================================================================================\n",
"\n",
"Warnings:\n",
"[1] Covariance matrix calculated using the outer product of gradients (complex-step).\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/rod/opt/anaconda3/envs/pyfinance/lib/python3.7/site-packages/statsmodels/tsa/base/tsa_model.py:165: ValueWarning: No frequency information was provided, so inferred frequency MS will be used.\n",
" % freq, ValueWarning)\n"
]
}
],
"source": [
"# Nou avons des données saisonnières!\n",
"model = sm.tsa.statespace.SARIMAX(df['Milk in pounds per cow'],order=(0,1,0), seasonal_order=(1,1,1,12))\n",
"results = model.fit()\n",
"print(results.summary())\n",
"# avertissement obtenu en passant dans la fonction statemodels un dataframe dont l'index est un objet datetime pandas"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1c23bd5810>"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"results.resid.plot()"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1c23bcab10>"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"results.resid.plot(kind='kde')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Prédiction des Valeurs Futures\n",
"\n",
"Nous pouvons avoir une idée de la performance de notre modèle en prédisant simplement pour des valeurs que nous connaissons déjà:"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1c23d80c90>"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAswAAAHgCAYAAACxVzvKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdeZxkdX3/+9epfa/qtbp7elYYFmFmGASGoCyCgQiIxsTEDVA0mntjEh+JRL0qIl5z+al5/O5Pc91Qgt4Q1NwkaERRXHAYBWQRkHWG2Xtmeu+q7q71VNW5f5xzqqv36u5zqk4Nn+fj4aOZmqqa0zNt97s+9fl+PoqmaQghhBBCCCEW5mr2BQghhBBCCOFkEpiFEEIIIYRYggRmIYQQQgghliCBWQghhBBCiCVIYBZCCCGEEGIJEpiFEEIIIYRYgqfZF7CUzs5ObdOmTc2+DCGEEEIIcZJ74oknRjVN61ro9xwdmDdt2sTjjz/e7MsQQgghhBAnOUVRDi/2e9KSIYQQQgghxBIkMAshhBBCCLEECcxCCCGEEEIswdE9zAtRVZWBgQHy+XyzL0WcRAKBAP39/Xi93mZfihBCCCEcpuUC88DAANFolE2bNqEoSrMvR5wENE1jbGyMgYEBNm/e3OzLEUIIIYTDLNuSoSjKnYqiDCuK8mzNbe2KojygKMo+42ObcbuiKMoXFUV5WVGUZxRFObfmMTca99+nKMqNq73gfD5PR0eHhGVhGUVR6OjokHcthBBCCLGgenqY7wL+aM5tHwV+rmnaVuDnxq8B3gBsNf73fuAroAds4FPALuAC4FNmyF4NCcvCavI1JYQQQojFLBuYNU3bDYzPuflNwLeM//4W8Oaa27+t6R4BEoqi9AJXAQ9omjauadoE8ADzQ3jLUBSF66+/vvrrUqlEV1cX1157LQA/+MEPuP322wG49dZb+cIXvgDAZZddtuxc6fe97308//zzNl25NTZt2sTo6GizL0MIIYQQoiFW28Oc1DTtBICmaScURek2bl8HHK2534Bx22K3z6MoyvvRq9Ns2LBhlZdnr3A4zLPPPksulyMYDPLAAw+wbt3Mp3Pddddx3XXXreq5v/GNb1h1mS2vVCrh8bRcm70QQgghTjJWj5Vb6H1tbYnb59+oaV/XNO08TdPO6+pacDuhI7zhDW/gvvvuA+Cee+7h7W9/e/X37rrrLj74wQ8u+thKpcKNN97IJz7xiXm/V1uFjkQifPzjH2fHjh1ceOGFDA0Nzbv/rbfeyvXXX8/ll1/O1q1bueOOOwD9INvNN9/M2WefzbZt2/jud78LwIMPPlithAN88IMf5K677gL0yvGnPvUpzj33XLZt28aLL74IwNjYGFdeeSU7d+7kAx/4AJqm/9NlMhmuueYaduzYwdlnn139M+Z+Ph/60Ie46KKLOPvss/ntb39bfexNN93E+eefz86dO/n+979f/bt761vfyhvf+EauvPLKec/37W9/m+3bt7Njx45qlf/w4cNcccUVbN++nSuuuIIjR45QLpfZsmULmqaRSqVwuVzs3r0bgIsvvpiXX3550X8fIYQQQohaqy3fDSmK0mtUl3uBYeP2AWB9zf36gePG7ZfNuf3BVf7ZVZ/+7+d4/vjkWp9mllf1xfjUG89a9n5ve9vbuO2227j22mt55plnuOmmm3jooYeWfVypVOKd73wnZ599Nh//+MeXvG8mk+HCCy/ks5/9LP/wD//AHXfcsWDIfuaZZ3jkkUfIZDLs3LmTa665hocffpinnnqKp59+mtHRUc4//3wuueSSZa+vs7OTJ598ki9/+ct84Qtf4Bvf+Aaf/vSnee1rX8stt9zCfffdx9e//nUA7r//fvr6+qovHNLp9KKfx29+8xt2797NTTfdxLPPPstnP/tZLr/8cu68805SqRQXXHABr3/96wF4+OGHeeaZZ2hvb5/1PM899xyf/exn+fWvf01nZyfj43qn0Ac/+EFuuOEGbrzxRu68807+5m/+hnvvvZfTTjuN559/noMHD/LqV7+ahx56iF27djEwMMCpp5667N+FEEIIIQSsvsL8A8CcdHEj8P2a228wpmVcCKSN1o2fAFcqitJmHPa70ritZW3fvp1Dhw5xzz33cPXVV9f9uA984AN1hWUAn89XrQa/+tWv5tChQwve701vehPBYJDOzk5e97rX8dvf/pY9e/bw9re/HbfbTTKZ5NJLL+Wxxx5b9s98y1veMu/P2717N+9617sAuOaaa2hr089rbtu2jZ/97Gd85CMf4aGHHiIejy/4nGb1/ZJLLmFycpJUKsVPf/pTbr/9ds455xwuu+wy8vk8R44cAeAP//AP54VlgF/84hf86Z/+KZ2dnQDV+zz88MO84x3vAOD6669nz549gF5J3r17N7t37+ZjH/sYe/bs4bHHHuP8889f9u9BCCGEEMK0bIVZUZR70KvDnYqiDKBPu7gd+J6iKO8FjgBvNe7+I+Bq4GUgC7wHQNO0cUVRPgOYie02TdPmHiRcsXoqwXa67rrr+PCHP8yDDz7I2NhYXY+56KKL+OUvf8nf//3fEwgElryv1+utTm9wu92USqUF7zd3woOiKNW2ibk8Hg+VSqX667mj1Px+/4J/3kJTJE477TSeeOIJfvSjH/Gxj32MK6+8kltuuaXu6/uP//gPTj/99Fm/9+ijjxIOhxe8dk3T6ppmYd7n4osv5qtf/SrHjx/ntttu4/Of/zwPPvhgXZV2IYQQQghTPVMy3q5pWq+maV5N0/o1TfumpmljmqZdoWnaVuPjuHFfTdO0v9I07RRN07ZpmvZ4zfPcqWnaqcb//sXOT6pRbrrpJm655Ra2bdtW92Pe+973cvXVV/PWt7510QC8Ut///vfJ5/OMjY3x4IMPVtsvvvvd71IulxkZGWH37t1ccMEFbNy4keeff55CoUA6nebnP//5ss9/ySWXcPfddwPw4x//mImJCQCOHz9OKBTiXe96Fx/+8Id58sknF3y82du8Z88e4vE48Xicq666ii996UvVYP+73/1u2eu44oor+N73vld9cWK2ZFx00UV85zvfAeDuu+/mta99LQC7du3iN7/5DS6Xi0AgwDnnnMPXvvY1Lr744mX/LCGEEEIIk4wgWIP+/n7+9m//dsWP+7u/+zvS6TTXX389d999Ny7X2s5eXnDBBVxzzTUcOXKET37yk/T19fHHf/zHPPzww+zYsQNFUfjc5z5HT08PAH/2Z3/G9u3b2bp1Kzt37lz2+T/1qU/x9re/nXPPPZdLL720Or3k97//PTfffDMulwuv18tXvvKVBR/f1tbGRRddxOTkJHfeeScAn/zkJ/nQhz7E9u3b0TSNTZs28cMf/nDJ6zjrrLP4+Mc/zqWXXorb7Wbnzp3cddddfPGLX+Smm27i85//PF1dXfzLv+ivx/x+P+vXr+fCCy8E9IrzPffcs6IXOEIIIYQQymJv3TvBeeedp82dW/zCCy9w5plnNumKnOfWW28lEonw4Q9/uNmXsqDLLruML3zhC5x33nnNvpRlydeWEEII8cqlKMoTmqYtGFisHisnhBBCCCHESUVaMlrcrbfe2uxLWNKDDz7Y7EsQQgghRKu58w2w5TK47CPNvhJAKsxCCCGEEMJpTjwNB3/V7KuoksAshBBCCCGco1QANQMjLzb7SqokMAshhBBCCOfIpfSP2TGYHmnutRgkMAshhBBCCOfITcz8t0OqzBKYV+mLX/wiZ555Ju985zubfSk89dRT/OhHP2r2ZQghhBBCrJ0DA7NMyVilL3/5y/z4xz9m8+bNy963VCrh8dj3V/3UU0/x+OOPc/XVV9v2ZwghhBBCNIQDA7NUmFfhL//yLzlw4ADXXXcd//RP/8Sb3/xmtm/fzoUXXsgzzzwD6OPe3v/+93PllVdyww03UC6Xufnmmzn//PPZvn07X/va16rP97nPfY5t27axY8cOPvrRjwJwxx13cP7557Njxw7+5E/+hGw2C8C///u/c/bZZ7Njxw4uueQSisUit9xyC9/97nc555xzqmuohRBCCCFakhm
"text/plain": [
"<Figure size 864x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df['forecast'] = results.predict(start = 150, end= 168, dynamic= True) \n",
"df[['Milk in pounds per cow','forecast']].plot(figsize=(12,8))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Prévision\n",
"Cela demande plus de temps, alors créons-les avec pandas sur notre dataframe original !"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"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>Milk in pounds per cow</th>\n",
" <th>Milk First Difference</th>\n",
" <th>Milk Second Difference</th>\n",
" <th>Seasonal Difference</th>\n",
" <th>Seasonal First Difference</th>\n",
" <th>forecast</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Month</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1975-08-01</th>\n",
" <td>858.0</td>\n",
" <td>-38.0</td>\n",
" <td>3.0</td>\n",
" <td>-9.0</td>\n",
" <td>3.0</td>\n",
" <td>879.668974</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1975-09-01</th>\n",
" <td>817.0</td>\n",
" <td>-41.0</td>\n",
" <td>-3.0</td>\n",
" <td>2.0</td>\n",
" <td>11.0</td>\n",
" <td>832.328554</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1975-10-01</th>\n",
" <td>827.0</td>\n",
" <td>10.0</td>\n",
" <td>51.0</td>\n",
" <td>15.0</td>\n",
" <td>13.0</td>\n",
" <td>837.722249</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1975-11-01</th>\n",
" <td>797.0</td>\n",
" <td>-30.0</td>\n",
" <td>-40.0</td>\n",
" <td>24.0</td>\n",
" <td>9.0</td>\n",
" <td>802.452736</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1975-12-01</th>\n",
" <td>843.0</td>\n",
" <td>46.0</td>\n",
" <td>76.0</td>\n",
" <td>30.0</td>\n",
" <td>6.0</td>\n",
" <td>842.499870</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Milk in pounds per cow Milk First Difference \\\n",
"Month \n",
"1975-08-01 858.0 -38.0 \n",
"1975-09-01 817.0 -41.0 \n",
"1975-10-01 827.0 10.0 \n",
"1975-11-01 797.0 -30.0 \n",
"1975-12-01 843.0 46.0 \n",
"\n",
" Milk Second Difference Seasonal Difference \\\n",
"Month \n",
"1975-08-01 3.0 -9.0 \n",
"1975-09-01 -3.0 2.0 \n",
"1975-10-01 51.0 15.0 \n",
"1975-11-01 -40.0 24.0 \n",
"1975-12-01 76.0 30.0 \n",
"\n",
" Seasonal First Difference forecast \n",
"Month \n",
"1975-08-01 3.0 879.668974 \n",
"1975-09-01 11.0 832.328554 \n",
"1975-10-01 13.0 837.722249 \n",
"1975-11-01 9.0 802.452736 \n",
"1975-12-01 6.0 842.499870 "
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.tail()"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"# https://pandas.pydata.org/pandas-docs/stable/timeseries.html\n",
"# Alternatives \n",
"# pd.date_range(df.index[-1],periods=12,freq='M')"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
"from pandas.tseries.offsets import DateOffset"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [],
"source": [
"future_dates = [df.index[-1] + DateOffset(months=x) for x in range(0,24) ]"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[Timestamp('1975-12-01 00:00:00'),\n",
" Timestamp('1976-01-01 00:00:00'),\n",
" Timestamp('1976-02-01 00:00:00'),\n",
" Timestamp('1976-03-01 00:00:00'),\n",
" Timestamp('1976-04-01 00:00:00'),\n",
" Timestamp('1976-05-01 00:00:00'),\n",
" Timestamp('1976-06-01 00:00:00'),\n",
" Timestamp('1976-07-01 00:00:00'),\n",
" Timestamp('1976-08-01 00:00:00'),\n",
" Timestamp('1976-09-01 00:00:00'),\n",
" Timestamp('1976-10-01 00:00:00'),\n",
" Timestamp('1976-11-01 00:00:00'),\n",
" Timestamp('1976-12-01 00:00:00'),\n",
" Timestamp('1977-01-01 00:00:00'),\n",
" Timestamp('1977-02-01 00:00:00'),\n",
" Timestamp('1977-03-01 00:00:00'),\n",
" Timestamp('1977-04-01 00:00:00'),\n",
" Timestamp('1977-05-01 00:00:00'),\n",
" Timestamp('1977-06-01 00:00:00'),\n",
" Timestamp('1977-07-01 00:00:00'),\n",
" Timestamp('1977-08-01 00:00:00'),\n",
" Timestamp('1977-09-01 00:00:00'),\n",
" Timestamp('1977-10-01 00:00:00'),\n",
" Timestamp('1977-11-01 00:00:00')]"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"future_dates"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [],
"source": [
"future_dates_df = pd.DataFrame(index=future_dates[1:],columns=df.columns)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [],
"source": [
"future_df = pd.concat([df,future_dates_df])"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"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>Milk in pounds per cow</th>\n",
" <th>Milk First Difference</th>\n",
" <th>Milk Second Difference</th>\n",
" <th>Seasonal Difference</th>\n",
" <th>Seasonal First Difference</th>\n",
" <th>forecast</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1962-01-01</th>\n",
" <td>589.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1962-02-01</th>\n",
" <td>561.0</td>\n",
" <td>-28.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1962-03-01</th>\n",
" <td>640.0</td>\n",
" <td>79.0</td>\n",
" <td>107.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1962-04-01</th>\n",
" <td>656.0</td>\n",
" <td>16.0</td>\n",
" <td>-63.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1962-05-01</th>\n",
" <td>727.0</td>\n",
" <td>71.0</td>\n",
" <td>55.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Milk in pounds per cow Milk First Difference \\\n",
"1962-01-01 589.0 NaN \n",
"1962-02-01 561.0 -28.0 \n",
"1962-03-01 640.0 79.0 \n",
"1962-04-01 656.0 16.0 \n",
"1962-05-01 727.0 71.0 \n",
"\n",
" Milk Second Difference Seasonal Difference \\\n",
"1962-01-01 NaN NaN \n",
"1962-02-01 NaN NaN \n",
"1962-03-01 107.0 NaN \n",
"1962-04-01 -63.0 NaN \n",
"1962-05-01 55.0 NaN \n",
"\n",
" Seasonal First Difference forecast \n",
"1962-01-01 NaN NaN \n",
"1962-02-01 NaN NaN \n",
"1962-03-01 NaN NaN \n",
"1962-04-01 NaN NaN \n",
"1962-05-01 NaN NaN "
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"future_df.head()"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"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>Milk in pounds per cow</th>\n",
" <th>Milk First Difference</th>\n",
" <th>Milk Second Difference</th>\n",
" <th>Seasonal Difference</th>\n",
" <th>Seasonal First Difference</th>\n",
" <th>forecast</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1977-07-01</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1977-08-01</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1977-09-01</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1977-10-01</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1977-11-01</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Milk in pounds per cow Milk First Difference \\\n",
"1977-07-01 NaN NaN \n",
"1977-08-01 NaN NaN \n",
"1977-09-01 NaN NaN \n",
"1977-10-01 NaN NaN \n",
"1977-11-01 NaN NaN \n",
"\n",
" Milk Second Difference Seasonal Difference \\\n",
"1977-07-01 NaN NaN \n",
"1977-08-01 NaN NaN \n",
"1977-09-01 NaN NaN \n",
"1977-10-01 NaN NaN \n",
"1977-11-01 NaN NaN \n",
"\n",
" Seasonal First Difference forecast \n",
"1977-07-01 NaN NaN \n",
"1977-08-01 NaN NaN \n",
"1977-09-01 NaN NaN \n",
"1977-10-01 NaN NaN \n",
"1977-11-01 NaN NaN "
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"future_df.tail()"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1c1f38b9d0>"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAswAAAHSCAYAAAD45Z1sAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOy9eZSkdX32/blr79p6r+7ZYGCGfZgBZBNxQImgorhEfUIUNcRo3hOTeBLJo68bkmMeY8hzzqN51LgQNDHERPMiRoI7GRFElrAMA8LMMMz0zNB7VXXXvtzvH3fd1VXVtXXVvTXz/ZzjqZnqWn5Ut9NXXXV9r6+iqiqCIAiCIAiCIDTHZfcBBEEQBEEQBMHJiGAWBEEQBEEQhDaIYBYEQRAEQRCENohgFgRBEARBEIQ2iGAWBEEQBEEQhDaIYBYEQRAEQRCENnjsPkA7xsbG1K1bt9p9DEEQBEEQBOElziOPPDKnqup4s685WjBv3bqVhx9+2O5jCIIgCIIgCC9xFEV5odXXJJIhCIIgCIIgCG0QwSwIgiAIgiAIbRDBLAiCIAiCIAhtcHSGuRmFQoGpqSmy2azdRxFeQgQCATZv3ozX67X7KIIgCIIgOIx1J5inpqaIRCJs3boVRVHsPo7wEkBVVebn55mamuKUU06x+ziCIAiCIDiMdRfJyGazjI6OilgWDENRFEZHR+VTC0EQBEEQmrLuBDMgYlkwHPmZEgRBEAShFetSMNuNoijccMMN1b8Xi0XGx8d5wxveAMBdd93FZz/7WQBuvvlmbr31VgCuvPLKjr3S73vf+9i3b59JJzeGrVu3Mjc3Z/cxBEEQBEEQLGHdZZidQCgUYu/evWQyGQYGBvjxj3/Mpk2bql+/7rrruO6663p67K997WtGHXPdUywW8XjkR1QQBEEQBHsRh7lHXve61/GDH/wAgDvuuIPrr7+++rXbb7+dD37wgy3vWy6Xec973sPHP/7xVV+rdaHD4TAf+9jH2LVrF5deeinT09Orbn/zzTdzww038OpXv5rTTjuNr371q4A2yHbTTTexY8cOzj33XL797W8DcO+991adcIAPfvCD3H777YDmHH/qU5/iggsu4Nxzz+WZZ54BYH5+nquvvprzzz+fD3zgA6iqCkAqleLaa69l165d7Nixo/ocjf89H/rQh7jsssvYsWMHv/71r6v3vfHGG7nooos4//zz+d73vld97d7+9rfzxje+kauvvnrV433zm99k586d7Nq1q+ryv/DCC1x11VXs3LmTq666isOHD1MqlTj11FNRVZV4PI7L5WLPnj0AvPKVr2T//v0tvz+CIAiCIAi1rGv77tPff4p9x5KGPubZG6N86o3ndLzd7/zO73DLLbfwhje8gSeeeIIbb7yRX/ziFx3vVywWeec738mOHTv42Mc+1va2qVSKSy+9lM985jP8xV/8BV/96lebiuwnnniCX/3qV6RSKc4//3yuvfZaHnjgAR577DEef/xx5ubmuOiii9i9e3fH842NjfHoo4/yxS9+kVtvvZWvfe1rfPrTn+byyy/nk5/8JD/4wQ/4yle+AsA999zDxo0bq28cEolEy/+O+++/nz179nDjjTeyd+9ePvOZz/DqV7+a2267jXg8zsUXX8xv/dZvAfDAAw/wxBNPMDIyUvc4Tz31FJ/5zGf45S9/ydjYGAsLC4Am+t/97nfznve8h9tuu40/+ZM/4c477+T0009n3759PP/887zsZS/jF7/4BZdccglTU1Ns376942shCIIgCIIA4jD3zM6dOzl06BB33HEHr3/967u+3wc+8IGuxDKAz+erusEve9nLOHToUNPbvelNb2JgYICxsTFe9apX8etf/5r77ruP66+/HrfbzcTEBFdccQUPPfRQx+d861vfuur59uzZw7ve9S4Arr32WoaHhwE499xz+clPfsL//J//k1/84hcMDg42fUzdfd+9ezfJZJJ4PM6PfvQjPvvZz3Leeedx5ZVXks1mOXz4MACvec1rVollgJ/97Ge87W1vY2xsDKB6mwceeIDf/d3fBeCGG27gvvvuAzQnec+ePezZs4ePfvSj3HfffTz00ENcdNFFHV8HQRAEQRAEnXXtMHfjBJvJddddx4c//GHuvfde5ufnu7rPZZddxs9//nP+/M//nEAg0Pa2Xq+32t7gdrspFotNb9fY8KAoSjU20YjH46FcLlf/3lil5vf7mz5fsxaJ008/nUceeYS7776bj370o1x99dV88pOf7Pp83/3udznjjDPqvvbggw8SCoWanl1V1a7aLPTbvPKVr+TLX/4yx44d45ZbbuFv/uZvuPfee7ty2gVBEARBEHTEYe6DG2+8kU9+8pOce+65Xd/n93//93n961/P29/+9pYCeK1873vfI5vNMj8/z7333luNX3z729+mVCoxOzvLnj17uPjiizn55JPZt28fuVyORCLBT3/6046Pv3v3br71rW8B8J//+Z8sLi4CcOzYMYLBIO9617v48Ic/zKOPPtr0/nq2+b777mNwcJDBwUGuueYavvCFL1SF/X//9393PMdVV13Fv/7rv1bfnOiRjMsuu4x/+Zd/AeBb3/oWl19+OQCXXHIJ999/Py6Xi0AgwHnnncff//3f88pXvrLjcwmCIAiCIOisa4fZbjZv3syf/umfrvl+f/Znf0YikeCGG27gW9/6Fi5Xf+9bLr74Yq699loOHz7MJz7xCTZu3Mhb3vIWHnjgAXbt2oWiKHzuc59jcnISgHe84x3s3LmT0047jfPPP7/j43/qU5/i+uuv54ILLuCKK67gpJNOAuDJJ5/kpptuwuVy4fV6+dKXvtT0/sPDw1x22WUkk0luu+02AD7xiU/woQ99iJ07d6KqKlu3buU//uM/2p7jnHPO4WMf+xhXXHEFbreb888/n9tvv53Pf/7z3HjjjfzN3/wN4+Pj/MM//AOgueVbtmzh0ksvBTTH+Y477ljTGxxBEARBEASl1Uf3TuDCCy9UG3uLn376ac466yybTuQ8br75ZsLhMB/+8IftPkpTrrzySm699VYuvPBCu4/SEfnZEgRBEIQTF0VRHlFVtalgkUiGIAiCIAiCILRBIhnrnJtvvtnuI7Tl3nvvtfsIgiAIgiC8lPi/l8DFfwAXvc+ypxSHWRAEQRAEQVgfFLIw+wwcus/SpxXBLAiCIAiCIKwPspUlaXPWbuwVwSwIgiAIgiCsD7Jx7XJ+P9TslTAbEcyCIAiCIAjC+iBTEczFDCSPWva0Iph75POf/zxnnXUW73znO+0+Co899hh333233ccQBEEQBEEwF91hBph/zrKnFcHcI1/84he5++67qxvw2mHURr9WiGAWBEEQBOGEIFMjmC3MMYtg7oE//MM/5ODBg1x33XX87d/+LW9+85vZuXMnl156KU888QSg1b29//3v5+qrr+bd7343pVKJm266iYsuuoidO3fy93//99XH+9znPse5557Lrl27+MhHPgLAV7/6VS666CJ27drFb//2b5NOpwH4t3/7N3bs2MGuXbvYvXs3+XyeT37yk3z729/mvPPOq66hFgRBEARBeMmhO8yKW8sxW8T67mH+z4/Ai08a+5iT58LrPtv2Jl/+8pe55557+PnPf86nP/1pzj//fO68805+9rOf8e53v5vHHnsMgEceeYT77ruPgYEBvvKVrzA4OMhDDz1ELpfjFa94BVdffTXPPPMMd955Jw8++CDBYJCFhQUA3vrWt/IHf/AHAHz84x/n61//On/8x3/MLbfcwg9/+EM2bdpEPB7H5/Nxyy238PDDD/N3f/d3xr4WgiAIgiAITkJ3mGNnWxrJWN+C2QHcd999fPe73wXg1a9+NfPz8yQSWuXJddddx8DAAAA/+tGPeOKJJ/jOd74DQCKR4LnnnuMnP/kJv/d7v0cwGARgZGQEgL179/Lxj3+ceDzO8vIy11xzDQCveMUreO9738s73vEO3vrWt1r63yoIgiAIgmAr2QT4whA7Ew4/aNnTrm/B3MEJtgJVVVddpygKAKFQqO52X/jCF6rCV+eee+6
"text/plain": [
"<Figure size 864x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"future_df['forecast'] = results.predict(start = 168, end = 188, dynamic= True) \n",
"future_df[['Milk in pounds per cow', 'forecast']].plot(figsize=(12, 8)) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pas mal ! Plutôt cool en fait ! J'espère que cela vous a aidé à voir le potentiel des modèles ARIMA, malheureusement beaucoup de données financières ne suivront pas ce genre de comportement, en fait il suivra souvent quelque chose indiquant un mouvement brownien, qu'est ce que c'est ? Et bien allez à la prochaine section vidéo et nous allons le découvrir !\n",
"\n",
"# Bon Travail!"
]
}
],
"metadata": {
"anaconda-cloud": {},
"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.7.5"
}
},
"nbformat": 4,
"nbformat_minor": 1
}