Jak interpretować i wykonywać prognozowanie za pomocą pakietu tsoutliers i auto.arima

9

Mam dane miesięczne od 1993 do 2015 roku i chciałbym przeprowadzić prognozę tych danych. Użyłem pakietu tsoutliers do wykrycia wartości odstających, ale nie wiem, jak dalej prognozować z moim zestawem danych.

To jest mój kod:

product.outlier<-tso(product,types=c("AO","LS","TC"))
plot(product.outlier)

To jest mój wynik z pakietu tsoutliers

ARIMA(0,1,0)(0,0,1)[12]                    

Coefficients:
        sma1    LS46    LS51    LS61    TC133   LS181   AO183   AO184   LS185   TC186    TC193    TC200
      0.1700  0.4316  0.6166  0.5793  -0.5127  0.5422  0.5138  0.9264  3.0762  0.5688  -0.4775  -0.4386
s.e.  0.0768  0.1109  0.1105  0.1106   0.1021  0.1120  0.1119  0.1567  0.1918  0.1037   0.1033   0.1040
       LS207    AO237    TC248    AO260    AO266
      0.4228  -0.3815  -0.4082  -0.4830  -0.5183
s.e.  0.1129   0.0782   0.1030   0.0801   0.0805

sigma^2 estimated as 0.01258:  log likelihood=205.91
AIC=-375.83   AICc=-373.08   BIC=-311.19

 Outliers:
    type ind    time coefhat  tstat
1    LS  46 1996:10  0.4316  3.891
2    LS  51 1997:03  0.6166  5.579
3    LS  61 1998:01  0.5793  5.236
4    TC 133 2004:01 -0.5127 -5.019
5    LS 181 2008:01  0.5422  4.841 
6    AO 183 2008:03  0.5138  4.592
7    AO 184 2008:04  0.9264  5.911
8    LS 185 2008:05  3.0762 16.038
9    TC 186 2008:06  0.5688  5.483
10   TC 193 2009:01 -0.4775 -4.624
11   TC 200 2009:08 -0.4386 -4.217
12   LS 207 2010:03  0.4228  3.746
13   AO 237 2012:09 -0.3815 -4.877
14   TC 248 2013:08 -0.4082 -3.965
15   AO 260 2014:08 -0.4830 -6.027
16   AO 266 2015:02 -0.5183 -6.442

To jest moja fabuła

Mam te komunikaty ostrzegawcze.

Warning messages:
1: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval,  :
  stopped when maxit was reached
2: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval,  :
  stopped when maxit was reached
