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
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:
- 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?
- 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.
- Co oznaczają komunikaty ostrzegawcze 4 i 5? Czy to oznacza, że nie można wykonać auto.arima przy użyciu skorygowanej serii?
- 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?
- 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?
- Jak kontynuować prognozowanie na podstawie tych danych po zidentyfikowaniu tych wartości odstających?
- 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?
źródło
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:
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.iloop
w funkcjitso
. 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::arima
iforecast: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 .
źródło