Introduction à l'analyse des séries temporelles

5.1 Introduction à l'analyse des séries temporelles

Objectifs d'apprentissage

À la fin de cette section, vous devriez être capable de :

  • 5.1.1 Définir les données de séries temporelles.
  • 5.1.2 Identifier des exemples de données de séries temporelles dans des applications du monde réel.

Les données peuvent évoluer au fil du temps, et il est important de pouvoir identifier les manières dont elles peuvent changer afin d'établir des prévisions raisonnables sur les données futures. Les données semblent-elles globalement en hausse ou en baisse constante ? Observe-t-on des hauts et des bas réguliers ? Il existe peut-être des fluctuations prévisibles étroitement liées aux saisons de l'année ou à des cycles économiques pluriannuels.

L'analyse de séries temporelles permet d'examiner des points de données recueillis ou enregistrés à des intervalles de temps spécifiques, facilitant l'identification de tendances, de motifs et de variations saisonnières indispensables pour formuler des prédictions et prendre des décisions éclairées dans divers secteurs. Elle est largement utilisée dans des domaines tels que le commerce, la finance, l'économie, les sciences environnementales et météorologiques, les sciences de l'information et bien d'autres disciplines où les données sont collectées au fil du temps.

Voici quelques exemples de domaines dans lesquels l'analyse de séries temporelles est appliquée pour résoudre des problèmes concrets :

  • Prévision et prédiction. Établir des prédictions sur des données futures (inconnues) à partir de données actuelles et historiques constitue sans doute l'application la plus importante de l'analyse de séries temporelles. Les entreprises utilisent ces méthodes pour orienter leurs décisions stratégiques et accroître leurs revenus futurs. Les décideurs politiques s'appuient sur la prévision pour anticiper les évolutions démographiques susceptibles d'influencer les élections et les besoins en services publics.
  • Gestion des risques. L'analyse de séries temporelles contribue à quantifier le risque. Par exemple, les compagnies d'assurance peuvent prévoir les tendances affectant le nombre et le montant total des sinistres que les propriétaires pourraient déclarer à l'avenir, ce qui a une incidence directe sur les primes d'assurance.
  • Détection d'anomalies. Si des données s'écartent fortement des prédictions, cela peut signaler un changement majeur dans une caractéristique des données ou révéler un facteur sous-jacent qui nécessite une analyse plus approfondie. Par exemple, si les dépenses d'un ménage augmentent considérablement au-delà des niveaux prévus, cela peut indiquer soit une hausse soudaine des revenus du foyer, soit une fraude potentielle.
  • Santé et épidémiologie. L'analyse de séries temporelles est fréquemment utilisée pour surveiller les constantes vitales des patients, étudier la progression du cancer chez des individus issus de diverses populations, suivre les épidémies et prévoir les besoins futurs en ressources de santé, tels que les vaccins ou les lits d'hôpitaux supplémentaires, entre autres applications.

L'analyse de séries temporelles fait appel à plusieurs techniques statistiques et informatiques pour identifier des structures, faire des prédictions ou extraire des informations utiles à partir des données. Les étapes fondamentales de l'analyse de séries temporelles suivent fidèlement le cycle de la science des données décrit dans Qu'est-ce que les données et la science des données ? et s'articulent ainsi :

  1. Identification/Définition du problème. Que souhaitez-vous savoir ? Voulez-vous prédire les ventes d'un produit au cours des prochaines années ? Souhaitez-vous étudier l'évolution des taches solaires dans le temps ? Votre investissement dans une action est-il susceptible de générer un profit ou une perte ?
  2. Collecte des données. Une fois la question formulée, il vous faut des données à analyser. Cette étape peut être très longue si aucun jeu de données approprié n'existe déjà. Dans le meilleur des cas, d'autres personnes ont déjà recueilli des données réutilisables. Dans le cas contraire, vous devrez organiser la collecte de données par des enquêtes, des expériences, des observations ou d'autres moyens. Notez que la collecte de données est abordée en détail dans Vue d'ensemble des méthodes de collecte de données.
  3. Nettoyage des données. Les données du monde réel se présentent rarement sous une forme directement analysable. Le plus souvent, elles doivent être nettoyées, ce qui implique de traiter les données manquantes d'une manière ou d'une autre et de formater les données de façon appropriée pour qu'un ordinateur puisse les interpréter. Ce sujet est abordé dans Extraction de données web et collecte de données sur les réseaux sociaux.
  4. Sélection du modèle. L'étape suivante consiste à ajuster les données à un modèle. De fait, vous constaterez peut-être qu'il est nécessaire d'élaborer de nombreux modèles et variantes de ces modèles avant d'obtenir un résultat satisfaisant.
  5. Évaluation du modèle. C'est sans doute l'étape la plus déterminante. Tout modèle conçu verra son utilité limitée s'il n'est pas suffisamment précis. Le modèle doit comporter une indication du degré de confiance accordé à ses prédictions. De plus, à mesure que de nouvelles observations deviennent disponibles, les prévisions du modèle doivent être comparées à celles-ci et ajustées au besoin pour mieux s'adapter aux données.

