#+begin_src python :results output :exports both :session s1 import numpy as np import pandas as pd values = np.array([14.0, 7.6, 11.2, 12.8, 12.5, 9.9, 14.9, 9.4, 16.9, 10.2, 14.9, 18.1, 7.3, 9.8, 10.9,12.2, 9.9, 2.9, 2.8, 15.4, 15.7, 9.7, 13.1, 13.2, 12.3, 11.7, 16.0, 12.4, 17.9, 12.2, 16.2, 18.7, 8.9, 11.9, 12.1, 14.6, 12.1, 4.7, 3.9, 16.9, 16.8, 11.3, 14.4, 15.7, 14.0, 13.6, 18.0, 13.6, 19.9, 13.7, 17.0, 20.5, 9.9, 12.5, 13.2, 16.1, 13.5, 6.3, 6.4, 17.6, 19.1, 12.8, 15.5, 16.3, 15.2, 14.6, 19.1, 14.4, 21.4, 15.1, 19.6, 21.7, 11.3, 15.0, 14.3, 16.8, 14.0, 6.8, 8.2, 19.9, 20.4, 14.6, 16.4, 18.7, 16.8, 15.8, 20.4, 15.8, 22.4, 16.2, 20.3, 23.4, 12.1, 15.5, 15.4, 18.4, 15.7, 10.2, 8.9, 21.0]) print(values.shape) #+end_src #+RESULTS: : (100,) #+begin_src python :results file :session s1 :var matplot_lib_filename=(org-babel-temp-file "figure" ".png") :exports both import matplotlib.pyplot as plt plt.figure(figsize=(10,5)) plt.plot(values) plt.tight_layout() plt.savefig(matplot_lib_filename) matplot_lib_filename #+end_src #+RESULTS: [[file:/tmp/babel-ckBwwa/figureT2xwWJ.png]] Nous allons étudier la saisonnalité des données fournies par le MOOC. L'idée est de décomposer le signal en une tendance(trend), une composante saisonnière et des résidus. #+begin_src python :results output :exports both :session s1 import statsmodels.api as sm # set arbitrary time index to study seasonality time_index = pd.date_range('1/1/2000', periods=len(values), freq='D') series = pd.Series(values, index=time_index) df = pd.DataFrame({'series': series}) print(df.head()) #+end_src #+RESULTS: : series : 2000-01-01 14.0 : 2000-01-02 7.6 : 2000-01-03 11.2 : 2000-01-04 12.8 : 2000-01-05 12.5 #+begin_src python :results file :var matplot_lib_filename=(org-babel-temp-file "figure" ".png") :exports both :session s1 res = sm.tsa.seasonal_decompose(df) resplot = res.plot() plt.tight_layout() resplot.savefig(matplot_lib_filename) matplot_lib_filename #+end_src #+RESULTS: [[file:/tmp/babel-ckBwwa/figure6n6cj7.png]] Apparemment, la tendance comporte elle aussi une saisonnalité, essayons de l'exhiber: #+begin_src python :results file :session s1 :var matplot_lib_filename=(org-babel-temp-file "figure" ".png") :exports both df_trend = pd.DataFrame({'trend': res.trend.dropna()}) res_trend = sm.tsa.seasonal_decompose(df_trend) resplot_trend = res_trend.plot() plt.tight_layout() resplot_trend.savefig(matplot_lib_filename) matplot_lib_filename #+end_src #+RESULTS: [[file:/tmp/babel-ckBwwa/figuresLDoXm.png]] On observe une belle saisonnalité au sein même de la tendance ! Il semblerait qu'il existe une tendance linéaire au sein même de la tendance. Vérifions cela: #+begin_src python :results file :session s1 :var matplot_lib_filename=(org-babel-temp-file "figure" ".png") :exports both df_trend_bis = pd.DataFrame({'trend_bis': res_trend.trend.dropna()}) res_trend_bis = sm.tsa.seasonal_decompose(df_trend_bis) resplot_trend_bis = res_trend_bis.plot() plt.tight_layout() resplot_trend_bis.savefig(matplot_lib_filename) matplot_lib_filename #+end_src #+RESULTS: [[file:/tmp/babel-ckBwwa/figure6dAIC9.png]]