Come determinare la previsibilità delle serie storiche?


10

Una delle questioni importanti che devono affrontare i meteorologi è se la serie data può essere prevista o no?

Mi sono imbattuto in un articolo intitolato " Entropia come indicatore a priori della prevedibilità " di Peter Catt che utilizza l' entropia approssimata (ApEn) come misura relativa per determinare una determinata serie temporale è prevedibile.

L'articolo dice:

"Valori più piccoli di ApEn indicano una maggiore probabilità che un insieme di dati sarà seguito da dati simili (regolarità). Al contrario, un valore più grande di ApEn indica una minore possibilità di ripetizione di dati simili (irregolarità). Pertanto, valori più grandi trasmettono più disordine , casualità e complessità del sistema ".

Ed è seguito da formule matematiche per il calcolo di ApEn. Questo è un approccio interessante perché fornisce un valore numerico che può essere usato per valutare la previdenza in senso relativo. Non so cosa significhi Entropia approssimativa, ne sto leggendo di più.

C'è un pacchetto chiamato pracma in Rche consente di calcolare ApEn. A scopo illustrativo, ho usato 3 diverse serie temporali e ho calcolato i numeri ApEn.

  1. Serie 1: la famosa serie storica AirPassenger - è altamente deterministica e dovremmo essere in grado di prevedere facilmente.
  2. Serie 2: Serie temporali Sunspot - è molto ben definita ma dovrebbe essere meno prevedibile della serie 1.
  3. Serie 3: numero casuale Non è possibile prevedere questa serie.

Quindi, se calcoliamo ApEn, la Serie 1 dovrebbe essere inferiore alla Serie 2 dovrebbe essere molto meno Serie 3.

Di seguito è riportato lo snippet R che calcola ApEn per tutte e tre le serie.

library("pracma")
> series1 <- approx_entropy(AirPassengers)
> series1
[1] 0.5157758
> series2 <- approx_entropy(sunspot.year)
> series2
[1] 0.762243
> series3 <- approx_entropy(rnorm(1:30))
> series3
[1] 0.1529609

Questo non è quello che mi aspettavo. La serie casuale ha un numero inferiore rispetto alla serie AirPassenger ben definita. Anche se aumento il numero casuale a 100, ottengo comunque quanto segue che è inferiore alla serie ben definita serie 2 / Sunspot.yealry.

> series3 <- approx_entropy(rnorm(1:100))
> series3
[1] 0.747275

Di seguito sono le mie domande:

  1. Ci sono 2 parametri nel calcolo di ApEn ( me r)? Come determinarli. Impostazioni predefinite utilizzate nel Rcodice sopra.
  2. Cosa sto facendo in modo errato che sta mostrando in modo errato che ApEn è inferiore per numeri casuali rispetto a una serie ben definita come sunspot.yearly.
  3. Dovrei deseasonalizzare / detrarre la serie e quindi stimare ApEn. L'autore ha comunque applicato ApEn direttamente alla serie.
  4. Esiste un altro modo per determinare se la serie è prevedibile?

Come indicato nell'articolo, l'entropia approssimativa non dovrebbe essere usata su serie temporali brevi, N <200. Ancora più importante, l'articolo utilizza l'entropia campione non l'entropia approssimativa. Pracma contiene entrambi. Grazie

Tiene conto delle variabili esplicative? Ad esempio, se prevedi il logoramento dell'account di un'azienda, potrebbe essere correlato alla spesa per il marketing e la spesa è altamente prevedibile, infatti, è prevista nei prossimi mesi. Come verrebbe considerato questo nell'approccio proposto?
Aksakal,

@Aksakal, no non ci sono variabili esplicative. Stavo cercando previsioni temporali univariate su larga scala (nessuna variabile esplicativa) in cui abbiamo bisogno di una misura obiettiva per valutare le previsioni. Inoltre, in molti casi, la previsione univariata è molto più accurata rispetto ai modelli costruiti con variabili esplicative.
previsioni


1
La mia sensazione è che questa sia una domanda molto più ristretta rispetto al duplicato suggerito. Le votazioni lasciano aperte, ma suggeriscono che l'OP considera un titolo più specifico per evitare di confondere le due cose. Di '"Come determinare la previsione delle serie storiche usando l'entropia approssimativa ?"
Sean Easter,