Qu'est-ce qu'une série temporelle ?

Tout ensemble de données composé de mesures numériques d'une même variable recueillies et organisées selon des intervalles de temps réguliers peut être considéré comme des données de série temporelle (time series). À titre d'exemple, examinez le Tableau 5.1 portant sur le S&P 500, un indice agrégé des 500 plus grandes entreprises cotées en bourse, pour ces dernières années. Ici, la variable correspond à la valeur de l'indice S&P au dernier jour de négociation de l'année (données ponctuelles (point-in-time data)).

Année Indice S&P en fin d'année
2013 1848.36
2014 2058.90
2015 2043.94
2016 2238.83
2017 2673.61
2018 2506.85
2019 3230.78
2020 3756.07
2021 4766.18
2022 3839.50
2023 4769.83
Tableau 5.1 Valeurs de l'indice S&P de 2013 à 2023 (source : https://www.nasdaq.com/market-activity/index/spx/historical)

Bien que le tableau soit informatif, il n'est pas particulièrement aisé de l'utiliser pour déceler des tendances ou faire des prédictions. Une visualisation s'avère plus appropriée. La Figure 5.2 présente ces données de série temporelle au moyen d'un graphique de série temporelle (essentiellement un graphique linéaire). Remarquez que si la tendance générale est à la hausse, des replis sont également visibles pour les années 2018 et 2022.

Un graphique linéaire intitulé « S&P Index at the End of Year 2013-2023 ». L'axe X indique les années de 2013 à 2023 et l'axe Y s'étend de 1 000 à 6 000. Une ligne bleue représente une tendance générale à la hausse au cours de la dernière décennie. L'indice commence à environ 1 900 en 2013, monte à environ 2 200 en 2016, puis fluctue entre 2 000 et 4 000 jusqu'en 2021, où il augmente plus nettement pour atteindre 4 800 en 2021, chute en dessous de 4 000 en 2022, puis remonte à environ 4 800 en 2023.
Figure 5.2 Graphique linéaire (ou graphique de série temporelle) de l'indice S&P 500. Le graphique permet de repérer plus facilement la tendance générale à la hausse au cours de la dernière décennie. (source des données : adapté de S&P 500 [SPX] Historical Data)

L'exemple présenté à la Figure 5.3 constitue une série temporelle simple ne comportant qu'une seule mesure (la valeur de l'indice S&P 500) suivie au cours du temps. Dès lors que nous gardons à l'esprit que ces données représentent les valeurs annuelles de l'indice S&P 500 à partir de 2013, il est plus efficace de considérer ces valeurs seules sous la forme d'une liste ordonnée.

1848.36, 2058.9, 2043.94, 2238.83, 2673.61, 2506.85, 3230.78, 3756.07, 4766.18, 3839.5, 4769.83

En mathématiques, une liste ordonnée de nombres est appelée une suite. Les valeurs individuelles de la suite sont appelées des termes (terms). Une suite abstraite peut être notée (xn)(xn) ou (xn)1≤n≤N(xn)1≤n≤N. Dans les deux notations, nn représente l'indice de chaque valeur de la suite, tandis que la seconde notation précise également l'intervalle des valeurs de l'indice pour la suite (nn prenant toutes les valeurs d'indice de 1 à NN). C'est-à-dire :

