Jak dopasować model do szeregu czasowego zawierającego wartości odstające

9

Dopasowałem model ARIMA (5,1,2), używając auto.arima()funkcji w R i patrząc na porządek, możemy powiedzieć, że nie jest to najlepszy model do prognozowania. Jeśli w seriach danych występują wartości odstające, jaka jest metoda dopasowania modelu do takich danych?

Anthony
źródło
Czy masz jakieś dane / teorię, które punkty są odstające? Nie możesz po prostu założyć, że „odległe” punkty są wartościami odstającymi, ale jeśli wiesz, że w określonym dniu wydarzyło się coś specjalnego i że to wydarzenie wpłynęłoby na twoje dane, możesz dodać zmienną wskaźnikową do swojego modelu na tę datę. Zobacz komentarz IrishStat poniżej.
Wayne
Jeśli wydarzyło się coś specjalnego w ciągu 1 lub 2 tygodni w tym okresie i wpłynęło to na model, model może być nieprawidłowy. ponieważ nie ma innego powodu, jak zmienność sezonowa, założyłem, że wartości odstające są przyczyną, która wpływa na model.
Anthony

Odpowiedzi:

7

Michael Chernick wskazuje ci właściwy kierunek. Spojrzałbym również na prace Ruey Tsay, które dodały do ​​tego zasobu wiedzy. Zobacz więcej tutaj .

Nie możesz konkurować z dzisiejszymi automatycznymi algorytmami komputerowymi. Analizują wiele sposobów podejścia do szeregów czasowych, których nie wziąłeś pod uwagę i często nie udokumentowano w żadnej pracy ani książce. Gdy ktoś pyta, jak wykonać ANOVA, można oczekiwać precyzyjnej odpowiedzi w porównaniu z różnymi algorytmami. Kiedy zadaje się pytanie, jak mam rozpoznać wzór, możliwych jest wiele odpowiedzi, ponieważ w grę wchodzi heurystyka. Twoje pytanie dotyczy użycia heurystyki.

Najlepszym sposobem dopasowania modelu ARIMA, jeśli w danych występują wartości odstające, jest ocena możliwych stanów natury i wybranie takiego podejścia, które zostanie uznane za optymalne dla określonego zestawu danych. Jednym z możliwych stanów jest to, że proces ARIMA jest głównym źródłem wyjaśnionej zmienności. W takim przypadku można „wstępnie zidentyfikować” proces ARIMA za pomocą funkcji acf / pacf, a następnie zbadać pozostałości pod kątem możliwych wartości odstających. Wartości odstające mogą być impulsami, tj. Zdarzeniami jednorazowymi LUB pulsami sezonowymi, o których świadczą systematyczne wartości odstające z pewną częstotliwością (powiedzmy 12 dla danych miesięcznych). Trzeci typ wartości odstającej ma miejsce, gdy ma ciągły zestaw impulsów, z których każdy ma ten sam znak i wielkość, co nazywa się przesunięciem skokowym lub poziomowym. Po zbadaniu resztek z wstępnego procesu ARIMA można następnie wstępnie dodać zidentyfikowaną empirycznie strukturę deterministyczną, aby utworzyć wstępnie połączony model. Ani jeśli pierwotnym źródłem zmienności jest jeden z 4 rodzajów lub „wartości odstających”, lepiej byłoby służyć przez identyfikację ich ab initio (najpierw), a następnie wykorzystanie reszt z tego „modelu regresji” do identyfikacji struktury stochastycznej (ARIMA) . Teraz te dwie alternatywne strategie stają się nieco bardziej skomplikowane, gdy ma się „problem”, w którym parametry ARIMA zmieniają się w czasie lub wariancja błędu zmienia się w czasie z powodu wielu możliwych przyczyn, na przykład potrzeby ważonych najmniejszych kwadratów lub transformacji mocy takie jak dzienniki / wzajemności itp. Inną komplikacją / szansą jest to, w jaki sposób i kiedy sformułować zasugerowaną przez użytkownika serię predyktorów, aby stworzyć płynnie zintegrowany model obejmujący pamięć, związki przyczynowe i empirycznie zidentyfikowane serie manekinów. Problem ten nasila się, gdy jeden z trendów jest najlepiej modelowany za pomocą serii wskaźników w formie0,0,0,0,1,2,3,4,...lub 1,2,3,4,5,...n i kombinacje serii przesunięć poziomu, takich jak 0,0,0,0,0,0,1,1,1,1,1. Możesz spróbować napisać takie procedury w języku R, ale życie jest krótkie. Z przyjemnością rozwiążę Twój problem i pokażę w tym przypadku, jak działa procedura, prześlij dane lub wyślij je na adres [email protected]


