Considera una serie temporale semplice:
> tp <- seq_len(10)
> tp
[1] 1 2 3 4 5 6 7 8 9 10
possiamo calcolare una matrice di adiacenza per questa serie temporale che rappresenta i collegamenti temporali tra i campioni. Nel calcolare questa matrice aggiungiamo un sito immaginario al tempo 0 e il collegamento tra questa osservazione e la prima osservazione effettiva al tempo 1 è noto come collegamento 0. Tra il tempo 1 e il tempo 2, il collegamento è il collegamento 1 e così via. Poiché il tempo è un processo direzionale, i siti sono collegati a (interessati da) collegamenti "a monte" del sito. Quindi ogni sito è collegato al collegamento 0, ma il collegamento 9 è collegato solo al sito 10; si verifica temporaneamente dopo ogni sito tranne il sito 10. La matrice di adiacenza così definita viene creata come segue:
> 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
L'SVD fornisce una decomposizione di questa matrice in funzioni autonome di variazione come diverse scale temporali. La figura seguente mostra le funzioni estratte (da SVD$u
)
> SVD <- svd(adjmat, nu = length(tp), nv = 0)
Le autofunzioni sono componenti periodiche a varie scale temporali. Provare tp <- seq_len(25)
(o più a lungo) mostra questo meglio dell'esempio più breve che ho mostrato sopra.
Questo tipo di analisi ha un nome proprio nelle statistiche? Sembra simile all'analisi dello spettro singolare, ma è una scomposizione di una serie temporale incorporata (una matrice le cui colonne sono versioni ritardate delle serie temporali).
Background: mi è venuta questa idea modificando un'idea dell'ecologia spaziale chiamata Asigenetric Eigenvector Maps (AEM) che considera un processo spaziale con direzione nota e forma una matrice di adiacenza tra una matrice spaziale di campioni che contiene 1s in cui un campione può essere collegato a un collegamento e uno 0 dove non può, sotto il vincolo che i collegamenti possono essere collegati solo "a valle", da cui la natura asimmetrica dell'analisi. Ciò che ho descritto sopra è una versione monodimensionale del metodo AEM. Una ristampa del metodo AEM può essere trovata qui se sei interessato.
La figura è stata prodotta con:
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)