(xn)1≤n≤N=(x1,x2,x3,x4,…,xN)(xn)1≤n≤N=(x1,x2,x3,x4,…,xN)

Nous emploierons l'expression standard série temporelle pour faire référence à une suite de données horodatées, et le terme suite lorsque nous considérerons les composantes de la série temporelle en tant que liste ordonnée de valeurs.

Toutes les séquences de points de données ne constituent pas pour autant des séries temporelles. L'ensemble des populations actuelles des pays du monde n'est pas une série temporelle car les données ne sont pas mesurées à des moments différents. En revanche, si nous nous concentrions sur un seul pays et suivions sa population d'année en année, il s'agirait bien d'une série temporelle. Qu'en est-il d'une liste des prénoms de bébés les plus populaires par année ? Bien qu'il y ait une dimension temporelle, les données ne sont pas numériques, et cela ne relève donc pas de la catégorie des séries temporelles. D'un autre côté, les données indiquant combien de bébés sont prénommés « Jennifer » chaque année constitueraient des données de série temporelle.

Généralement, nous supposons que les données d'une série temporelle sont recueillies à des intervalles de temps réguliers et qu'aucune valeur n'est manquante. Les termes d'une série temporelle ont tendance à dépendre des termes antérieurs d'une manière ou d'une autre ; autrement, il pourrait s'avérer impossible d'effectuer la moindre prédiction sur les termes futurs.

Modèles de séries temporelles

Un modèle de séries temporelles (time series model) est une fonction, un algorithme ou une méthode servant à trouver, approximer ou prédire les valeurs d'une série temporelle donnée. L'idée fondamentale sous-tendant les modèles de séries temporelles est que les valeurs antérieures devraient fournir une indication sur le comportement des valeurs futures. En d'autres termes, il existe une certaine fonction qui prend en entrée les valeurs antérieures de la série temporelle et produit la valeur suivante en sortie :

xn+1=f(xn,xn−1,xn−2,…,x1)xn+1=f(xn,xn−1,xn−2,…,x1)

Cependant, hormis dans les situations les plus idéales, une fonction qui prédit la valeur suivante de la série temporelle avec une exactitude parfaite n'existe pas. La variabilité aléatoire et d'autres facteurs non pris en compte dans le modèle vont générer une erreur (error), définie comme l'écart entre les prédictions et les observations réelles. Par conséquent, nous devons toujours incorporer un terme d'erreur (souvent désigné par la lettre grecque εε, appelée « epsilon ») dans le modèle. De surcroît, au lieu d'attendre du modèle qu'il produise exactement le terme suivant, celui-ci génère des valeurs prédites. Souvent, les valeurs prédites d'une série temporelle sont notées (x^n)(x^n) afin de les distinguer des valeurs réelles (xn)(xn). Ainsi,

x^n+1=f(xn,xn−1,xn−2,…,x1,ε)x^n+1=f(xn,xn−1,xn−2,…,x1,ε)

Dans Méthodes de prévision de séries temporelles et Méthodes d'évaluation des prévisions, nous approfondirons la construction de modèles de séries temporelles et la prise en compte de l'erreur.

Prévision de séries temporelles

En général, le but de l'analyse de séries temporelles est d'établir des prédictions, ou extrapolations, sur les valeurs futures de la série temporelle, un processus appelé prévision (forecasting). En règle générale, l'exactitude d'une prévision diminue à mesure que les prédictions portent sur un horizon plus lointain. Lorsque les prédictions futures ne deviennent pas plus précises qu'un tirage à pile ou face ou un lancer de dé, la prévision à cette échéance ou au-delà perd toute efficacité. Dans la pratique, les modèles de séries temporelles sont actualisés régulièrement pour intégrer de nouvelles données.

