Prédictions sur des séries temporelles et autres opérations classiques.
from jyquickhelper import add_notebook_menu
add_notebook_menu()
%matplotlib inline
On récupère le nombre de sessions d'un site web : xavierdupre_sessions.csv.
import pyensae.datasource as ds
ds.download_data('xavierdupre_sessions.csv',
url='https://raw.githubusercontent.com/sdpython/ensae_teaching_cs/master/_doc/notebooks/td2a_ml/')
'xavierdupre_sessions.csv'
import pandas
data = pandas.read_csv("xavierdupre_sessions.csv", sep="\t")
data.set_index("Date", inplace=True)
data.plot(figsize=(12,4))
<matplotlib.axes._subplots.AxesSubplot at 0x2bb8d742128>
data[-365:].plot(figsize=(12,4))
<matplotlib.axes._subplots.AxesSubplot at 0x2bb8dba3208>
from statsmodels.tsa.tsatools import detrend
Avec deux fonctions seasonal_decompose ou fit_seasons
from statsmodels.tsa.seasonal import seasonal_decompose
from seasonal import fit_seasons
On s'inspire de l'exemple : Autoregressive Moving Average (ARMA): Sunspots data.
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
c:\python36_x64\lib\site-packages\statsmodels\compat\pandas.py:56: FutureWarning: The pandas.core.datetools module is deprecated and will be removed in a future version. Please use the pandas.tseries module instead. from pandas.core import datetools
C'est la prédiction la plus simple mais toute performance en deça du chiffre obtenue veut tout simplement dire que le modèle prédictif évalué ne prédit pas mieux que la valeur de la veille.
On note $Z_t = X_t - X_{t-1}$. Estimer un modèle $Z_t = \sum_{i=1}^7 \alpha_i Z_{t-i}$. Garder les quatre derniers mois comme base de test.
Quel est le meilleur modèle ?