Dodatkowy komentarz po otrzymaniu / analizie danych / danych dziennych dla kursu walutowego / 18 = 765 wartości od 1 stycznia 2007 r

wprowadź opis zdjęcia tutaj

Dane miały acf:

wprowadź opis zdjęcia tutaj

Po zidentyfikowaniu modelu arma formularza (1,1,0)(0,0,0)a pewna liczba wartości odstających acf reszt wskazuje na losowość, ponieważ wartości acf są bardzo małe. AUTOBOX zidentyfikował kilka wartości odstających:

wprowadź opis zdjęcia tutaj

Ostateczny model:

wprowadź opis zdjęcia tutaj

uwzględniono potrzebę augmentacji stabilizacji wariancji a la TSAY, w której zmiany wariancji reszt zostały zidentyfikowane i uwzględnione. Problem z automatycznym uruchomieniem polegał na tym, że stosowana procedura, podobnie jak księgowy, wierzy w dane, a nie kwestionuje dane za pomocą Wykrywania interwencji (inaczej Wykrywanie wartości odstających). Pisałem pełną analizę tutaj .

wprowadź opis zdjęcia tutaj

IrishStat
źródło
@IrishStat: Czy w przyszłości możesz korzystać z opcji formatowania? (poprawny klucz do wstawiania linków to ctrl-l, a nie ctrl-c).
user603
@ user603 Po prostu korzystam z opcji dodawania wykresu. Nie wiem, co masz na myśli przez ctrl-l lub cntrl-c. Być może możesz mi pomóc, skontaktuj się ze mną pod adresem dave / @ / autobox.com, a może możesz przejść / porozmawiać przez to.
IrishStat,
@IrishStat: spójrz tutaj .
user603
@ user603 OK, ale nadal nie wiem, co masz na myśli przez ctrl-l i cntrl-c. Korzystałem z transferu obrazu, w którym mogę wstawić obraz. Po wpisaniu cntrl-g, po prostu pojawia się pusty wyskakujący ekran.
IrishStat,
@IrishStat: jest w porządku - metoda linku jest nawet lepsza niż ctrl-l :). PS: Moim celem było pomóc ci uczynić twoje odpowiedzi / komentarze bardziej atrakcyjnymi, kosmetycznie, ukrywając te długie linki, które przecinają przepływ tekstu. Link wyjaśnia, jak to osiągnąć.
user603
6

Nie ma gotowego do użycia solidnego odpowiednika funkcji arima w R (jeszcze) ; jeśli taki się pojawi, zostanie wymieniony tutaj . Być może alternatywą jest obniżenie wagi tych obserwacji, które są odległe w odniesieniu do prostej reguły wykrywania wartości odstających, ale nie widzę gotowych pakietów do uruchomienia ważonej regresji ARMA. Inną możliwą alternatywą byłoby Winsorize odległych punktów:

#parameters
para     <- list(ar=c(0.6,-0.48), ma=c(-0.22,0.24))
#original series
y1 <- y0 <- arima.sim(n=100, para, sd=sqrt(0.1796)) 
#outliers
out      <- sample(1:100, 20)               
#contaminated series
y1[out]  <- rnorm(20, 10, 1)                
plot( y1, type="l")
lines(y0, col="red")

przykład przypadkowego zanieczyszczenia

#winsorized series
y2      <- rep(NA, length(y1))
a1      <- (y1-median(y1)) / mad(y1)
a2      <- which(abs(a1)>3)
y2[-a2] <- y1[-a2]
for(i in 2:length(y2)){
   if(is.na(y2[i])){ y2[i] <- y2[i-1] }
}       

oczyszczone serie