Selon la situation et la nature des données, il existe de nombreuses méthodes pour prévoir les données futures. La plus simple de toutes, appelée méthode de prévision naïve ou méthode de prévision plate (flat forecasting method), consiste à utiliser la valeur la plus récente comme meilleure estimation de la valeur suivante. Par exemple, puisque le S&P 500 affichait une valeur de 3 839,5 à la fin de 2022, il est raisonnable de supposer que sa valeur sera relativement proche de 3 839,5 à la fin de 2023. Notez que cela correspondrait au modèle de série temporelle x^n+1=xnx^n+1=xn. La méthode naïve n'a qu'un usage limité dans la pratique.

Au lieu d'utiliser uniquement la dernière valeur observée pour prédire la suivante, une meilleure approche pourrait consister à prendre en compte un certain nombre de valeurs, xn,xn−1,xn−2,…,xn,xn−1,xn−2,…, pour obtenir l'estimation x^n+1x^n+1. On pourrait faire la moyenne des TT dernières valeurs (pour une valeur prédéfinie de TT). C'est ce que l'on appelle une moyenne mobile simple, qui sera définie explicitement dans Composantes de l'analyse de séries temporelles. Pour l'instant, illustrons cette idée de manière intuitive. Supposons que nous utilisions la moyenne des T=3T=3 termes les plus récents pour estimer le terme suivant. Le modèle de série temporelle s'écrirait :

x^n+1=xn+xn−1+xn−23x^n+1=xn+xn−1+xn−23

D'après les données du Tableau 5.1, la prédiction pour la valeur de l'indice S&P à la fin de 2023 se calculerait comme suit :

4,769.83+3,839.5+4,766.183=4,458.54,769.83+3,839.5+4,766.183=4,458.5

Une autre méthode simple de prévision consiste à ajuster les données à un modèle de régression linéaire, puis à utiliser ce modèle de régression pour prédire les valeurs futures. (Voir Régression linéaire pour plus de détails sur la régression linéaire.) La régression linéaire permet de mieux appréhender la direction globale des données qu'en se fondant sur le seul dernier point d'observation. En revanche, la régression linéaire ne pourra pas modéliser des structures plus subtiles au sein des données, telles que des motifs cycliques. De plus, elle repose sur l'hypothèse sous-jacente que les données augmentent ou diminuent de manière plus ou moins uniforme sur l'ensemble de la période à prédire, ce qui constitue fréquemment une hypothèse non valide.

Exemple 5.1

Problème

Déterminez un modèle de régression linéaire pour les données du Tableau 5.1 et utilisez-le pour prévoir la valeur du S&P à la fin des années 2024 et 2025.

Solution

À l'aide d'un logiciel de statistiques standard, la régression linéaire obtenue est y^=304.437t−611,288y^=304.437t−611,288, où tt représente l'année. Par ailleurs, dans Excel, la droite de régression peut être ajoutée au graphique en courbes grâce à la fonctionnalité « Courbe de tendance », avec l'option « Linéaire ». Un graphique de la droite de régression est présenté à la Figure 5.3.

Un graphique linéaire intitulé « S&P Index at the End of Year 2013-2023 ». L'axe X présente les années de 2013 à 2023 et l'axe Y s'étend de 0 à 6 000. Une ligne bleue représente les valeurs réelles de l'indice, commençant à environ 1 800 en 2013, augmentant à environ 2 200 en 2016, puis fluctuant entre 2 000 et 3 000 jusqu'en 2019, où elle grimpe fortement pour atteindre près de 5 000 en 2021, avant de baisser et de remonter près de 5 000 en 2023. La ligne orange représente une courbe de tendance linéaire, montrant une progression constante à la hausse sur la même période.
Figure 5.3 Graphique linéaire de l'indice S&P 500 avec la régression linéaire (source des données : adapté de S&P 500 [SPX] Historical Data)

La prévision pour la fin de l'année 2024 est y^=304.437(2024)−611,288=4,892.5y^=304.437(2024)−611,288=4,892.5.

De même, la prédiction pour 2025 est y^=304.437(2025)−611,288=5,196.9y^=304.437(2025)−611,288=5,196.9.

