HT creare un nuovo vettore in frame di dati che prende correlazione dei vettori esistenti

StackOverflow https://stackoverflow.com/questions/2467019

  •  20-09-2019
  •  | 
  •  

Domanda

Ho una serie temporale di due indici, con ciascuna riga rappresenta il prezzo di chiusura dello stesso giorno. Mi piacerebbe andare a remare 30 e lookback negli ultimi 30 'giorni e calcolare la correlazione di Pearson. E poi memorizzare tale valore in un nuovo vettore. Quindi, ripetere il calcolo per l'intera serie storica.

Si tratta di un compito banale in Excel, quindi sono convinto che può essere fatto in R. Non conosco il metodo da utilizzare però.

È stato utile?

Soluzione

Ci sono molti modi per fare questo (come per ogni cosa in R). Vi consiglio di usare sempre una serie di tempo quando si lavora con dati di serie temporali.

Il pacchetto zoo è probabilmente il più popolare pacchetto serie storica (anche se si può anche guardare gli altri, come XTS, TimeSeries, la sua, FTS):

library(zoo)
z <- zoo(data.frame(a=1:50, b=3:52), as.Date(1:50))
rollapply(z, 30, cor, by.column=F, align = "right")

È inoltre possibile trovare la funzione chart.RollingCorrelation nel pacchetto PerformanceAnalytics utile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top