Come misurare la fluidità di una serie temporale in R?


25

C'è un buon modo per misurare la fluidità di una serie temporale in R? Per esempio,

-1, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1.0

è molto più fluido di

-1, 0.8, -0.6, 0.4, -0.2, 0, 0.2, -0.4, 0.6, -0.8, 1.0

sebbene abbiano la stessa media e deviazione standard. Sarebbe bello se ci fosse una funzione che mi dia un punteggio uniforme su una serie temporale.


4
La scorrevolezza ha un significato ben definito nella teoria dei processi stocastici. ("Un variogramma è una descrizione quantitativa, statisticamente, della rugosità di una superficie": goldensoftware.com/variogramTutorial.pdf , p. 16.) La levigatezza è correlata all'estrapolazione del variogramma a distanza zero. (La SD delle differenze successive e l'autocorrelazione lag-one sono versioni veloci e sporche di questo). Le informazioni essenziali sono contenute nei coefficienti della serie di Taylor a 0. Ad esempio, una costante diversa da zero è effettivamente approssimativa; uno zero di ordine superiore a 0 indica una serie molto regolare.
whuber

Ho sentito parlare anche di esponenti di Hurst .
Taylor,

Che strano, mi sono chiesto questa stessa identica cosa. Grazie per la pubblicazione!
Chris Beeley,

@whuber: questa è una risposta, non un commento.
naught101

@ naught101 Mi permetto umilmente di dissentire: il mio commento è a proposito di una situazione correlata e si riferisce solo al processo teorico utilizzato per modellare i dati spaziali, non a come si potrebbe effettivamente stimare quella scorrevolezza. C'è un'arte in quella stima con cui ho familiarità in più dimensioni, ma non in una, che è speciale (a causa della direzione della freccia del tempo), quindi esito a sostenere che applicare le procedure multidimensionali alle serie temporali è affatto approccio convenzionale o addirittura buono.
whuber

Risposte:


22

La deviazione standard delle differenze fornirà una stima approssimativa della scorrevolezza:

x <- c(-1, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1.0)
y <- c(-1, 0.8, -0.6, 0.4, -0.2, 0, 0.2, -0.4, 0.6, -0.8, 1.0)
sd(diff(x))
sd(diff(y))

Aggiornamento: come sottolinea Cyan, questo ti dà una misura dipendente dalla scala. Una misura simile indipendente dalla scala userebbe il coefficiente di variazione anziché la deviazione standard:

sd(diff(x))/abs(mean(diff(x)))
sd(diff(y))/abs(mean(diff(y)))

In entrambi i casi, piccoli valori corrispondono a serie più fluide.


1
Tale punteggio non è invariante per la scala, il che può o meno avere un senso a seconda dell'applicazione. (E il mio suggerimento è invariante per scala, quindi la stessa preoccupazione si applica ad esso.) Inoltre, vale la pena sottolineare che per il punteggio sopra, valori più piccoli indicano serie temporali più fluide.
Ciano

1
Grazie @Cyan. Ora ho aggiunto anche una versione indipendente dalla scala.
Rob Hyndman,

2
Intendi davvero includere diffnei denominatori? I valori si ridurrebbero algebricamente a(x[n]-x[1])/(n-1) quale è una misura (grezza) di tendenza e dovrebbero, in molti casi, essere estremamente vicini allo zero, risultando in una statistica instabile e non terribilmente significativa. Ne sono perplesso, ma forse sto trascurando qualcosa di ovvio ...
whuber

1
ero solito diff per evitare un'assunzione di stazionarietà. Se è stato definito con il denominatore, abs(mean(x))il ridimensionamento funzionerebbe solo quando xera fermo. Prendere diff significa che funzionerà anche per diversi processi stazionari. Naturalmente, le differenze potrebbero non rendere xstazionarie e quindi ci sono ancora problemi. Il ridimensionamento delle serie temporali è complicato per questo motivo. Ma prendo in considerazione la tua stabilità. Penso che fare qualcosa di meglio richiederebbe qualcosa di sostanzialmente più sofisticato, usando ad esempio un dispositivo non parametrico.
Rob Hyndman,

1
Avrei pensato che una tendenza costante dovesse essere perfettamente regolare, quindi la risposta dovrebbe essere 0.
Rob Hyndman,

13

L' autocorrelazione lag-one fungerà da punteggio e avrà anche un'interpretazione statistica ragionevolmente semplice.

cor(x[-length(x)],x[-1])

Interpretazione del punteggio:

  • i punteggi vicini a 1 implicano una serie uniformemente variabile
  • i punteggi vicini a 0 implicano che non esiste una relazione lineare complessiva tra un punto dati e quello successivo (ovvero, trama (x [-length (x)], x [-1]) non darà un diagramma a dispersione con alcuna apparente linearità)
  • i punteggi vicini a -1 suggeriscono che la serie è frastagliata in un modo particolare: se un punto è al di sopra della media, è probabile che il prossimo sia al di sotto della media di circa lo stesso importo e viceversa.

0

Potresti semplicemente controllare la correlazione con il numero del timestep. Ciò equivarrebbe a prendere l'R² di una semplice regressione lineare sulla serie temporale. Si noti, tuttavia, che si tratta di due periodi molto diversi, quindi non so quanto funzioni bene come confronto.


4
Sarebbe una misura della linearità con il tempo, ma non della scorrevolezza.
Rob Hyndman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.