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żą?
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ć podstawowyets
i sprawdzić, czy uzyskasz takie same wyniki?Odpowiedzi:
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:
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:
źródło
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:
źródło
@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:
Statystyki ostatecznego modelu są tutaj . Wykres Actual / Fit and Forecast jest interesujący, ponieważ podkreśla wyjątkową aktywność.
źródło