{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Décomposition d'une série temporelle\n", "\n", "Ce notebook présente quelques étapes simples pour une série temporelle. La plupart utilise le module [statsmodels.tsa](https://www.statsmodels.org/stable/tsa.html#module-statsmodels.tsa)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Données\n", "\n", "Les données sont artificielles mais simulent ce que pourraient être le chiffre d'affaires d'un magasin de quartier, des samedi très forts, une semaine morne, un Noël chargé, un été plat." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | date | \n", "value | \n", "
---|---|---|
0 | \n", "2023-03-06 00:39:51.820916 | \n", "0.005036 | \n", "
1 | \n", "2023-03-07 00:39:51.820916 | \n", "0.004769 | \n", "
2 | \n", "2023-03-08 00:39:51.820916 | \n", "0.006293 | \n", "
3 | \n", "2023-03-09 00:39:51.820916 | \n", "0.006932 | \n", "
4 | \n", "2023-03-10 00:39:51.820916 | \n", "0.008666 | \n", "
\n", " | date | \n", "value | \n", "notrend | \n", "trend | \n", "weekday | \n", "
---|---|---|---|---|---|
0 | \n", "2023-03-06 00:39:51.820916 | \n", "0.005036 | \n", "-0.000797 | \n", "0.005833 | \n", "0 | \n", "
1 | \n", "2023-03-07 00:39:51.820916 | \n", "0.004769 | \n", "-0.001068 | \n", "0.005837 | \n", "1 | \n", "
2 | \n", "2023-03-08 00:39:51.820916 | \n", "0.006293 | \n", "0.000451 | \n", "0.005842 | \n", "2 | \n", "
3 | \n", "2023-03-09 00:39:51.820916 | \n", "0.006932 | \n", "0.001086 | \n", "0.005846 | \n", "3 | \n", "
4 | \n", "2023-03-10 00:39:51.820916 | \n", "0.008666 | \n", "0.002815 | \n", "0.005851 | \n", "4 | \n", "
\n", " | date | \n", "value | \n", "notrend | \n", "trend | \n", "weekday | \n", "
---|---|---|---|---|---|
0 | \n", "2023-03-06 00:39:51.820916 | \n", "0.005036 | \n", "-0.000797 | \n", "0.005833 | \n", "0 | \n", "
1 | \n", "2023-03-07 00:39:51.820916 | \n", "0.004769 | \n", "-0.001068 | \n", "0.005837 | \n", "1 | \n", "
2 | \n", "2023-03-08 00:39:51.820916 | \n", "0.006293 | \n", "0.000451 | \n", "0.005842 | \n", "2 | \n", "
3 | \n", "2023-03-09 00:39:51.820916 | \n", "0.006932 | \n", "0.001086 | \n", "0.005846 | \n", "3 | \n", "
4 | \n", "2023-03-10 00:39:51.820916 | \n", "0.008666 | \n", "0.002815 | \n", "0.005851 | \n", "4 | \n", "
5 | \n", "2023-03-11 00:39:51.820916 | \n", "0.014102 | \n", "0.008247 | \n", "0.005855 | \n", "5 | \n", "
7 | \n", "2023-03-13 00:39:51.820916 | \n", "0.004139 | \n", "-0.001725 | \n", "0.005864 | \n", "0 | \n", "
8 | \n", "2023-03-14 00:39:51.820916 | \n", "0.006453 | \n", "0.000584 | \n", "0.005869 | \n", "1 | \n", "
9 | \n", "2023-03-15 00:39:51.820916 | \n", "0.004974 | \n", "-0.000900 | \n", "0.005873 | \n", "2 | \n", "
10 | \n", "2023-03-16 00:39:51.820916 | \n", "0.007552 | \n", "0.001674 | \n", "0.005878 | \n", "3 | \n", "
\n", " | date | \n", "value | \n", "notrend | \n", "trend | \n", "weekday | \n", "lag1 | \n", "lag2 | \n", "lag3 | \n", "lag4 | \n", "lag5 | \n", "lag6 | \n", "lag7 | \n", "lag8 | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
725 | \n", "2025-02-28 00:39:51.820916 | \n", "0.011877 | \n", "0.002777 | \n", "0.009100 | \n", "4 | \n", "0.009749 | \n", "0.008428 | \n", "0.007654 | \n", "0.007989 | \n", "0.016468 | \n", "0.013102 | \n", "0.009676 | \n", "0.008109 | \n", "
726 | \n", "2025-03-01 00:39:51.820916 | \n", "0.019454 | \n", "0.010350 | \n", "0.009105 | \n", "5 | \n", "0.011877 | \n", "0.009749 | \n", "0.008428 | \n", "0.007654 | \n", "0.007989 | \n", "0.016468 | \n", "0.013102 | \n", "0.009676 | \n", "
728 | \n", "2025-03-03 00:39:51.820916 | \n", "0.005494 | \n", "-0.003620 | \n", "0.009114 | \n", "0 | \n", "0.019454 | \n", "0.011877 | \n", "0.009749 | \n", "0.008428 | \n", "0.007654 | \n", "0.007989 | \n", "0.016468 | \n", "0.013102 | \n", "
729 | \n", "2025-03-04 00:39:51.820916 | \n", "0.007479 | \n", "-0.001639 | \n", "0.009118 | \n", "1 | \n", "0.005494 | \n", "0.019454 | \n", "0.011877 | \n", "0.009749 | \n", "0.008428 | \n", "0.007654 | \n", "0.007989 | \n", "0.016468 | \n", "
730 | \n", "2025-03-05 00:39:51.820916 | \n", "0.007589 | \n", "-0.001534 | \n", "0.009123 | \n", "2 | \n", "0.007479 | \n", "0.005494 | \n", "0.019454 | \n", "0.011877 | \n", "0.009749 | \n", "0.008428 | \n", "0.007654 | \n", "0.007989 | \n", "
LinearRegression()In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
LinearRegression()
\n", " | date | \n", "value | \n", "notrend | \n", "trend | \n", "weekday | \n", "lag1 | \n", "lag2 | \n", "lag3 | \n", "lag4 | \n", "lag5 | \n", "lag6 | \n", "lag7 | \n", "lag8 | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "2023-03-06 00:39:51.820916 | \n", "0.005036 | \n", "-0.000797 | \n", "0.005833 | \n", "0 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
1 | \n", "2023-03-07 00:39:51.820916 | \n", "0.004769 | \n", "-0.001068 | \n", "0.005837 | \n", "1 | \n", "0.005036 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
2 | \n", "2023-03-08 00:39:51.820916 | \n", "0.006293 | \n", "0.000451 | \n", "0.005842 | \n", "2 | \n", "0.004769 | \n", "0.005036 | \n", "0.000000 | \n", "0.000000 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
3 | \n", "2023-03-09 00:39:51.820916 | \n", "0.006932 | \n", "0.001086 | \n", "0.005846 | \n", "3 | \n", "0.006293 | \n", "0.004769 | \n", "0.005036 | \n", "0.000000 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
4 | \n", "2023-03-10 00:39:51.820916 | \n", "0.008666 | \n", "0.002815 | \n", "0.005851 | \n", "4 | \n", "0.006932 | \n", "0.006293 | \n", "0.004769 | \n", "0.005036 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
Pipeline(steps=[('pipeline',\n", " Pipeline(steps=[('columntransformer',\n", " ColumnTransformer(transformers=[('pass',\n", " 'passthrough',\n", " ['lag1',\n", " 'lag2',\n", " 'lag3',\n", " 'lag4',\n", " 'lag5',\n", " 'lag6',\n", " 'lag7',\n", " 'lag8']),\n", " ('dummies',\n", " Pipeline(steps=[('onehotencoder',\n", " OneHotEncoder()),\n", " ('truncatedsvd',\n", " TruncatedSVD())]),\n", " ['weekday'])])),\n", " ('linearregression', LinearRegression())]))])In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
Pipeline(steps=[('pipeline',\n", " Pipeline(steps=[('columntransformer',\n", " ColumnTransformer(transformers=[('pass',\n", " 'passthrough',\n", " ['lag1',\n", " 'lag2',\n", " 'lag3',\n", " 'lag4',\n", " 'lag5',\n", " 'lag6',\n", " 'lag7',\n", " 'lag8']),\n", " ('dummies',\n", " Pipeline(steps=[('onehotencoder',\n", " OneHotEncoder()),\n", " ('truncatedsvd',\n", " TruncatedSVD())]),\n", " ['weekday'])])),\n", " ('linearregression', LinearRegression())]))])
Pipeline(steps=[('columntransformer',\n", " ColumnTransformer(transformers=[('pass', 'passthrough',\n", " ['lag1', 'lag2', 'lag3',\n", " 'lag4', 'lag5', 'lag6',\n", " 'lag7', 'lag8']),\n", " ('dummies',\n", " Pipeline(steps=[('onehotencoder',\n", " OneHotEncoder()),\n", " ('truncatedsvd',\n", " TruncatedSVD())]),\n", " ['weekday'])])),\n", " ('linearregression', LinearRegression())])
ColumnTransformer(transformers=[('pass', 'passthrough',\n", " ['lag1', 'lag2', 'lag3', 'lag4', 'lag5',\n", " 'lag6', 'lag7', 'lag8']),\n", " ('dummies',\n", " Pipeline(steps=[('onehotencoder',\n", " OneHotEncoder()),\n", " ('truncatedsvd',\n", " TruncatedSVD())]),\n", " ['weekday'])])
['lag1', 'lag2', 'lag3', 'lag4', 'lag5', 'lag6', 'lag7', 'lag8']
passthrough
['weekday']
OneHotEncoder()
TruncatedSVD()
LinearRegression()