Come calcolare la correlazione mobile nei panda: con esempi
Le correlazioni rolling sono correlazioni tra due serie temporali su una finestra scorrevole. Uno dei vantaggi di questo tipo di correlazione è che puoi visualizzare la correlazione tra due serie temporali nel tempo.
Questo tutorial spiega come calcolare e visualizzare le correlazioni rolling per un DataFrame panda in Python.
Come calcolare le correlazioni mobili nei panda
Supponiamo di avere il seguente frame di dati che visualizza il numero totale di prodotti venduti per due prodotti diversi ( x e y ) in un periodo di 15 mesi:
import pandas as pd import numpy as np #createDataFrame 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 xy 1 1 13 22 2 2 15 24 3 3 16 23 4 4 15 27 5 5 17 26 6 6 20 26
Per calcolare una correlazione mobile nei panda, possiamo utilizzare la funzione Rolling.corr() .
Questa funzione utilizza la seguente sintassi:
df[‘x’].rolling(larghezza).corr(df[‘y’])
Oro:
- df: nome del frame di dati
- larghezza: numero intero che specifica la larghezza della finestra per la correlazione scorrevole
- x, y: i nomi delle due colonne tra cui calcolare la correlazione mobile
Ecco come utilizzare questa funzione per calcolare la correlazione mobile delle vendite su 3 mesi tra il prodotto x e il prodotto 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
Questa funzione restituisce la correlazione tra le vendite di due prodotti negli ultimi 3 mesi. Per esempio:
- La correlazione delle vendite nei mesi 1-3 è stata pari a 0,654654 .
- La correlazione delle vendite nei mesi 2-4 è stata -0,693375.
- La correlazione delle vendite nei mesi 3-5 è stata -0,240192.
E così via.
Possiamo facilmente modificare questa formula per calcolare la correlazione mobile per un periodo di tempo diverso. Ad esempio, il codice seguente mostra come calcolare la correlazione mobile delle vendite su 6 mesi tra i due prodotti:
#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
Questa funzione restituisce la correlazione tra le vendite dei due prodotti negli ultimi 6 mesi. Per esempio:
- La correlazione delle vendite nei mesi 1-6 è stata 0,558742 .
- La correlazione delle vendite nei mesi 2-7 è stata 0,485855.
- La correlazione delle vendite nei mesi 3-8 è stata 0,693103.
E così via.
Commenti
Ecco alcune note sulle funzioni utilizzate in questi esempi:
- La larghezza (cioè la finestra a discesa) deve essere uguale o maggiore di 3 per poter calcolare le correlazioni.
- Puoi trovare la documentazione completa per la funzione Rolling.corr() qui .
Risorse addizionali
Come calcolare la correlazione scorrevole in R
Come calcolare la correlazione mobile in Excel