Come gestire le lacune / NaN nei dati delle serie temporali quando si utilizza Matlab per autocorrelazione e reti neurali?


9

Ho una serie temporale di misurazioni (altezze-una serie dimensionale). Nel periodo di osservazione, il processo di misurazione è andato giù per alcuni punti temporali. Quindi i dati risultanti sono un vettore con NaN in cui vi erano lacune nei dati. Usando MATLAB, questo mi sta causando un problema durante il calcolo dell'autocorrelazione ( autocorr) e l'applicazione delle reti neurali ( nnstart).

Come dovrebbero essere gestiti questi gap / NaN? Devo semplicemente rimuoverli dal vettore? O sostituire la loro voce con un valore interpolato? (se sì, come in MATLAB)

Risposte:


4

Non toccherei affatto i dati. Utilizzare questo per autocorrelazione con NaN:

http://www.mathworks.com/matlabcentral/fileexchange/43840-autocorrelation-and-partial-autocorrelation-with-nans/content/nanautocorr.m

"non toccare i dati" significa non rimuovere alcun dato o fase temporale o sostituirlo con 0 o la media, comprometterebbe le informazioni sulla dipendenza lineare specifica del ritardo. Eviterei anche di simulare i valori nelle lacune, se sei interessato all'autocorrelazione "SAMPLE", comunque anche la migliore tecnica di simulazione non aggiungerà ulteriori informazioni sull'autocorrelazione, basandosi sui dati stessi. Ho parzialmente ricodificato le funzioni di autocorrelazione e autocorrelazione parziale di matlab (link sopra) per gestire le NaN: qualsiasi coppia di dati, comprese le NaN, è esclusa dal calcolo. Questo viene fatto per ogni ritardo. Ha funzionato per me. Qualsiasi suggerimento è ben accetto.


Benvenuto @Fabio: Potresti per favore fornire ulteriori spiegazioni su cosa intendi con "non toccare i dati"? Intendi non rimuovere nulla? Sarebbe inoltre utile introdurre il contenuto a cui si è collegati e spiegare perché ciò aiuta l'OP.
Momo,

Ciao Momo, grazie per il commento. "non toccare i dati" significa non rimuovere alcun dato o fase temporale o sostituirlo con 0 o la media, comprometterebbe le informazioni sulla dipendenza lineare specifica del ritardo. Ho parzialmente ricodificato le funzioni di autocorrelazione e autocorrelazione parziale di matlab (link sopra) per gestire le NaN: qualsiasi coppia di dati, comprese le NaN, è esclusa dal calcolo. Questo viene fatto per ogni ritardo. Ha funzionato per me. Qualsiasi suggerimento è ben accetto.
Fabio,

3

Esistono alcuni algoritmi che sono immuni ai valori mancanti, quindi la soluzione preferita è cercarli (ad esempio R acfper l'autocorrelazione).

In generale, la strada da percorrere è o semplicemente scartare i dati con osservazioni mancanti (potrebbe essere molto doloroso) o semplicemente imputare i loro valori - la media dei vicini potrebbe essere sufficiente per serie fluide e piccole lacune, ma ci sono ovviamente pletora di altri metodi più potenti, usando spline, valori casuali / più frequenti, imputazione da modelli, ecc.


2
L'acf con valore mancante viene calcolato in modo normale, ma i valori mancanti vengono "saltati" nelle somme (ovvero, la formula acf per un dato ritardo appare come una somma divisa per una somma, in ciascuna di quelle somme i valori mancanti possono essere saltato). Ciò non equivale a rimuovere i valori mancanti dai dati originali. Il problema con matlab è che non salta NaN e includerlo nel calcolo trasforma tutto in NaN.
Zero,

1

Utilizzare il Rilevamento intervento per imputare i valori mancanti sfruttando l'utile struttura ARIMA ed eventuali andamenti dell'ora locale e / o spostamenti di livello.


1

ci sono 2 problemi qui. il primo è fornire un quadro numerico significativo per la risposta di autocorrelazione in matlab. perché ciò accada, è necessario allungare e / o patchare la parte delle serie temporali dei vettori di dati ... questo componente di "integrità dei dati" del problema è il più fondamentale.

in secondo luogo, devi decidere come gestire il componente "valore" del tuo vettore ... questo dipende in larga misura dalla particolare applicazione per ciò che è meglio assumere, (ad es. piccoli timestamp mancanti e i corrispondenti NaN o Nulls potrebbe essere interpolato in modo sicuro dai suoi vicini ... in spazi più ampi, impostare il valore su zero è probabilmente più sicuro ... o imputare come raccomandato sopra - ovviamente, per essere significativo, gli spazi devono essere relativamente piccoli.) .

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.