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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *