Personnaliser les préférences

Nous utilisons des cookies pour vous aider à naviguer efficacement et à exécuter certaines fonctions. Vous trouverez ci-dessous des informations détaillées sur tous les cookies sous chaque catégorie de consentement.

Les cookies classés comme « Nécessaires » sont stockés sur votre navigateur car ils sont essentiels pour activer les fonctionnalités de base du site.... 

Toujours actif

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Aucun cookie à afficher.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Aucun cookie à afficher.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Aucun cookie à afficher.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Aucun cookie à afficher.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

Aucun cookie à afficher.

Comment calculer la corrélation glissante dans les pandas : avec des exemples



Les corrélations glissantes sont des corrélations entre deux séries temporelles sur une fenêtre glissante. L’un des avantages de ce type de corrélation est que vous pouvez visualiser la corrélation entre deux séries chronologiques au fil du temps.

Ce didacticiel explique comment calculer et visualiser les corrélations glissantes pour un DataFrame pandas en Python.

Comment calculer les corrélations glissantes chez les pandas

Supposons que nous disposions du bloc de données suivant qui affiche le nombre total de produits vendus pour deux produits différents ( x et y ) sur une période de 15 mois :

import pandas as pd
import numpy as np

#create DataFrame
df = pd.DataFrame({'month': np.arange(1, 16),
                   'x': [13, 15, 16, 15, 17, 20, 22, 24, 25, 26, 23, 24, 23, 22, 20],
                   'y': [22, 24, 23, 27, 26, 26, 27, 30, 33, 32, 27, 25, 28, 26, 28]})

#view first six rows
df.head()

  month  x  y
1     1 13 22
2     2 15 24
3     3 16 23
4     4 15 27
5     5 17 26
6     6 20 26

Pour calculer une corrélation glissante chez les pandas, nous pouvons utiliser la fonction Rolling.corr() .

Cette fonction utilise la syntaxe suivante :

df[‘x’].rolling(width).corr(df[‘y’])

où:

  • df : Nom de la trame de données
  • width : Entier spécifiant la largeur de la fenêtre pour la corrélation glissante
  • x, y : les deux noms de colonnes pour calculer la corrélation glissante entre

Voici comment utiliser cette fonction pour calculer la corrélation glissante sur 3 mois des ventes entre le produit x et le produit y :

#calculate 3-month rolling correlation between sales for x and y
df['x'].rolling(3).corr(df['y'])

0          NaN
1          NaN
2     0.654654
3    -0.693375
4    -0.240192
5    -0.802955
6     0.802955
7     0.960769
8     0.981981
9     0.654654
10    0.882498
11    0.817057
12   -0.944911
13   -0.327327
14   -0.188982
dtype: float64

Cette fonction renvoie la corrélation entre les ventes de deux produits au cours des 3 mois précédents. Par exemple:

  • La corrélation des ventes au cours des mois 1 à 3 était de 0,654654 .
  • La corrélation des ventes au cours des mois 2 à 4 était de -0,693375.
  • La corrélation des ventes au cours des mois 3 à 5 était de -0,240192.

Et ainsi de suite.

Nous pouvons facilement ajuster cette formule pour calculer la corrélation glissante pour une période de temps différente. Par exemple, le code suivant montre comment calculer la corrélation glissante sur 6 mois des ventes entre les deux produits :

#calculate 6-month rolling correlation between sales for x and y
df['x'].rolling(6).corr(df['y']) 
0          NaN
1          NaN
2          NaN
3          NaN
4          NaN
5     0.558742
6     0.485855
7     0.693103
8     0.756476
9     0.895929
10    0.906772
11    0.715542
12    0.717374
13    0.768447
14    0.454148
dtype: float64

Cette fonction renvoie la corrélation entre les deux ventes de produits au cours des 6 mois précédents. Par exemple:

  • La corrélation des ventes au cours des mois 1 à 6 était de 0,558742 .
  • La corrélation des ventes au cours des mois 2 à 7 était de 0,485855.
  • La corrélation des ventes au cours des mois 3 à 8 était de 0,693103.

Et ainsi de suite.

Remarques

Voici quelques notes sur les fonctions utilisées dans ces exemples :

  • La largeur (c’est-à-dire la fenêtre déroulante) doit être égale ou supérieure à 3 afin de calculer les corrélations.
  • Vous pouvez trouver la documentation complète de la fonction Rolling.corr() ici .

Ressources additionnelles

Comment calculer la corrélation glissante dans R
Comment calculer la corrélation glissante dans Excel

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *