Funkcja ETS (), jak uniknąć prognozy niezgodnej z danymi historycznymi?

16

Pracuję nad alogorytmem w R, aby zautomatyzować miesięczne obliczanie prognozy. Korzystam między innymi z funkcji ets () z pakietu prognozy do obliczania prognozy. Działa bardzo dobrze.

Niestety, dla niektórych konkretnych szeregów czasowych wynik, który otrzymuję jest dziwny.

Poniżej znajduje się kod, którego używam:

train_ts<- ts(values, frequency=12)
fit2<-ets(train_ts, model="ZZZ", damped=TRUE, alpha=NULL, beta=NULL, gamma=NULL, 
            phi=NULL, additive.only=FALSE, lambda=TRUE, 
            lower=c(0.0001,0.0001,0.0001,0.8),upper=c(0.9999,0.9999,0.9999,0.98), 
            opt.crit=c("lik","amse","mse","sigma","mae"), nmse=3, 
            bounds=c("both","usual","admissible"), ic=c("aicc","aic","bic"),
            restrict=TRUE)  
ets <- forecast(fit2,h=forecasthorizon,method ='ets')   

Poniżej znajduje się odpowiedni zestaw danych historycznych:

 values <- c(27, 27, 7, 24, 39, 40, 24, 45, 36, 37, 31, 47, 16, 24, 6, 21, 
35, 36, 21, 40, 32, 33, 27, 42, 14, 21, 5, 19, 31, 32, 19, 36, 
29, 29, 24, 42, 15, 24, 21)

Tutaj na wykresie zobaczysz dane historyczne (czarny), dopasowaną wartość (zielony) i prognozę (niebieski). Prognoza zdecydowanie nie jest zgodna z dopasowaną wartością.

Czy masz pomysł, jak „związać” forekata, aby był „zgodny” z historyczną sprzedażą? wprowadź opis zdjęcia tutaj

mehdik
źródło
To jedna z najdziwniejszych prognoz, z jaką się zetknąłem ets. Średnia / poziom danych historycznych wynosi około 20, a średnia / poziom prognozy wynosi około 50. Nie wiesz, dlaczego tak się stanie? czy możesz uruchomić podstawowy etsi sprawdzić, czy uzyskasz takie same wyniki?
prezenter
Dziękuję bardzo za poświęcony czas i odpowiedź! Zgadzam się z tym, że ostatni punkt może być postrzegany jako „wartości odstające” (21 vs 7 lub 6 lub 5 w poprzednim roku). Można go wykryć za pomocą przedziału ufności opartego na przeszłych danych i powinien być czysty przed obliczeniem prognoza statystyczna. Ale jeśli założymy, że jest to sprzedaż „normalna”, czy istnieje sposób na uniknięcie tego zachowania poprzez ograniczenie prognozy, a przynajmniej ostrzeżenie, że prognoza jest dwa razy większa niż historia? W takim przypadku nie ma znaczenia granica alfa, beta i gamma. Jeszcze raz bardzo dziękuję za pomoc w tej kwestii!
MehdiK,
Głosowałem za odpowiedzią, teraz zakładam, że możesz zostawić komentarz. W przyszłości zostaw komentarz bezpośrednio pod odpowiedzią, aby osoby, które udzieliły odpowiedzi, zauważyły ​​to. Dzięki
przepowiednia,
ETS i wszystkie jednowymiarowe modele szeregów czasowych zakładają, że przeszłe zachowanie przewiduje przyszłe zachowanie. Jeśli występują jakiekolwiek nieprawidłowe dane, musisz poinformować model, że występuje anomalia. Model nie będzie wiedział, że wartość jest normalna, należy określić w modelu wartość odstającą.
prezenter

Odpowiedzi:

10

Jak zauważył @forecaster, jest to spowodowane wartościami odstającymi na końcu serii. Możesz wyraźnie zobaczyć problem, wykreślając komponent szacowanego poziomu na górze:

plot(forecast(fit2))
lines(fit2$states[,1],col='red')

Zwróć uwagę na wzrost poziomu na końcu serii.

