Betrachten Sie eine einfache Zeitreihe:
> tp <- seq_len(10)
> tp
[1] 1 2 3 4 5 6 7 8 9 10
Für diese Zeitreihe können wir eine Adjazenzmatrix berechnen, die die zeitlichen Verknüpfungen zwischen Stichproben darstellt. Bei der Berechnung dieser Matrix wird zum Zeitpunkt 0 eine imaginäre Stelle hinzugefügt, und die Verknüpfung zwischen dieser Beobachtung und der ersten tatsächlichen Beobachtung zum Zeitpunkt 1 wird als Verknüpfung 0 bezeichnet. Zwischen dem Zeitpunkt 1 und dem Zeitpunkt 2 ist die Verknüpfung 1 und so weiter. Da es sich bei der Zeit um einen Richtungsprozess handelt, sind Websites mit Links verbunden, die der Website "vorgelagert" sind (von ihnen betroffen sind). Daher ist jede Site mit Link 0 verbunden, während Link 9 nur mit Site 10 verbunden ist. Sie tritt vorübergehend nach jedem Standort mit Ausnahme von Standort 10 auf. Die so definierte Adjazenzmatrix wird wie folgt erstellt:
> adjmat <- matrix(0, ncol = length(tp), nrow = length(tp))
> adjmat[lower.tri(adjmat, diag = TRUE)] <- 1
> rownames(adjmat) <- paste("Site", seq_along(tp))
> colnames(adjmat) <- paste("Link", seq_along(tp)-1)
> adjmat
Link 0 Link 1 Link 2 Link 3 Link 4 Link 5 Link 6 Link 7
Site 1 1 0 0 0 0 0 0 0
Site 2 1 1 0 0 0 0 0 0
Site 3 1 1 1 0 0 0 0 0
Site 4 1 1 1 1 0 0 0 0
Site 5 1 1 1 1 1 0 0 0
Site 6 1 1 1 1 1 1 0 0
Site 7 1 1 1 1 1 1 1 0
Site 8 1 1 1 1 1 1 1 1
Site 9 1 1 1 1 1 1 1 1
Site 10 1 1 1 1 1 1 1 1
Link 8 Link 9
Site 1 0 0
Site 2 0 0
Site 3 0 0
Site 4 0 0
Site 5 0 0
Site 6 0 0
Site 7 0 0
Site 8 0 0
Site 9 1 0
Site 10 1 1
Die SVD liefert eine Zerlegung dieser Matrix in Eigenfunktionen der Variation als unterschiedliche Zeitskalen. Die folgende Abbildung zeigt die extrahierten Funktionen (von SVD$u
)
> SVD <- svd(adjmat, nu = length(tp), nv = 0)
Die Eigenfunktionen sind periodische Komponenten auf verschiedenen Zeitskalen. Versuche tp <- seq_len(25)
(oder längere) zeigen dies besser als das kürzere Beispiel, das ich oben gezeigt habe.
Hat diese Art der Analyse in der Statistik einen richtigen Namen? Es klingt ähnlich wie Singular Spectrum Analysis , ist jedoch eine Zerlegung einer eingebetteten Zeitreihe (einer Matrix, deren Spalten Versionen der Zeitreihen mit Verzögerung sind).
Hintergrund: Ich bin auf diese Idee gekommen, indem ich eine Idee aus der Raumökologie modifiziert habe, die Asymmetrische Eigenvektorkarten (Asymmetric Eigenvector Maps, AEM) genannt wird. Dabei wird ein räumlicher Prozess mit bekannter Richtung betrachtet und eine Adjazenzmatrix zwischen einer räumlichen Anordnung von Abtastwerten gebildet, die Einsen enthält, mit denen ein Abtastwert verbunden werden kann zu einem Link und einer 0, wo dies nicht möglich ist, unter der Bedingung, dass Links nur "nachgeschaltet" verbunden werden können - daher die asymmetrische Natur der Analyse. Was ich oben beschrieben habe, ist eine eindimensionale Version der AEM-Methode. Bei Interesse finden Sie hier einen Nachdruck der AEM-Methode .
Die Figur wurde hergestellt mit:
layout(matrix(1:12, ncol = 3, nrow = 4))
op <- par(mar = c(3,4,1,1))
apply(SVD$u, 2, function(x, t) plot(t, x, type = "l", xlab = "", ylab = ""),
t = tp)
par(op)
layout(1)