Czy można zautomatyzować prognozowanie szeregów czasowych?

17

Chciałbym zbudować algorytm, który byłby w stanie analizować dowolne szeregi czasowe i „automatycznie” wybierać najlepszą tradycyjną / statystyczną metodę prognozowania (i jej parametry) dla analizowanych danych szeregów czasowych.

Czy można by zrobić coś takiego? Jeśli tak, czy możesz dać mi kilka wskazówek, jak można do tego podejść?

StatsNewbie123
źródło
3
Nie, nie można tego racjonalnie osiągnąć. Często nie ma wystarczających danych, aby rozróżnić dwa rozsądne modele, nie mówiąc już o wszystkich możliwych modelach. Osiągnięcie najlepszego modelu wymagałoby znajomości fizyki w wartościach bezwzględnych, a bardzo często założenia modelowania nie są nawet znane i / lub są niesprawdzone / niesprawdzalne.
Carl
3
Nie. Nie ma możliwości ustalenia, który model jest najlepszy. Python nie jest istotny w tej dyskusji. Niemniej jednak istnieją próby z dobrymi wynikami. Na przykład projekt github.com/facebook/prophet . Ma również wiązanie w języku Python.
Cagdas Ozgenc
3
Głosuję za otwarciem, ponieważ uważam, że to rozsądne pytanie - nawet jeśli odpowiedź brzmi „nie”. Sugerowałbym usunięcie pytona z tytułu, ponieważ nie jest to istotne, ani szczególnie na temat tutaj.
mkt - Przywróć Monikę
1
Usunąłem python z tytułu zgodnie z sugestią. Dziękuję Ci za Twoje odpowiedzi.
StatsNewbie123
2
Zobacz twierdzenie „brak darmowego lunchu”.
AdamO,

Odpowiedzi:

19

Najpierw należy zauważyć, że podejście przedstawione przez IrishStat jest specyficzne dla modeli ARIMA, a nie dla ogólnego zestawu modeli.

Aby odpowiedzieć na główne pytanie „Czy można zautomatyzować prognozowanie szeregów czasowych?”:

Tak to jest. W moim obszarze prognozowania popytu robi to większość komercyjnych pakietów prognostycznych. Robi to również kilka pakietów open source, w szczególności funkcje auto.arima () Roba Hyndmana (automatyczne prognozowanie ARIMA) i ETS () (automatyczne prognozowanie wygładzania wykładniczego) z pakietu prognostycznego open source w R Zobacz tutaj szczegółowe informacje na temat tych dwóch funkcji . Istnieje również implementacja auto.arima w Pythonie o nazwie Pyramid , chociaż z mojego doświadczenia nie jest tak dojrzała jak pakiety R.

Zarówno wymienione przeze mnie produkty komercyjne, jak i wspomniane pakiety open source działają w oparciu o pomysł zastosowania kryteriów informacyjnych do wyboru najlepszej prognozy: pasujesz do kilku modeli, a następnie wybierasz model o najniższym AIC, BIC, AICc, itp .... (zwykle odbywa się to zamiast sprawdzania poprawności próby).

Istnieje jednak poważne zastrzeżenie: wszystkie te metody działają w ramach jednej rodziny modeli. Wybierają najlepszy możliwy model spośród zestawu modeli ARIMA lub najlepszy możliwy model spośród zestawu modeli wygładzania wykładniczego.

Jest to o wiele trudniejsze, jeśli chcesz wybierać z różnych rodzin modeli, na przykład jeśli chcesz wybrać najlepszy model z ARIMA, wygładzania wykładniczego i metody Theta. Teoretycznie możesz to zrobić w taki sam sposób, jak w obrębie jednej rodziny modeli, tj. Stosując kryteria informacyjne. Jednak w praktyce należy obliczyć AIC lub BIC dokładnie w ten sam sposób dla wszystkich rozważanych modeli, co stanowi poważne wyzwanie. Lepiej byłoby zastosować weryfikację krzyżową szeregów czasowych lub walidację poza próbą zamiast kryteriów informacyjnych, ale będzie to znacznie bardziej intensywne obliczeniowo (i uciążliwe dla kodu).

