/ / Come posso tracciare una matrice di correlazione incrociata per la serie temporale? - r, grafico, grafico, ggplot2, serie storiche

Come faccio a tracciare una matrice di correlazione incrociata per timeseries? - r, grafico, grafico, ggplot2, serie storiche

Ho una rappresentazione in serie dei miei dati come segue (senza riga e colonna) annotazioni:

      L1 L2 L3 L4
t=1    0  1  1  0
t=2    0  1  1  1
t=3    1  0  1  1
t=4    0  1  1  0

Sto leggendo questo in R come:

timeseries = read.table("./test", header=F)

Sto progettando timeseries per L1 usando

ts.plot(timeseries$V1)

e tracciare la funzione di correlazione incrociata come:

ccf(timeseries$V1, timeseries$V2)

Qualcuno può dirmi come posso tracciare una matrice di correlazione incrociata che mostra l'output di questa funzione per L1-L4? Fondamentalmente, qualcosa del genere (nel mio caso, una matrice 4x4 di grafici):

inserisci la descrizione dell'immagine qui

risposte:

5 per risposta № 1

Sembra esserci un altro modo banale di farlo!

timeseries = read.table("./test", header=F)
acf(timeseries)

mi dà una matrice di grafici di correlazione. Naturalmente, ci sono altre opzioni a cui è possibile passare acf se è necessaria una covarianza.


2 per risposta № 2

Un modo banale per farlo è semplicemente creare una matrice di grafici sul dispositivo di stampa e posizionarli ciascuno ccf trama uno per uno:

M <- matrix(sample(0:1,40,replace = TRUE),nrow = 10)

par(mfrow= c(4,4))
for (i in 1:4){
for (j in 1:4){
ccf(M[,i],M[,j])
}
}

Ma se aspetti un po ', qualcuno che conosce più intimamente i pacchetti di serie temporali può passare con una funzione che lo fa un po' più bene.


2 per risposta № 3

Prova questo dove M è come nel post di joran:

pnl <- function(x, y = x) { par(new = TRUE); ccf(x, y) }
pairs(as.data.frame(M), upper.panel = pnl, diag.panel = pnl, cex.labels = 1)