Jeśli celem twojego modelu jest przewidywanie i prognozowanie, to krótka odpowiedź brzmi TAK, ale stacjonarność nie musi być na poziomach.
Wytłumaczę. Jeśli sprowadzasz prognozowanie do jego najbardziej podstawowej formy, będzie to ekstrakcja niezmiennika. Zastanów się: nie możesz przewidzieć, co się zmieni. Jeśli powiem wam, że jutro będzie inne niż dziś pod każdym możliwym do wyobrażenia aspektem , nie będziecie w stanie stworzyć żadnego rodzaju prognozy .
Tylko wtedy, gdy jesteś w stanie przedłużyć coś od dzisiaj do jutra, możesz stworzyć jakąkolwiek prognozę. Dam ci kilka przykładów.
- Wiesz, że rozkład średniej jutrzejszej temperatury będzie mniej więcej taki sam jak dzisiaj . W tym przypadku można wziąć dzisiejszą temperaturę jako przewidywania na jutro, prognozę naiwny x t + 1 =x^t + 1= xt
- Obserwujesz samochód w odległości 10 mil na drodze jadącej z prędkością mph. Za minutę będzie to prawdopodobnie około 11 lub 9 mili. Jeśli wiesz, że jedzie w kierunku 11 mili, to będzie to około 11 mili, biorąc pod uwagę, że jego prędkość i kierunek są stałe . Pamiętaj, że lokalizacja nie jest tutaj stacjonarna, a jedynie prędkość. Pod tym względem jest analogiczny do modelu różnicowego, takiego jak ARIMA (p, 1, q) lub modelu stałego trendu, takiego jak x t ∼ v tv = 60xt∼ v t
- Twój sąsiad jest pijany w każdy piątek. Czy on będzie pijany w następny piątek? Tak, o ile nie zmieni swojego zachowania
- i tak dalej
W każdym przypadku rozsądnej prognozy najpierw wydobywamy coś, co jest stałe z procesu, i rozszerzamy ją na przyszłość. Stąd moja odpowiedź: tak, szeregi czasowe muszą być nieruchome, jeśli wariancja i średnia są niezmiennikami, które zamierzasz rozszerzyć na przyszłość z historii. Ponadto chcesz, aby relacje z regresorami również były stabilne.
Po prostu określ, co jest niezmiennikiem w twoim modelu, czy to średni poziom, tempo zmian, czy coś innego. Te rzeczy muszą pozostać takie same w przyszłości, jeśli chcesz, aby Twój model miał jakąkolwiek moc prognozowania.
Przykład Holta Wintersa
Filtr Holt Winters został wspomniany w komentarzach. Jest popularnym wyborem do wygładzania i prognozowania niektórych rodzajów serii sezonowych i może poradzić sobie z seriami niestacjonarnymi. W szczególności może obsługiwać serie, w których średni poziom rośnie liniowo z czasem. Innymi słowy, gdy nachylenie jest stabilne . W mojej terminologii nachylenie jest jednym z niezmienników, które to podejście wydobywa z szeregu. Zobaczmy, jak zawodzi, gdy nachylenie jest niestabilne.
Na tym wykresie pokazuję szeregi deterministyczne z wykładniczym wzrostem i sezonowością addytywną. Innymi słowy, nachylenie z czasem staje się coraz bardziej strome:
Możesz zobaczyć, jak filtr bardzo dobrze pasuje do danych. Dopasowana linia jest czerwona. Jeśli jednak spróbujesz przewidzieć za pomocą tego filtra, nie powiedzie się to dobrze. Prawdziwa linia jest czarna, a czerwony, jeśli jest wyposażony w niebieskie granice pewności na następnym wykresie:
Przyczynę niepowodzenia można łatwo sprawdzić, badając równania modelu Holta Wintersa . Wydobywa zbocze z przeszłości i rozciąga się na przyszłość. Działa to bardzo dobrze, gdy nachylenie jest stabilne, ale gdy stale rośnie, filtr nie może nadążyć, jest o krok do tyłu i efekt kumuluje się w rosnącym błędzie prognozy.
Kod R:
t=1:150
a = 0.04
x=ts(exp(a*t)+sin(t/5)*sin(t/2),deltat = 1/12,start=0)
xt = window(x,0,99/12)
plot(xt)
(m <- HoltWinters(xt))
plot(m)
plot(fitted(m))
xp = window(x,8.33)
p <- predict(m, 50, prediction.interval = TRUE)
plot(m, p)
lines(xp,col="black")
W tym przykładzie możesz poprawić wydajność filtra, po prostu zapisując dziennik serii. Gdy weźmiesz logarytm z wykładniczo rosnących serii, ponownie ustalasz jego nachylenie i dajesz temu filtrowi szansę. Oto przykład:
Kod R:
t=1:150
a = 0.1
x=ts(exp(a*t)+sin(t/5)*sin(t/2),deltat = 1/12,start=0)
xt = window(log(x),0,99/12)
plot(xt)
(m <- HoltWinters(xt))
plot(m)
plot(fitted(m))
p <- predict(m, 50, prediction.interval = TRUE)
plot(m, exp(p))
xp = window(x,8.33)
lines(xp,col="black")