Dans ce chapitre, nous développerons des outils plus sophistiqués capables de détecter des structures que de simples moyennes ou modèles linéaires ne peuvent mettre au jour, notamment les modèles autorégressifs, les moyennes mobiles et le modèle autorégressif intégré à moyenne mobile (ARIMA) (autoregressive integrated moving average (ARIMA) model). Toutefois, concevoir un modèle élaboré pour des données de séries temporelles ne constitue qu'une partie du processus. Une étape essentielle réside dans le test et l'évaluation de votre modèle. Par conséquent, nous étudierons également des mesures d'erreur et d'incertitude permettant de juger de la qualité du modèle et de la précision potentielle de ses prévisions.

Exemples de données de séries temporelles

Les données de séries temporelles sont généralement mesurées ou observées à intervalles réguliers, par exemple quotidiennement, hebdomadairement, mensuellement ou annuellement. Bien que nous espérions déceler une structure, un motif ou une tendance générale dans les données, rien n'impose que les données de séries temporelles suivent un schéma simple et prévisible. Nous devons donc toujours nous montrer prudents lors de l'utilisation de modèles statistiques ou prédictifs pour analyser de telles données. Une validation régulière et un test des modèles choisis par rapport à de nouvelles données sont indispensables pour garantir leur fiabilité et leur efficacité, notions que nous explorerons dans les sections suivantes.

Les données de séries temporelles peuvent représenter des observations fréquentes à court terme, comme le suivi minute par minute des cours de la bourse. Il est pertinent de mesurer les cours des actions à de très courts intervalles de temps car ils ont tendance à être particulièrement volatils. On dit que les données sont volatiles ou qu'elles présentent une forte volatilité (volatility) si les points de données individuels affichent des fluctuations importantes par rapport à la moyenne, généralement en raison de facteurs difficiles à analyser ou à prédire. La volatilité peut être mesurée à l'aide de statistiques telles que la variance et l'écart type ; toutefois, il est important de comprendre que le niveau de volatilité lui-même peut évoluer avec le temps. Recueillir des données à des intervalles plus fréquents contribue certes à réduire ou à maîtriser la volatilité, mais il reste difficile de modéliser des données volatiles pour établir des prédictions futures.

D'autres ensembles de données représentent des mesures sur le plus long terme. Par exemple, les météorologues recueillent quotidiennement des données sur le climat, notamment la température, la pression atmosphérique, les précipitations, ainsi que la vitesse et la direction du vent, en un lieu donné. Sur plusieurs années, des structures saisonnières se dessinent. L'analyse de séries temporelles peut servir à repérer les variations saisonnières puis, une fois ces variations prises en compte, révéler si la tendance globale des températures est à la hausse ou à la baisse à long terme.

Les données de vente peuvent être mesurées chaque semaine ou chaque mois. Ce type de données est utile pour identifier les périodes de forte activité commerciale et les ralentissements durant lesquels les clients achètent moins. D'importantes décisions d'affaires sont souvent guidées par l'analyse de données de séries temporelles.

Enfin, des séries temporelles sur de très longues périodes sont précieuses dans les sciences. Le suivi des concentrations de carbone atmosphérique au fil du temps et la comparaison de ces mesures avec les teneurs relevées lors de l'extraction de carottes de glace en Antarctique peuvent mettre en évidence une modification statistiquement significative des cycles et régularités à long terme.

Travailler avec des données de séries temporelles et les visualiser dans Excel

Vous vous souvenez peut-être, d'après Qu'est-ce que les données et la science des données ?, que les tableurs se prêtent particulièrement bien à l'analyse de base et à la visualisation des données de séries temporelles. Il suffit de créer deux colonnes, l'une pour les périodes temporelles et l'autre pour les données. Sélectionnez les deux colonnes (avec leurs en-têtes) et insérez un graphique linéaire à l'aide de la fonctionnalité « Graphiques recommandés » dans Excel1, ce qui produit un graphique tel que celui présenté à la Figure 5.4.

