Somiglianza statistica delle serie storiche


15

Supponendo che uno abbia una serie temporale da cui si possono prendere varie misure come periodo, massimo, minimo, media ecc. E quindi usarle per creare un'onda sinusoidale modello con gli stessi attributi, ci sono approcci statistici che si possono usare che potrebbero quantificare quanto i dati reali si adattano al modello presunto? Il numero di punti dati nella serie dovrebbe variare tra 10 e 50 punti.

Un mio primo pensiero molto semplicistico è stato attribuire un valore al movimento direzionale dell'onda sinusoidale, ovvero +1 +1 +1 +1 -1 -1 -1 -1 -1 -1 -1 -1 +1 +1 +1 +1, fai lo stesso con i dati effettivi e poi quantifica in qualche modo il grado di somiglianza del movimento direzionale.

Modifica: dopo aver riflettuto maggiormente su ciò che voglio davvero fare con i miei dati e alla luce delle risposte alla mia domanda originale, ciò di cui ho bisogno è un algoritmo decisionale per scegliere tra ipotesi concorrenti: vale a dire che i miei dati sono sostanzialmente lineari (o trend) con rumore che potrebbe eventualmente avere elementi ciclici; i miei dati sono sostanzialmente ciclici senza alcuna tendenza direzionale di cui parlare; i dati sono essenzialmente solo rumore; o sta passando da uno di questi stati all'altro.

I miei pensieri ora sono forse di combinare qualche forma di analisi bayesiana e metrica euclidea / LMS. I passaggi di questo approccio sarebbero

Crea l'onda sinusoidale presunta dalle misurazioni dei dati

Adatta una linea retta LMS ai dati

Deriva una metrica euclidea o LMS per le partenze dai dati originali per ciascuno dei precedenti

Crea un priore bayesiano per ciascuno sulla base di questa metrica, ovvero il 60% delle partenze combinate si collega a uno, il 40% all'altro, quindi favorisce il 40%

fai scorrere una finestra di un punto dati lungo i dati e ripeti quanto sopra per ottenere nuove metriche% per questo set di dati leggermente modificato - questa è la nuova prova - fai l'analisi bayesiana per creare un posteriore e cambiare le probabilità che favoriscono ogni assunzione

ripetere lungo l'intero set di dati (oltre 3000 punti dati) con questa finestra scorrevole (lunghezza della finestra 10-50 punti dati). La speranza / intenzione è quella di identificare l'assunzione predominante / favorita in qualsiasi momento nel set di dati e come questo cambia nel tempo

Qualsiasi commento su questa potenziale metodologia sarebbe il benvenuto, in particolare su come potrei effettivamente implementare la parte di analisi bayesiana.

Risposte:


7

La distanza euclidea è una metrica comune nell'apprendimento automatico. Le seguenti diapositive forniscono una buona panoramica di quest'area insieme a riferimenti:

Vedi anche i riferimenti sulla pagina dei benchmark di Keogh per la classificazione delle serie storiche:


5

Se si dispone di un modello specifico con cui si desidera confrontare: consiglierei i minimi quadrati come metrica per ridurre al minimo e valutare i possibili valori dei parametri rispetto a un set di dati specifico. Tutto quello che devi fare è collegare le stime dei parametri, utilizzarle per generare valori previsti e calcolare la deviazione quadrata media dai valori reali.

Tuttavia, potresti considerare di invertire leggermente la tua domanda: "Quale modello si adatterebbe meglio ai miei dati?" Nel qual caso suggerirei di ipotizzare un termine di errore normalmente distribuito ~ qualcosa che si potrebbe sostenere è simile al presupposto dei minimi quadrati. Quindi, a seconda della scelta del modello, è possibile ipotizzare il modo in cui si ritiene che siano distribuiti gli altri parametri del modello (assegnando un precedente bayesiano) e utilizzare qualcosa come il pacchetto MCMC da R a campionare dalla distribuzione dei parametri. Quindi puoi guardare i mezzi posteriori e le varianze per avere un'idea di quale modello si adatta meglio.


Se avessi due possibili modelli da adattare ai miei dati, l'onda sinusoidale come descritto nella mia domanda originale e un adattamento a linea retta LMS, potrei semplicemente confrontare la deviazione quadrata media dai valori di dati reali dell'onda sinusoidale con i residui del Linea di adattamento LMS e quindi scegliere il modello con il valore complessivo più basso in base al fatto che questo modello mostra un adattamento più accurato ai dati? In tal caso, sarebbe anche valido forse dividere i dati a metà e fare lo stesso con ciascuna metà separatamente, usando la stessa sinusoide / adattamenti LMS per vedere come ciascun modello potrebbe migliorare / peggiorare nel tempo?
babelproofreader,

Non ne sono sicuro. Il mio suggerimento era di usare una metrica dei minimi quadrati, ma non stavo dicendo di eseguire una regressione lineare. È possibile controllare Regressione periodica .
M. Tibbits,

Per quanto riguarda l'altra tua domanda, potresti dimezzare i dati, sarei molto cauto nel farlo, perché raddoppierebbe la frequenza minima che potresti considerare. Penso che potresti finire per dover esaminare i coefficienti di Fourier (prendere un FFT o un DCT e regredire su di essi?!? - Non sono sicuro ). O forse regressione periodica come menzionato sopra.
M. Tibbits,

3

Il tuo "primo pensiero semplicistico" di rappresentare qualitativamente solo il movimento direzionale è simile nello spirito all'algoritmo SAX di Keogh per confrontare le serie temporali. Ti consiglio di dare un'occhiata: Eamonn Keogh e Jessica Lin: SAX .

Dalla tua modifica, sembra che ora stai pensando di affrontare il problema in modo diverso, ma potresti scoprire che SAX fornisce un pezzo del puzzle.


0

Mentre sono un po 'in ritardo alla festa, se stai pensando a qualcosa di sinusoidale, le trasformazioni wavelet sono un buon strumento da avere anche in tasca. In teoria, puoi usare le trasformazioni wavelet per scomporre una sequenza in varie "parti" (ad es. Onde di forme / frequenze diverse, componenti non ondulati come tendenze, ecc.). Una forma specifica di trasformata d'onda che viene usata una tonnellata è la trasformata di Fourier, ma c'è molto lavoro in quest'area. Mi piacerebbe poter consigliare un pacchetto attuale, ma non lavoro sull'analisi del segnale da un po 'di tempo. Ricordo alcuni pacchetti Matlab che supportano funzionalità su questa vena, tuttavia.

Un'altra direzione da seguire se stai solo cercando di trovare tendenze nei dati ciclici è qualcosa come il test Trend Mann-Kendall. È usato molto per cose come rilevare i cambiamenti del tempo o la qualità dell'acqua, che ha forti influenze stagionali. Non ha le campane e i fischi di alcuni approcci più avanzati, ma dal momento che è un test statistico veterano è abbastanza facile da interpretare e riferire.

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.