Pakiet Prophet Facebooka automatyzuje również generowanie prognoz na podstawie ogólnych modeli addytywnych. Zobacz tutaj, aby uzyskać szczegółowe informacje . Jednak Prorok pasuje tylko do jednego modelu, chociaż jest to bardzo elastyczny model z wieloma parametrami. Domniemane założenie Proroka jest takie, że GAM jest „jedynym modelem rządzącym nimi wszystkimi”, co może nie być teoretycznie uzasadnione, ale jest bardzo pragmatyczne i przydatne w rzeczywistych scenariuszach.

Kolejne zastrzeżenie, które dotyczy wszystkich wyżej wymienionych metod: Prawdopodobnie chcesz wykonać automatyczne prognozowanie szeregów czasowych, ponieważ chcesz prognozować wiele szeregów czasowych, zbyt wiele, aby analizować ręcznie. W przeciwnym razie możesz po prostu przeprowadzić własne eksperymenty i samodzielnie znaleźć najlepszy model. Należy pamiętać, że zautomatyzowane prognozowanie nigdy nie znajdzie najlepszego modelu dla każdej serii czasowej - da przeciętnie całkiem dobry model dla wszystkich szeregów czasowych, ale nadal możliwe jest, że niektóre z tych szeregów czasowych będą miały lepsze modele niż te wybrane metodą automatyczną. Zobacz ten postna przykład tego. Krótko mówiąc, jeśli zamierzasz korzystać z automatycznego prognozowania - będziesz musiał tolerować prognozy „wystarczająco dobre” zamiast najlepszych możliwych prognoz dla każdej serii czasowej.

Skander H.
źródło
Dziękuję za tak wnikliwą odpowiedź. Szczerze mówiąc, moim początkowym pomysłem przy zadawaniu tego pytania była możliwość wyboru spośród różnych rodzin modeli.
StatsNewbie123
Co by było, gdyby algorytm miał być zastosowany do bardziej konkretnej dziedziny, takiej jak prognozowanie biznesowe (na przykład w zakresie planowania produkcji i zarządzania zapasami)? Czy uważasz, że może osiągnąć lepsze wyniki?
StatsNewbie123
2
@JoanaClaudino tak, byłoby łatwiej - oto sedno tego, co robią pakiety prognozowania popytu komercyjnego. Jest to jednak łatwiejsze, ponieważ zazwyczaj ograniczając się do jednej konkretnej domeny biznesowej, można ograniczyć się do jednej konkretnej rodziny modeli (szeregi czasowe pochodzące z tej samej domeny biznesowej będą miały podobne cechy pod względem sezonowości, gęstości danych itp. . stąd można bezpiecznie założyć, że jedna rodzina będzie odpowiednia dla nich wszystkich)
Skander H.,
Dobra, rozumiem teraz. Jeszcze raz dziękuję za tak wspaniałą pomoc.
StatsNewbie123
10

Moje sugerowane podejście obejmuje modele, które są znacznie bardziej ogólne niż ARIMA, ponieważ obejmują potencjał sezonowych manekinów, które mogą się zmieniać w czasie, wiele poziomów, wiele trendów, parametry, które mogą się zmieniać w czasie, a nawet wariancje błędów, które mogą się zmieniać w czasie. Ta rodzina jest bardziej precyzyjnie nazywana modelami ARMAX, ale dla pełnej przejrzystości wyklucza (rzadki) wariant, który ma strukturę multiplikatywną.

Poprosiłeś o wskazówki i uważam, że może to być dobry początek.

Sugerowałbym napisanie kodu, aby śledzić / emulować ten schemat blokowy / przepływ pracy. „Najlepszy model” można znaleźć, oceniając określone przez ciebie kryterium ... może to być MSE / AIC dopasowanych danych lub może to być MAPE / SMAPE ukrytych danych lub dowolne wybrane kryterium.

Pamiętaj, że wyszczególnienie każdego z tych kroków może być dość proste, jeśli nie znasz niektórych szczegółowych wymagań / celów / ograniczeń analizy szeregów czasowych, ALE może być (powinno być!) Bardziej złożone, jeśli masz głębsze zrozumienie / poznanie / zrozumienie zawiłości / możliwości obecnych w dokładnej analizie szeregów czasowych.

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Poproszono mnie o podanie dalszych wskazówek, jak należy zautomatyzować modelowanie szeregów czasowych (lub ogólnie modelowanie) /stats//search?q=peeling+an+onion zawiera niektóre z moich wskazówek na temat „obieranie cebuli” i powiązane zadania.

