STL w szeregach czasowych z brakującymi wartościami do wykrywania anomalii


12

Próbuję wykryć anomalne wartości w szeregu czasowym danych klimatycznych z pewnymi brakującymi obserwacjami. Przeszukując sieć znalazłem wiele dostępnych podejść. Spośród nich rozkład stl wydaje się atrakcyjny w sensie usunięcia trendów i składników sezonowych i przestudiowania reszty. Czytając STL: sezonowy-Trend rozkładu procedury opartej na Lessów , stlwydaje się być elastyczni w ustalaniu ustawień przypisując zmienności wpływu odstających i możliwych do zastosowania pomimo brakujących wartości. Jednak starając się to zastosować R, z czterema latami obserwacji i zdefiniowaniem wszystkich parametrów zgodnie z http://stat.ethz.ch/R-manual/R-pched/library/stats/html/stl.html , napotykam błąd:

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

Dokładnie sprawdziłem, czy częstotliwość jest poprawnie zdefiniowana. Widziałem odpowiednie pytania na blogach, ale nie znalazłem żadnych sugestii, które mogłyby to rozwiązać. Czy nie można zastosować stlw szeregu z brakującymi wartościami? Bardzo niechętnie je interpoluję, ponieważ nie chcę wprowadzać (a tym samym wykrywać ...) artefaktów. Z tego samego powodu nie wiem, jak wskazane byłoby użycie metod ARIMA zamiast tego (a jeśli brakujące wartości nadal byłyby problemem).

Proszę podzielić się, jeśli znasz sposób na zastosowanie stlw serii z brakującymi wartościami lub jeśli uważasz, że moje wybory nie są metodologicznie uzasadnione, lub jeśli masz lepszą sugestię. Jestem całkiem nowy w tej dziedzinie i przytłoczony przez stosy (pozornie ...) istotnych informacji.


Mam ten sam problem. Metoda STL powinna móc uzupełniać brakujące wartości poprzez LOESS, ale wydaje się, że ta implementacja R tego nie robi.
jf328

Odpowiedzi:


5

Modele ARIMA łatwo uwzględniają zmienne zastępcze, aby radzić sobie z brakującymi wartościami. Są to tak zwane Wskaźniki Pulsów. Metodologia jest prosta i udokumentowana w http://www.unc.edu/~jbhill/tsay.pdf . Zasadniczo metoda wyodrębnia aktualne informacje o szeregach rezydualnych dotyczące pulsów, przesunięć poziomów, sezonowych pulsów i lokalnych trendów czasowych.


dziękuję za sugestię i bardzo interesujący artykuł!
effie

3

Według @Julius w tym poście jest to możliwe do wykorzystania stlz na.approxod zoopakietu, używając stl(x, na.action = na.approx, ...). To robi jakąś interpolację .


0

Możesz również sprawdzić pakiet Hafenastlplus . Szczegóły znajdują się w jego pracy magisterskiej.

Możesz zainstalować go z CRAN za pomocą

install.packages("stlplus")

lub bezpośrednio z github za pomocą

devtools::install_github("hafen/stlplus").
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.