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