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 *