Jednym ze sposobów na zwiększenie odporności modelu na wartości odstające jest zmniejszenie przestrzeni parametrów, aby parametry wygładzania musiały przyjmować mniejsze wartości:

fit2 <- ets(train_ts, upper=c(0.3,0.2,0.2,0.98))  
plot(forecast(fit2))

wprowadź opis zdjęcia tutaj

Rob Hyndman
źródło
jaka jest prognoza :: auto.arima odpowiednik drugiej sugestii dotyczącej postępowania w wartościach odstających?
Brash Equilibrium,
1
W modelach ARIMA możesz radzić sobie z wartościami odstającymi z zmiennymi fikcyjnymi ustawionymi na 1 w problematycznych czasach. Wystarczy użyć argumentu xreg w auto.arima lub Arima.
Rob Hyndman,
6

Jest to podręcznikowy przypadek występowania wartości odstających na końcu serii i jego niezamierzonych konsekwencji. Problem z Twoimi danymi polega na tym, że dwa ostatnie punkty są wartościami odstającymi , możesz chcieć zidentyfikować i traktować wartości odstające przed uruchomieniem algorytmów prognozowania. Później zaktualizuję moją odpowiedź i analizę w zakresie niektórych strategii identyfikowania wartości odstających. Poniżej znajduje się szybka aktualizacja.

Kiedy ponownie uruchamiam ets z usuniętymi dwoma ostatnimi punktami danych, otrzymuję rozsądną prognozę. Patrz poniżej:

values.clean <- c(27, 27, 7, 24, 39, 40, 24, 45, 36, 37, 31, 47, 16, 24, 6, 21, 
                  35, 36, 21, 40, 32, 33, 27, 42, 14, 21, 5, 19, 31, 32, 19, 36, 
                  29, 29, 24, 42, 15)## Last two points removed

train_ts.clean<- ts(values.clean, frequency=12)
fit2.clean<-ets(train_ts.clean)  
ets.f.clean <- forecast(fit2.clean,h=24)
plot(ets.f.clean)

wprowadź opis zdjęcia tutaj

Synoptyk
źródło
5

@Synoptykmasz rację, że ostatnia wartość jest wartością odstającą, ALE okres około 38 (wartość przedostatnia) nie jest wartością odstającą, jeśli weźmiesz pod uwagę trendy i aktywność sezonową. Jest to moment definiujący / uczący do testowania / oceny alternatywnych, solidnych podejść. Jeśli nie zidentyfikujesz i nie skorygujesz anomalii, wówczas wariancja zostanie zawyżona, co spowoduje, że inne przedmioty nie zostaną znalezione. Okres 32 jest również wartością odstającą. Okresy 3,32 i 1 są również wartościami odstającymi. Istnieje szereg istotnych statystycznie trendów dla pierwszych 17 wartości, ale później maleje, począwszy od okresu 18. Tak więc, tak naprawdę, w danych występują dwa trendy. Lekcja, której należy się nauczyć, polega na tym, że proste podejścia, które nie zakładają żadnego trendu lub określonej formy trendu i / lub milcząco zakładają określoną formę procesu autoregresji, muszą zostać poważnie zakwestionowane. W przyszłości dobra prognoza powinna uwzględniać możliwą kontynuację wyjątkowej działalności stwierdzonej w ostatecznym punkcie (okres 39). Wyodrębnienie tego z danych jest niemożliwe.

Jest to prawdopodobnie przydatny model:

wprowadź opis zdjęcia tutajStatystyki ostatecznego modelu są tutaj wprowadź opis zdjęcia tutaj. Wykres Actual / Fit and Forecast jest interesujący, ponieważ podkreśla wyjątkową aktywność.wprowadź opis zdjęcia tutaj

IrishStat
źródło
+1 od twoich odpowiedzi są zawsze pouczające i pouczające. Rozumiem puls i czas, czy ustalone efekty mają charakter wyłącznie deterministyczny?
prezenter
@forecaster Tak ustalone efekty / pulsacje sezonowe są czysto dterministyczne ... podobnie jak pulsacje / zmiany poziomów i lokalne trendy czasowe. Ponadto miesiąc sierpnia (8) nie był znaczący i nie znalazł się na końcowej liście.
IrishStat