STL su serie temporali con valori mancanti per il rilevamento di anomalie


12

Sto cercando di rilevare valori anomali in una serie temporale di dati climatici con alcune osservazioni mancanti. Cercando sul web ho trovato molti approcci disponibili. Di questi, la decomposizione stl sembra allettante, nel senso di rimuovere la tendenza e le componenti stagionali e studiare il resto. La lettura di STL: una procedura di decomposizione delle tendenze stagionali basata su Loess , stlsembra essere flessibile nel determinare le impostazioni per l'assegnazione della variabilità, non influenzata dai valori anomali e possibile applicare nonostante i valori mancanti. Tuttavia, provando ad applicarlo in R, con quattro anni di osservazioni e definendo tutti i parametri secondo http://stat.ethz.ch/R-manual/R-patched/library/stats/html/stl.html , incontro errore:

"time series contains internal NAs"(quando na.action=na.omit) e
"series is not periodic or has less than two periods"(quando na.action=na.exclude).

Ho verificato due volte che la frequenza sia definita correttamente. Ho visto domande pertinenti nei blog, ma non ho trovato alcun suggerimento che potesse risolverlo. Non è possibile applicare stlin una serie con valori mancanti? Sono molto riluttante ad interpolarli, poiché non voglio introdurre (e conseguentemente rilevare ...) artefatti. Per lo stesso motivo, non so quanto sia consigliabile utilizzare invece gli approcci ARIMA (e se i valori mancanti sarebbero comunque un problema).

Per favore condividi se conosci un modo per candidarti stlin una serie con valori mancanti, o se ritieni che le mie scelte non siano metodologicamente valide o se hai qualche suggerimento migliore. Sono abbastanza nuovo nel settore e sopraffatto dai cumuli di informazioni (apparentemente ...) rilevanti.


Sto avendo lo stesso problema. Il metodo STL dovrebbe essere in grado di compilare semplicemente i valori mancanti tramite LOESS, ma questa implementazione R non sembra farlo.
jf328,

Risposte:


5

I modelli ARIMA incorporano facilmente variabili fittizie per gestire i valori mancanti. Questi sono chiamati Indicatori di impulsi. La metodologia è semplice e documentata in http://www.unc.edu/~jbhill/tsay.pdf . In generale, il metodo estrae dalle informazioni sulla serie residua corrente relative a impulsi, spostamenti di livello, impulsi stagionali e andamenti dell'ora locale.


grazie per il suggerimento e l'articolo molto interessante!
effie

3

Secondo @Julius in questo messaggio è possibile utilizzare stlcon na.approx, dalla zooconfezione, usando stl(x, na.action = na.approx, ...). Questo fa una sorta di interpolazione .


0

Potresti anche voler controllare il stlpluspacchetto di Hafen . I dettagli sono nella sua tesi.

Puoi installarlo da CRAN con

install.packages("stlplus")

o direttamente da github con

devtools::install_github("hafen/stlplus").
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.