Risposte:


7

I parametri me r, coinvolti nel calcolo dell'entropia approssimativa (ApEn) delle serie temporali, sono la lunghezza (sequenza) della finestra e la tolleranza (valore del filtro) , di conseguenza. In effetti, in termini di m, rnonché N(numero di punti dati), ApEn è definito come "logaritmo naturale della prevalenza relativa di modelli ripetitivi di lunghezza mrispetto a quelli di lunghezza m + 1" (Balasis, Daglis, Anastasiadis & Eftaxias, 2011 , p. 215):

UNpEn(m,r,N)=Φm(r)-Φm+1(r),

dove 

Φm(r)=ΣiolnCiom(r)/(N-m+1)

Pertanto, sembra che cambiare la tolleranza rconsenta di controllare la granularità (temporale) della determinazione dell'entropia delle serie temporali. Tuttavia, l'utilizzo dei valori predefiniti per entrambi me i rparametri nelle pracmachiamate della funzione entropia del pacchetto funziona correttamente. L'unica correzione che deve essere fatta per vedere la relazione dei valori entropici corretti per tutte e tre le serie temporali (entropia inferiore per serie più ben definite, entropia superiore per più dati casuali) è di aumentare la lunghezza del vettore di dati casuali :

 library(pracma)
 set.seed(10)
 all.series <- list(series1 = AirPassengers,
                    series2 = sunspot.year,
                    series3 = rnorm(500)) # <== size increased
 sapply(all.series, approx_entropy)
  series1   series2   series3 
  0.5157758 0.7622430 1.4741971 

I risultati sono come previsto - la prevedibilità delle fluttuazioni diminuisce da più determinato series1a più casuale series 3, la loro entropia aumenta di conseguenza: ApEn(series1) < ApEn(series2) < ApEn(series3).

Per quanto riguarda le altre misure di previsione , si consiglia di verificare gli errori assoluti in scala media (MASE) - vedere questa discussione per maggiori dettagli. Anche l'analisi delle componenti previsionali sembra essere un approccio nuovo e interessante per determinare la previsione delle serie storiche. E, prevedibilmente, esiste anche un Rpacchetto per questo: ForeCA .

library(ForeCA)
sapply(all.series,
       Omega, spectrum.control = list(method = "wosa"))
 series1   series2   series3 
 41.239218 25.333105  1.171738 

Ω[0,1]Ω(whiotenoioSe)=0%Ω(SionuSoiod)=100%

Riferimenti

Balasis, G., Daglis, IA, Anastasiadis, A. e Eftaxias, K. (2011). Rilevamento di cambiamenti dinamici di complessità nel Dst time sSeries usando concetti di entropia e analisi della scala riscalata. In W. Liu e M. Fujimoto (a cura di), The Dynamic Magnetosphere, IAGA Special Sopron Book, Series 3, 211. doi: 10.1007 / 978-94-007-0501-2_12. Springer. Estratto da http://members.noa.gr/anastasi/papers/B29.pdf

Georg M. Goerg (2013): Analisi dei componenti previsionali. JMLR, W&CP (2) 2013: 64-72. http://machinelearning.wustl.edu/mlpapers/papers/goerg13


Ho anche testato la pracma::sample_entropy()funzione e la relazione dei risultati corretti attraverso le serie temporali vale anche in quello scenario.
Aleksandr Blekh,

@forecaster: prego.
Aleksandr Blekh,

1
Vedi anche questo documento notsoirrational.files.wordpress.com/2015/04/schulz15.pdf che utilizza dati sperimentali per giustificare le loro misure di prevedibilità. Riferisce anche parte del lavoro al lavoro di ForeCA menzionato in questo post
Georg M. Goerg,

@ GeorgM.Goerg: grazie per i suggerimenti, i collegamenti e le modifiche.
Aleksandr Blekh,

@forecaster: piacere mio.
Aleksandr Blekh,

0

Ogni serie temporale è composta da 3 componenti: tendenza, stagionalità e casuale. Se i dati mostrano una forte tendenza e / o sono altamente stagionali, la previsione sarà relativamente semplice. Se i dati sono per lo più casuali, per definizione non è possibile prevedere nulla.

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.