AUTOBOX tak naprawdę opisuje szczegóły i pokazuje kroki pośrednie, ponieważ tworzy użyteczny model i może być przydatnym nauczycielem w tym zakresie. Cały pomysł naukowy polega na „dodaniu tego, co wydaje się potrzebne” i „usunięciu tego, co wydaje się mniej niż przydatne”. Jest to proces iteracyjny sugerowany wcześniej przez Boxa i Bacona.

Modele muszą być wystarczająco złożone (wystarczająco fantazyjne), ale niezbyt złożone (fantazyjne). Zakładanie, że proste metody działają ze złożonymi problemami, nie jest zgodne z metodą naukową podążającą za Rogerem Baconem i mnóstwem zwolenników Bacona. Jak powiedział kiedyś Roger Bacon i często parafrazowałem: „Robienie nauki to poszukiwanie powtarzających się wzorów. Aby wykryć anomalie, należy zidentyfikować wartości, które nie są zgodne z powtarzającymi się wzorami. Każdy bowiem, kto zna drogi Natury, z łatwością zauważy jej odchylenia, a z drugiej strony, kto zna jej odchylenia, dokładniej opisa swoje odchylenia. Uczy się reguł, obserwując, kiedy zawodzą obecne reguły. W spironie Bacon, identyfikując, kiedy aktualnie zidentyfikowany „najlepszy model / teoria” jest nieodpowiedni, można następnie przejść do „lepszej reprezentacji”

Według moich słów „Tukey zaproponował Exploratory Data Analysis (EDA), która sugerowała schematy udoskonalenia modelu w oparciu o oczywisty niedobór modelu sugerowany przez dane”. To serce AUTOBOX i nauki. EDA ma na celu sprawdzenie, co dane mogą nam powiedzieć poza formalnym zadaniem modelowania lub testowania hipotez.

Test lakmusowy programu do automatycznego modelowania jest dość prosty. Czy oddziela sygnał i szum bez nadmiernego dopasowania? Dowody empiryczne sugerują, że można to zrobić. Dokładności prognozowania są często mylące, ponieważ przyszłość nie ponosi odpowiedzialności za przeszłość i zależnie od tego, które pochodzenie wybierzesz, wyniki mogą się różnić.

IrishStat
źródło
Dziękuję bardzo. Twoja odpowiedź jest bardzo pomocna!
StatsNewbie123
Dziękuję, IrishStat. To jest wnikliwe. Czy kiedykolwiek mamy uzasadnienie, aby zachować parametr zamiast „usuń parametr”, mimo że parametr nie jest statystycznie istotny?
ColorStatistics,
1
Tak. jeśli daje bardziej „przyjemną odpowiedź”. Współczynnik nachylenia, który nie różni się od 0,0, może zapewnić bardziej realistyczną (jeśli nieistotną statystycznie) prognozę, w przeciwnym razie przenoszenie nadmiaru współczynników jest nielogiczne i powoduje wzrost niepewności w prognozie wariancji. Niektórzy autorzy, którzy nie potrafią poradzić sobie z testami konieczności i wystarczalności na ślepo / naiwnie, zakładają, że identyfikacja modelu jest procesem jednoetapowym, podczas gdy Box i Jenkins (i wszyscy inni!) Dbają o to, aby model był tak skomplikowany, jak to konieczne, ale niezbyt skomplikowany .. czytaj Albert E., JW Tukey i in., Aby uzyskać więcej informacji na ten temat.
IrishStat,
3
„To sugerowane podejście do automatycznego prognozowania pozwoli znaleźć najlepszy model dla każdej serii czasowej, dostosowując jego formę, tj. Dostosowując go podobnie jak dostosowany garnitur”. To dość mocne stwierdzenie - jeśli jest dokładne, oznacza to, że takie podejście wygrałoby konkursy M3, M4. Ma to?
Skander H.
1
@ joana-claudino Jestem szczególnie zainteresowany twoim projektem ISEG, ponieważ jestem również zainteresowany opracowaniem wersji proponowanych procedur w języku Python. To oczywiście byłoby poza witryną od SE.
IrishStat,