Test di stabilità in una serie temporale


9

Esiste un metodo standard (o migliore) per i test quando una determinata serie temporale si è stabilizzata?


Qualche motivazione

Ho un sistema dinamico stocastico che genera un valore ad ogni passaggio . Questo sistema ha un comportamento transitorio fino al passo temporale e quindi si stabilizza attorno ad un valore medio con qualche errore. Nessuno di , o l'errore mi è noto. Sono disposto a fare alcune ipotesi (come l'errore gaussiano intorno a t N t x t x x x 0 0 x x xttNtxtxxper esempio) ma meno ipotesi a priori ho bisogno, meglio è. L'unica cosa che so per certo è che c'è solo un punto stabile verso cui converge il sistema e che le fluttuazioni attorno al punto stabile sono molto più piccole delle fluttuazioni durante il periodo transitorio. Anche il processo è monotonico-ish, posso supporre che inizi vicino a e salga verso (forse superando un po 'prima di stabilizzarsi attorno a ).x00xx

I dati verranno da una simulazione e ho bisogno del test di stabilità come condizione di arresto per la mia simulazione (poiché sono interessato solo al periodo transitorio).xt

Domanda precisa

Dato solo l'accesso al valore temporale per alcune finite , esiste un metodo per dire con ragionevole precisione che il sistema dinamico stocastico si è stabilizzato attorno ad un punto ? Punti bonus se il test restituisce anche , e l'errore attorno a . Tuttavia, ciò non è essenziale poiché esistono modi semplici per capirlo dopo che la simulazione è terminata. T x x t x x0...xTTxxtx


Approccio ingenuo

L'approccio naive che prima viene in mente (che ho visto usati come condizioni di vittoria per alcune reti neurali, per esempio) è quello di scegliere i parametri e , poi, se per l'ultima Timesteps non ci sono due punti e tale che quindi concludiamo che ci siamo stabilizzati. Questo approccio è semplice, ma non molto rigoroso. Mi costringe anche a indovinare quali dovrebbero essere i buoni valori di edE T x x x - x > E T ETETxxxx>ETE

Sembra che ci dovrebbe essere un approccio migliore che guarda indietro a un certo numero di passaggi in passato (o forse in qualche modo sconta i vecchi dati), calcola l'errore standard da questi dati e quindi verifica se per qualche altro numero di passaggi (o un altro schema di attualizzazione) le serie temporali non sono state al di fuori di questo intervallo di errori. Ho incluso una strategia un po 'meno ingenua ma ancora semplice come risposta .


Qualsiasi aiuto o riferimenti a tecniche standard sono apprezzati.

Appunti

Ho anche inviato questa domanda così com'è a MetaOptimize e in una descrizione più simulata alla scienza computazionale .


Hai trovato una soluzione chiara? Sono interessato alla stessa domanda ma tutte le risposte non sono convincenti.
Herman Toothrot,

1
@ user4050 purtroppo no. Penso che in realtà sia una domanda molto ampia e ci sono molte tecniche che sono migliori in alcuni settori e peggiori in altri.
Artem Kaznatcheev,

Risposte:


6

Questa breve osservazione è lungi dall'essere una risposta completa, solo alcuni suggerimenti:

  • se hai due periodi di tempo in cui il comportamento è diverso, per diverso intendo sia differenze nei parametri del modello (non rilevanti in questa situazione particolare), media o varianza o qualsiasi altra caratteristica prevista dell'oggetto serie ( nel tuo caso) , puoi provare tutti i metodi che stimano il tempo (intervallo) di cambiamento strutturale (o epidemico) .xt
  • In R c'è una strucchange libreria per i cambiamenti strutturali nei modelli di regressione lineare. Sebbene sia utilizzato principalmente per testare e monitorare i cambiamenti nei parametri di regressione lineare, alcune statistiche potrebbero essere utilizzate per cambiamenti strutturali generali nelle serie temporali.

L'assenza di eventuali variazioni anomale / di cambiamento di livello / tendenza E la mancata contabilizzazione della correlazione seriale di qualsiasi ritardo nei residui del modello sono ingredienti che spesso causano l'applicazione errata dei test F standard, quindi è necessario prestare attenzione (come suggerito!).
IrishStat,

@IrishStat, come puoi vedere dal mio post, non sto suggerendo di usare il modello di regressione lineare, ho appena notato che potrebbe avere una forma simile di statistica (CUMSUM o qualsiasi altra cosa, poiché quest'ultimo è applicato ai residui del modello, che chiaramente sono oggetti di serie temporali) con (probabilmente) diverse distribuzioni limitanti che tengono conto dell'autocorrelazione (testabile) e che se lo si desidera è possibile effettuare aggiustamenti anomali (anche verificabili) prima di ulteriori test. È solo l'unica libreria R che conosco che funziona con cambiamenti strutturali.
Dmitrij Celov,

Sto iniziando a gradire questa risposta sempre di più. Hai un suggerimento per un buon riferimento (preferibilmente un documento di indagine recente) per alcuni metodi comuni per stimare il tempo di cambiamento strutturale?
Artem Kaznatcheev,

4

Mentre leggo la tua domanda "e le fluttuazioni attorno al punto stabile sono molto più piccole delle fluttuazioni durante il periodo transitorio" ciò che ne ricavo è una richiesta per rilevare quando e se la varianza degli errori è cambiata e se sì quando! Se questo è il tuo obiettivo, potresti prendere in considerazione la revisione dell'opera o "valori anomali, cambiamenti di livello e variazioni di varianza nelle serie temporali" di R. Tsay, Journal of Forecasting Vol 7, 1-20 (1988). Ho svolto un lavoro considerevole in questo settore e lo trovo molto produttivo nel fornire una buona analisi. Altri approcci (ols / analisi di regressione lineare per esempio) che assumono osservazioni indipendenti e nessun impulso anomalo e / o nessun cambiamento di livello o andamento del tempo locale e parametri invarianti nel tempo sono insufficienti secondo me.


1

Pensavo di più alla domanda e pensavo che avrei dato un leggero miglioramento dell'approccio ingenuo come risposta nella speranza che le persone conoscessero ulteriori idee nella direzione. Inoltre ci consente di eliminare la necessità di conoscere le dimensioni delle fluttuazioni.


Il modo più semplice per implementarlo è con due parametri . Lasciate essere il cambiamento nelle serie temporali tra il passo temporale e . Quando la serie è stabile attorno a , fluttuerà intorno allo zero con qualche errore standard. Qui assumeremo che questo errore sia normale.y t = x t + 1 - x t t t + 1 x y(T,α)yt=xt+1xttt+1xy

Prendi gli ultimi , e adatta un gaussiano con sicurezza usando una funzione come la norma di Matlab . L'adattamento ci darà una media con errore di confidenza sulla media e una deviazione standard con corrispondente errore . Se , puoi accettare. Se vuoi essere più sicuro, puoi anche rinormalizzare gli con il hai trovato (in modo da avere ora la deviazione standard ) e testare con Kolmogorov-Smirnovy t α μ α E μ σ E σ 0 ( μ - E μ , μ + E μ ) y t σ 1 αTytαμαEμσEσ0(μEμ,μ+Eμ)ytσ1test a livello di confidenza .α


Il vantaggio di questo metodo è che, diversamente dall'approccio ingenuo, non è più necessario sapere nulla sull'entità delle fluttuazioni termiche attorno alla media. Il limite è che hai ancora un parametro arbitrario e abbiamo dovuto assumere una distribuzione normale sul rumore (che non è irragionevole). Non sono sicuro se questo può essere modificato da una media ponderata con l'attualizzazione. Se si prevede che una diversa distribuzione modellerà il rumore, allora normfit e il test di Kolmogorov-Smirnov dovrebbero essere sostituiti dai loro equivalenti per quella distribuzione.T


0

Si potrebbe prendere in considerazione il test all'indietro (con una finestra mobile) per la co-integrazione tra xe la media a lungo termine.

Quando si xsta floppando intorno alla media, si spera che il test Dickey Fuller potenziato con finestra, o qualunque sia il test di co-integrazione che scegli, ti dirà che le due serie sono co-integrate. Una volta entrato nel periodo di transizione, in cui le due serie si allontanano l'una dall'altra, speriamo che il tuo test ti dirà che le serie con finestre non sono co-integrate.

Il problema con questo schema è che è più difficile rilevare la co-integrazione in una finestra più piccola. E una finestra troppo grande, se include solo un piccolo segmento del periodo di transizione, ti dirà che la serie con finestre è co-integrata quando non dovrebbe. E, come puoi immaginare, non c'è modo di sapere in anticipo quale potrebbe essere la dimensione della finestra "giusta".

Tutto quello che posso dire è che dovrai giocarci per vedere se ottieni risultati ragionevoli.


0

Durante l'esecuzione della simulazione, dividere prende gli ultimi 2N punti segmentandoli nella prima e nella seconda metà. Calcola la serie di modifiche (il valore di ) per la metrica di interesse per ogni metà. Prova la distribuzione di questi due gruppi di delta per la stazionarietà. Il modo più semplice per farlo è calcolare il cdf di ogni distribuzione, etichettando quello recente come "osservato" e quello precedente come "previsto". Quindi esegui il test chi-quadrato di Pearson per il valore della tua metrica ad ogni decile.mt+1mt


0

A parte l'ovvia soluzione del filtro Kalman, è possibile utilizzare le decomposizioni wavelet e ottenere uno spettro di potenza localizzato tempo e frequenza. Questo soddisfa il tuo desiderio senza ipotesi, ma sfortunatamente non ti dà una prova formale di quando il sistema si sistema. Ma, per un'applicazione pratica, va bene; basta guardare il momento in cui l'energia nelle alte frequenze muore e quando i coefficienti wavelet del padre si stabilizzano.


non è solo un problema, dal momento che non devo testare quando la serie temporale del coefficiente wavelet del padre si stabilizza? O esiste un metodo standard per questa particolare serie storica? Qual è l'ovvia soluzione di filtro Kalman?
Artem Kaznatcheev,

@ArtemKaznatcheev Perché non riesci a guardare solo un diagramma della serie di coefficienti? Stavo cercando di offrire una soluzione che non aderisse al tuo desiderio di testare, ma come un compromesso era senza molte ipotesi.
user2763361
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.