Ich habe eine Zeitreihen-Darstellung meiner Daten wie folgt (ohne die Zeilen- und Spalten-Annotationen):
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
Ich lese das in R als:
timeseries = read.table("./test", header=F)
Ich zeichne Zeitreihen für L1 mit
ts.plot(timeseries$V1)
und Zeichnen der Kreuzkorrelationsfunktion als:
ccf(timeseries$V1, timeseries$V2)
Kann mir bitte jemand sagen, wie ich eine Kreuzkorrelationsmatrix plotten soll, die die Ausgabe dieser Funktion für L1-L4 anzeigt? Grundsätzlich so etwas (in meinem Fall eine 4x4 Matrix von Plots):
Antworten:
5 für die Antwort № 1Es scheint eine andere triviale Art zu sein, es zu tun!
timeseries = read.table("./test", header=F)
acf(timeseries)
gibt mir eine Matrix von Korrelationskurven. Natürlich gibt es andere Optionen, an die man weitergeben kann acf
wenn eine Kovarianz benötigt wird.
2 für die Antwort № 2
Eine triviale Art, dies zu tun, besteht darin, einfach eine Matrix von Plots auf Ihrem Plotting-Gerät zu erstellen und jedes zu platzieren ccf
Handlung in eins nach dem anderen:
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])
}
}
Aber wenn Sie ein bisschen warten, kann jemand, der die Zeitreihenpakete vertrauter kennt, mit einer Funktion, die das ein bisschen schöner macht, vorbeischauen.
2 für die Antwort № 3
Probieren Sie das wo M
ist wie in joran's post:
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)