użytkownik603
źródło
Procedura oparta na regułach działa dla tej serii, ponieważ patrząc na dane szeregów czasowych przez prawie 42 lata, może nie działać w ogóle. Zastanów się nad prostą serią, która ma proces auto-rzutowania, np. 1,9,1,9,,5,9, 1,9,1,9, gdzie siódma wartość jest wyjątkowa LUB na ogół szereg, który ma silną strukturę autoprojektu jakiejś nieznanej postaci LUB szereg, który ma 1,2,1,1,1,2,1,1,1, 2,1,20,1,2,1,2,1,1,1,2,1,2,2,19,2,1,1,2,1,2,1,1,2,2 2,21 miesięczna seria bez impulsów, ALE ma nieokreśloną SEZONOWĄ MANKĘ. Wykrywanie 12, 24 i 36 jako BAD wyrzucałoby dziecko z kąpielą.
IrishStat,
Wszystko, co mówisz, jest prawdą, tj. Dostarczałeś opaskę, która pomogłaby w zranieniu, gdyby 1) seria była stacjonarna, która zakłada między innymi brak przesunięć poziomów, brak trendów i in., Brak struktury ARIMA; oraz 2) seria musi być niesezonowa lub została wcześniej poddana sezonowości; . Z mojego doświadczenia wynika, że ​​takie założenia prawie wcale się nie utrzymują, a użytkownicy ignorują twoje zastrzeżenia, próbując zmagać się z szeregami czasowymi, które mają „niedoskonałości”. Moje komentarze tutaj nie mają być argumentacyjne, ale raczej pouczające (dla niektórych!)
IrishStat
@IrishStat OP zaktualizował swoje pytanie i stwierdził, że nie ma sezonowości.
user603
Czy jesteś Christophe?
IrishStat,
2

Istnieje spora literatura na temat solidnych modeli szeregów czasowych. Martin i Yohai są jednymi z głównych autorów. Ich praca sięga lat osiemdziesiątych. Sam pracowałem nad wykryciem wartości odstających w szeregach czasowych, ale Martin był tak naprawdę jednym z wielu czynników przyczyniających się zarówno do wykrycia wartości odstających, jak i oszacowania parametrów w obecności wartości odstających lub resztek w szeregach czasowych.

  • Oto link do artykułu ankiety na ten temat z listą ponad 100 referencji. Zawiera nawet mój artykuł JASA z 1982 r.
  • Oto praca doktorska z 2000 r. (Pdf), która obejmuje teorię, metody i zastosowania rzetelnej analizy szeregów czasowych i zawiera ładną bibliografię.
  • Oto link do oprogramowania, które zawiera solidne narzędzia do szeregów czasowych.
Michael R. Chernick
źródło
Jakie oprogramowanie jest używane do niezawodnego prognozowania? Czy nadaje się do serii jednowymiarowych?
Anthony
@Anthony To bardzo dobre pytanie. Nie wykonałem żadnego solidnego modelowania szeregów czasowych. wykopany Martin założył firmę Insightful (faktycznie mieli kilka nazwisk), która sprzedawała SPlus. Jestem pewien, że w oprogramowaniu SPlus zawarł solidne metidy. Prawdopodobnie jest teraz wersja w R. Sprawdzę ją. Oto artykuł w Wikipedii, w tym historia SPlus. en.wikipedia.org/wiki/S-PLUS
Michael R. Chernick
@Anthony Oto źródło dostarczone przez Roba Hyndmana na temat tego, co jest dostępne w R w analizie szeregów czasowych. Obejmuje to, co jest w CRAN i obejmuje szeroką gamę metod, w tym niezawodne filtrowanie. cran.r-project.org/web/views/TimeSeries.html
Michael R.
2

czy celem twojego modelu jest prognozowanie lub analiza historii? jeśli nie służy to prognozowaniu, a wiesz, że są to wartości odstające, po prostu dodaj zmienną fikcyjną, która ma wartość 1 w tych datach i 0 w innych datach. w ten sposób pozorne współczynniki zajmą się wartościami odstającymi, a ty będziesz mógł zinterpretować inne współczynniki w modelu.

jeśli chodzi o prognozowanie, musisz zadać sobie dwa pytania: czy te wartości odstające powtórzą się ponownie? jeśli by to zrobili, czy muszę się z nimi rozliczać?

Załóżmy na przykład, że w twoich seriach danych występują wartości odstające, gdy bracia Lehman upadli. jest to wydarzenie, którego oczywiście nie można przewidzieć, ale nie można go po prostu zignorować, ponieważ coś takiego może się wydarzyć w przyszłości. jeśli wrzucisz manekina do wartości odstających, to skutecznie usuniesz niepewność tego zdarzenia z wariancji błędu. twoja prognoza nie docenia ryzyka ogona - być może nie jest to dobre dla zarządzania ryzykiem. jeśli jednak masz opracować wyjściową prognozę sprzedaży, manekin będzie działał, ponieważ nie interesuje Cię ogon, interesują Cię najbardziej prawdopodobne scenariusze - więc nie musisz uwzględniać nieprzewidzianego zdarzenia w tym celu.

Dlatego cel twojego modelu wpływa na sposób radzenia sobie z wartościami odstającymi.

Aksakal
źródło