Jak radzić sobie z lukami / danymi NaN w danych szeregów czasowych, gdy używasz Matlaba do autokorelacji i sieci neuronowych?

9

Mam szereg czasowy pomiarów (wysokości-jednowymiarowy szereg). W okresie obserwacji proces pomiaru spadł o kilka punktów czasowych. Tak więc dane wynikowe są wektorem z NaN, w których występują luki w danych. Korzystanie z MATLAB-a powoduje mi problem podczas obliczania autokorelacji ( autocorr) i stosowania sieci neuronowych ( nnstart).

Jak należy sobie radzić z tymi lukami / NaN? Czy powinienem je po prostu usunąć z wektora? Lub zastąpić ich wpis interpolowaną wartością? (jeśli tak, to jak w MATLAB)

Vass
źródło

Odpowiedzi:

4

W ogóle nie dotknęłbym danych. Użyj tego do autokorelacji z NaN:

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

„nie dotykać danych” oznacza, że ​​nie należy usuwać żadnych danych ani przedziałów czasowych lub zastępować 0 lub średnią, naraziłoby to na szwank informacje o zależności liniowej określonego opóźnienia czasowego. Unikałbym również symulacji wartości w lukach, jeśli interesuje Cię autokorelacja „SAMPLE”, w każdym razie nawet najlepsza technika symulacji nie doda więcej informacji na temat autokorelacji, opierając się na samych danych. Częściowo przekodowałem funkcje autokorelacji Matlab (link powyżej) i częściowej autokorelacji, aby poradzić sobie z NaN: wszelkie pary danych, w tym NaN, są wyłączone z obliczeń. Odbywa się to dla każdego opóźnienia. To zadziałało dla mnie. Wszelkie sugestie są dobrze akceptowane.

Fabio
źródło
Witamy @Fabio: Czy mógłbyś podać więcej wyjaśnień na temat „nie dotykać danych”? Czy chcesz coś nie usuwać? Pomogłoby to również wprowadzić treść, do której linkujesz, i wyjaśnić, dlaczego pomaga to PO.
Momo,
Cześć Momo, dzięki za komentarz. „nie dotykać danych” oznacza, że ​​nie należy usuwać żadnych danych ani przedziałów czasowych lub zastępować 0 lub średnią, naraziłoby to na szwank informacje o zależności liniowej określonego opóźnienia czasowego. Częściowo przekodowałem funkcje autokorelacji Matlab (link powyżej) i częściowej autokorelacji, aby poradzić sobie z NaN: wszelkie pary danych, w tym NaN, są wyłączone z obliczeń. Odbywa się to dla każdego opóźnienia. To zadziałało dla mnie. Wszelkie sugestie są dobrze akceptowane.
Fabio
3

Istnieje kilka algorytmów, które są odporne na brakujące wartości, więc preferowanym rozwiązaniem jest ich poszukiwanie (na przykład R acfdla autokorelacji).

Ogólnie rzecz biorąc, sposobem jest albo po prostu odrzucić dane z brakującymi obserwacjami (może być bardzo bolesne), albo po prostu przypisać ich wartości - średnia sąsiadów może wystarczyć do gładkich szeregów i małych przerw, ale oczywiście jest mnóstwo innych potężniejszych metod, z użyciem splajnów, wartości losowych / najczęstszych, imputacji z modeli itp.


źródło
2
Acf z brakującą wartością jest obliczany w normalny sposób, ale brakujące wartości są „pomijane” w sumach (to znaczy, formuła acf dla danego opóźnienia wygląda jak suma podzielona przez sumę, w każdej z tych sum brakujące wartości mogą pominąć). To nie jest to samo, co usunięcie brakujących wartości z oryginalnych danych. Problem z Matlabem polega na tym, że nie pomija NaN, a uwzględnienie tego w obliczeniach zamienia wszystko w NaN.
Zero
1

Użyj funkcji wykrywania interwencji, aby przypisać brakujące wartości wykorzystujące użyteczną strukturę ARIMA oraz wszelkie lokalne trendy czasowe i / lub zmiany poziomów.

IrishStat
źródło
1

są tutaj 2 problemy. pierwszym jest dostarczenie sensownego szkieletu numerycznego dla twojej odpowiedzi autokorelacji w Matlabie. aby tak się stało, musisz rozciągnąć i / lub załatać część szeregów czasowych swoich wektorów danych ... ten element „integralności danych” problemu jest najbardziej fundamentalny.

po drugie, musisz zdecydować, jak obsłużyć komponent „wartości” wektora ... zależy to w dużej mierze od konkretnej aplikacji, co najlepiej założyć (np. małe, brakujące znaczniki czasu i odpowiednie NaNs w przeciwnym razie można bezpiecznie interpolować wartości zerowe od sąsiadów ... w większych odstępach ustawienie wartości zero jest prawdopodobnie bezpieczniejsze ... lub przypisywanie zgodnie z zaleceniami powyżej - oczywiście aby było to znaczące, odstępy ponownie muszą być stosunkowo małe.) .

Chris
źródło