Come calcolare la correlazione scorrevole in r
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 le correlazioni rolling in R.
Come calcolare le correlazioni rolling in R
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:
#create data data <- data.frame(month=1:15, x=c(13, 15, 16, 15, 17, 20, 22, 24, 25, 26, 23, 24, 23, 22, 20), y=c(22, 24, 23, 27, 26, 26, 27, 30, 33, 32, 27, 25, 28, 26, 28)) #view first six rows head(data) 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 in R, possiamo utilizzare la funzione rollapply() dal pacchetto zoo .
Questa funzione utilizza la seguente sintassi:
rollapply(dati, larghezza, FUN, by.column=TRUE)
Oro:
- dati: nome del frame di dati
- larghezza: numero intero che specifica la larghezza della finestra per la correlazione scorrevole
- DIVERTIMENTO: la funzione da applicare.
- by.column: specifica se applicare la funzione a ciascuna colonna separatamente. Questo è VERO per impostazione predefinita, ma per calcolare una correlazione mobile dobbiamo specificare che è FALSO.
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 rollapply(data, width=3, function (x) cor(x[,2],x[,3]), by.column= FALSE ) [1] 0.6546537 -0.6933752 -0.2401922 -0.8029551 0.8029551 0.9607689 [7] 0.9819805 0.6546537 0.8824975 0.8170572 -0.9449112 -0.3273268 [13] -0.1889822
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 0,6546537 .
- La correlazione delle vendite nei mesi 2-4 è stata -0,6933752.
- La correlazione delle vendite nei mesi 3-5 è stata -0,2401922.
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 rollapply(data, width=6, function (x) cor(x[,2],x[,3]), by.column= FALSE ) [1] 0.5587415 0.4858553 0.6931033 0.7564756 0.8959291 0.9067715 0.7155418 [8] 0.7173740 0.7684468 0.4541476
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,5587415 .
- La correlazione delle vendite nei mesi 2-7 è stata 0,4858553.
- La correlazione delle vendite nei mesi 3-8 è stata 0,6931033.
E così via.
Commenti
Tieni a mente i seguenti punti quando usi la funzione rollapply():
- La larghezza (cioè la finestra a discesa) deve essere uguale o maggiore di 3 per poter calcolare le correlazioni.
- Nelle formule precedenti, abbiamo utilizzato cor(x[,2],x[3]) perché le due colonne tra cui volevamo calcolare le correlazioni erano in posizione 2 e 3 . Modifica questi numeri se le colonne che ti interessano si trovano in posizioni diverse.