Comment calculer la corrélation croisée en Python
La corrélation croisée est un moyen de mesurer le degré de similarité entre une série chronologique et une version décalée d’une autre série chronologique.
Ce type de corrélation est utile à calculer car il peut nous indiquer si les valeurs d’une série chronologique sont prédictives des valeurs futures d’une autre série chronologique. En d’autres termes, cela peut nous indiquer si une série chronologique est un indicateur avancé pour une autre série chronologique.
Ce type de corrélation est utilisé dans de nombreux domaines différents, notamment :
Entreprises : les dépenses marketing sont souvent considérées comme un indicateur avancé des revenus futurs des entreprises. Par exemple, si une entreprise dépense une somme d’argent anormalement élevée en marketing au cours d’un trimestre, alors le chiffre d’affaires total devrait être élevé x trimestres plus tard.
Économie : L’indice de confiance des consommateurs (CCI) est considéré comme un indicateur avancé du produit intérieur brut (PIB) d’un pays. Par exemple, si le CCI est élevé au cours d’un mois donné, le PIB est susceptible d’être plus élevé x mois plus tard.
L’exemple suivant montre comment calculer la corrélation croisée entre deux séries temporelles en Python.
Exemple : Comment calculer la corrélation croisée en Python
Supposons que nous ayons la série chronologique suivante en Python qui montre les dépenses marketing totales (en milliers) pour une certaine entreprise ainsi que le chiffre d’affaires total (en milliers) pendant 12 mois consécutifs :
import numpy as np #define data marketing = np.array([3, 4, 5, 5, 7, 9, 13, 15, 12, 10, 8, 8]) revenue = np.array([21, 19, 22, 24, 25, 29, 30, 34, 37, 40, 35, 30])
Nous pouvons calculer la corrélation croisée pour chaque décalage entre les deux séries chronologiques en utilisant la fonction ccf() du package statsmodels comme suit :
import statsmodels.api as sm
#calculate cross correlation
sm.tsa.stattools.ccf(marketing, revenue, adjusted=False)
array([ 0.77109358, 0.46238654, 0.19352232, -0.06066296, -0.28159595,
-0.44531104, -0.49159463, -0.35783655, -0.15697476, -0.03430078,
0.01587722, 0.0070399 ])
Voici comment interpréter cette sortie :
- La corrélation croisée au décalage 0 est de 0,771 .
- La corrélation croisée au décalage 1 est de 0,462 .
- La corrélation croisée au décalage 2 est de 0,194 .
- La corrélation croisée au décalage 3 est de -0,061 .
Et ainsi de suite.
Notez que la corrélation entre les deux séries chronologiques devient de moins en moins positive à mesure que le nombre de décalages augmente. Cela nous indique que les dépenses marketing au cours d’un mois donné sont tout à fait prédictives des revenus un ou deux mois plus tard, mais ne prédisent pas les revenus au-delà de deux mois.
Cela est intuitivement logique : nous nous attendrions à ce que des dépenses marketing élevées au cours d’un mois donné soient prédictives d’une augmentation des revenus au cours des deux prochains mois, mais pas nécessairement d’une augmentation des revenus dans plusieurs mois.
Ressources additionnelles
Comment calculer l’autocorrélation en Python
Comment calculer une corrélation partielle en Python
Comment calculer la corrélation point-bisériale en Python