3: In locate.outliers.oloop(y = y, fit = fit, types = types, cval = cval,  :
  stopped when maxit was reached
4: In arima(x, order = c(1, d, 0), xreg = xreg) :
  possible convergence problem: optim gave code = 1
5: In auto.arima(x = c(5.77, 5.79, 5.79, 5.79, 5.79, 5.79, 5.78, 5.78,  :
  Unable to fit final model using maximum likelihood. AIC value approximated

Wątpienie:

  1. Jeśli się nie mylę, pakiet tsoutliers usunie wykryte wartości odstające, a poprzez użycie zestawu danych z usuniętymi wartościami odstającymi, da nam najlepszy model arima odpowiedni dla zestawu danych, czy jest poprawny?
  2. Zestaw danych serii dostosowań jest znacznie obniżany z powodu usunięcia przesunięcia poziomu itp. Nie oznacza to, że jeśli prognozowanie odbywa się na skorygowanych szeregach, wynik prognozy będzie bardzo niedokładny, ponieważ nowsze dane są już ponad 12, a skorygowane dane przesuwają je do około 7-8.
  3. Co oznaczają komunikaty ostrzegawcze 4 i 5? Czy to oznacza, że ​​nie można wykonać auto.arima przy użyciu skorygowanej serii?
  4. Co oznacza [12] w ARIMA (0,1,0) (0,0,1) [12]? Czy to tylko moja częstotliwość / częstotliwość mojego zbioru danych, który ustawiłem na miesięczny? Czy to oznacza również, że moje serie danych są również sezonowe?
  5. Jak wykryć sezonowość w moim zbiorze danych? Od wizualizacji wykresu szeregów czasowych nie widzę żadnego oczywistego trendu, a jeśli użyję funkcji dekompozycji, założę, że istnieje trend sezonowy? Więc czy wierzę tylko temu, co mówią mi tsoutliers, gdzie panuje sezonowość, skoro istnieje MA rzędu 1?
  6. Jak kontynuować prognozowanie na podstawie tych danych po zidentyfikowaniu tych wartości odstających?
  7. Jak włączyć te wartości odstające do innych modeli prognozowania - Wygładzanie wykładnicze, ARIMA, Model Strutural, Losowy spacer, theta? Jestem pewien, że nie mogę usunąć wartości odstających, ponieważ istnieje przesunięcie poziomu, a jeśli wezmę tylko dostosowane dane serii, wartości będą zbyt małe, więc co mam zrobić?

Czy muszę dodawać te wartości odstające jako regresor w pliku auto.arima do prognozowania? Jak to działa?

Przetrząsać
źródło

Odpowiedzi:

5

Te komentarze są za długie ... dlatego „ODPOWIEDŹ”

  1. Mylisz się, że nie dostosowuje, a następnie identyfikuje ARIMA (podobnie jak AUTOBOX). Przypuszczalnie zakłada brak korekty interwencji, a następnie dąży do zidentyfikowania modelu ARIMA, na który potencjalnie może mieć wpływ nieleczenie anomalii. Często trzeba skorygować zarówno dla określonych przez użytkownika szeregów przyczynowych i / lub nieokreślonej struktury deterministycznej (wartości odstające / zmiany poziomu, pulsacje sezonowe, trendy czasu lokalnego) przed zidentyfikowaniem struktury ARIMA. Zobacz przykład słabej godności, który popełnił błąd polegający na niepotrzebnym różnicowaniu oryginalnej serii, podczas gdy prawdziwy / prawidłowy stan natury nie wymaga żadnego różnicowania. Niestacjonarność niekoniecznie oznacza potrzebę różnicowania, ale często może sugerować pozbawienie znaczenia dostosowania dla zmiany poziomu / średniej

  2. Prawidłowe prognozowanie zawsze odbywa się na podstawie oryginalnej serii, dlatego prognoza powinna być wiarygodna, biorąc pod uwagę historię.

  3. Nie mam pojęcia, ponieważ nie używam aktywnie tej procedury. Poleciłem Ci to, ponieważ poprosiłeś o bezpłatne rozwiązania oparte na R, NIE dlatego, że myślałem, że jest dobry lub wystarczający, ponieważ modelowanie ARIMA jest iteracyjnym (wieloetapowym) procesem samokontroli.

  4. model sugeruje, że uważa, że ​​dane mają składową sezonową ma (12), ALE może to być po prostu odzwierciedlenie zapotrzebowania na puls sezonowy.

  5. koncepcja trendu sezonowego jest w najlepszym razie niejasna.

  6. Moja odpowiedź byłaby zbyt oczywista i wymuszona

IrishStat
źródło
1
tu bardzo much @ricardo
IrishStat
4

Pakiet „tsoutliers” realizuje procedurę opisaną przez Chen i Liu (1993) [1]. Opis opakowania i procedury podano również w tym dokumencie .

Pokrótce, procedura składa się z dwóch głównych etapów:

  1. Wykrywanie wartości odstających na wybranym modelu ARIMA.
  2. Wybierz i / lub zamontuj model ARIMA, w tym wartości odstające wykryte w poprzednim kroku, i usuń te wartości odstające, które nie są znaczące w nowym dopasowaniu.

Szereg jest następnie dostosowywany do wykrytych wartości odstających, a etapy (1) i (2) są powtarzane, dopóki nie zostaną wykryte żadne wartości odstające lub do osiągnięcia maksymalnej liczby iteracji.


Pierwszy etap (wykrywanie wartości odstających) jest również procesem iteracyjnym. Pod koniec każdej iteracji resztki z modelu ARIMA są korygowane o wartości odstające wykryte na tym etapie. Proces powtarza się, dopóki nie zostaną znalezione żadne wartości odstające lub do osiągnięcia maksymalnej liczby iteracji (domyślnie 4 iteracje). Pierwsze trzy ostrzeżenia, które otrzymujesz, odnoszą się do tej wewnętrznej pętli, tzn. Etap opuszcza się po czterech iteracjach.

Możesz zwiększyć tę maksymalną liczbę iteracji poprzez argument maxit.iloopw funkcji tso. Wskazane jest, aby nie ustawiać dużej liczby iteracji w pierwszym etapie i pozwolić procesowi przejść do drugiego etapu, w którym model ARIMA jest ponownie montowany lub wybierany ponownie.


Ostrzeżenia 4 i 5 dotyczą procesu dopasowywania modelu ARIMA i wyboru modelu odpowiednio dla funkcji stats::arimai forecast:auto.arima. Algorytm maksymalizujący funkcję prawdopodobieństwa nie zawsze jest zbieżny z rozwiązaniem. Możesz znaleźć pewne szczegóły związane z tymi problemami, na przykład w tym poście i tym poście


[1] Chung Chen i Lon-Mu Liu (1993) „Joint Estimation of Model Parameters and Outlier Effects in Time Series”, Journal of American Statistics Association , 88 (421), s. 284–297. DOI: 10.1080 / 01621459.1993.10594321 .

javlacalle
źródło
ile czasu zajmie uruchomienie tso ()?
Anoop Toffy,
@AnoopToffy zależy od długości danych, częstotliwości, itp. W przypadku danych rocznych, miesięcznych, kwartalnych, wielkości próby około 120 obserwacji i dynamiki, którą można rozsądnie zarejestrować w modelu ARIMA, algorytm będzie działał co najwyżej około 10 sekund (zwykle znacznie mniej).
javlacalle