Une capture d'écran d'une feuille de calcul Excel comportant deux colonnes de texte intitulées « Year » et « S&P Index at the end of the year ». Dans le menu, « Graphiques recommandés » est mis en évidence par un encadré rouge. Un menu contextuel « Graphiques recommandés » présente quatre options de graphiques linéaires.
Figure 5.4 Utilisation d'Excel pour créer un graphique linéaire. Au lieu d'utiliser « Graphiques recommandés », vous pouvez également choisir graphique linéaire dans la palette d'options située sur le même onglet. (Utilisé avec l'autorisation de Microsoft)

Travailler avec des données de séries temporelles et les visualiser dans Python

Dans Python, la bibliothèque pandas (pandas library) est extrêmement utile pour charger des fichiers CSV et les gérer sous forme de structures de données appelées DataFrames. Elle propose également une commande simple pour visualiser la série temporelle, plot(). Voici comment créer un graphique linéaire des valeurs quotidiennes de l'indice S&P 500 de 2014 à 2024 à partir du jeu de données SP500.csv.

Code Python

      import pandas as pd
      import matplotlib.pyplot as plt
      import matplotlib.ticker as ticker
      
      # Read the CSV file into a Pandas DataFrame
      df = pd.read_csv('SP500.csv')
      
      # Create a plot
      fig, ax = plt.subplots()
      df.plot(ax=ax)
      
      # Use FuncFormatter to add commas to the y-axis
      ax.yaxis.set_major_formatter(ticker.FuncFormatter(lambda x, pos: '{:,}'.format(int(x))))
      
      # Display the plot
      plt.show()
      

Le résultat obtenu se présente comme suit :

Une capture d'écran d'une sortie Python de graphique linéaire. L'axe X s'étend de 0 à 2 500 et l'axe Y s'étend de 0 à 5 000. Une ligne bleue en dents de scie représentant le S&P 500 montre une tendance générale à la hausse.

Remarquez que la fonctionnalité simple de tracé n'a pas étiqueté les axes xx et yy. De plus, l'axe des x n'affiche pas des dates réelles, mais le nombre de pas temporels. Pour des visualisations sommaires que vous ne destinez pas à un large public, cela peut convenir, mais si vous souhaitez concevoir des graphiques plus esthétiques et plus instructifs, utilisez une bibliothèque telle que matplotlib.pyplot. Dans le bloc de code Python suivant, vous verrez le même jeu de données visualisé à l'aide de matplotlib. (Notez la présence d'une ligne de code qui utilise la commande to_datatime(). Les formats de date et d'heure sont notoirement variables d'un jeu de données à l'autre, et les logiciels peuvent ne pas les interpréter correctement sans une légère assistance.)

Code Python

      # Import libraries
      import pandas as pd ## for dataset management
      import matplotlib.pyplot as plt ## for visualizations
      from matplotlib.ticker import FuncFormatter ## formatting Y-axis values
      
      # Read the CSV file into a Pandas DataFrame
      df = pd.read_csv('SP500.csv')
      
      # Convert the 'DATE' column to datetime format
      df['Date'] = pd.to_datetime(df['Date'], errors='coerce')
      
      # Function to format the Y-axis values
      def y_format(value, tick_number):
        return f'{value:,.0f}'
      
      # Plotting the time series data using Matplotlib
      plt.figure(figsize=(10, 6))
      plt.plot(df['Date'], df['SP500'], marker='', linestyle='-', color='b')
      plt.title('S&P 500 Time Series')
      plt.xlabel('Date')
      plt.ylabel('S&P 500 Value')
      plt.grid(True)
      
      # Apply the formatter to the Y-axis
      plt.gca().yaxis.set_major_formatter(FuncFormatter(y_format))
      
      plt.show()
      

Le résultat obtenu se présente comme suit :

Une capture d'écran d'une sortie Python de graphique linéaire intitulée « S&P 500 Time Series ». L'axe X est étiqueté « Data » et s'étend de 2014 à 2024. L'axe Y est étiqueté « S&P 500 Value » et s'étend de 2 000 à 5 000. Une ligne bleue en dents de scie représentant le S&P 500 montre une tendance générale à la hausse.