Jak tworzyć prognozy dla szeregów czasowych?

9

Nie znam się na analizie danych szeregów czasowych. Mam jednak, jak sądzę, proste zadanie przewidywania do rozwiązania.

Mam około pięciu lat danych ze wspólnego procesu generowania. Każdego roku reprezentuje monotonicznie rosnącą funkcję o składniku nieliniowym. Mam liczenia na każdy tydzień w cyklu ponad 40 tygodni na każdy rok. Proces rozpoczyna się, funkcja zaczyna się od zera, rośnie dość szybko w pierwszej połowie funkcji, zwalniając w drugiej połowie przed wyrównywaniem w ciągu ostatnich pięciu tygodni. Proces jest spójny na przestrzeni lat, z niewielkimi różnicami w szybkości zmian i wielkości w poszczególnych segmentach z roku na rok.

y1={0,Nt1,Nt2,...Nt39,Nt40}

y5={0,Nt1,Nt2,...Nt39,Nt40}

Gdzie równa się liczbie w czasie x.Ntx

Celem jest, aby wziąć w (lub lepiej do lub nachylenie do tego punktu) i przewidzieć w . Na przykład, jeśli wynosi 5000, jaka jest oczekiwana wartość dla tego roku. Pytanie brzmi: w jaki sposób modelowałbyś takie dane? Łatwo jest podsumować i zwizualizować. Ale chciałbym, aby model ułatwiał przewidywania i zawierał miarę błędu.Ntxt0txNt40Nt10Nt40

Brett
źródło
2
Czy na pewno chcesz tak poważnie się ograniczyć? Jeśli ten problem ma jakieś praktyczne zastosowanie, to zanim znasz liczbę w czasie x, znasz także wszystkie poprzednie liczby. Dlaczego nie wykorzystać ich do prognozowania?
whuber
W rzeczy samej. Masz rację. Dzięki za zwrócenie na to uwagi.
Brett

Odpowiedzi:

6

Prawdopodobnie najprostszym podejściem jest, jak sugerował Andy W, zastosowanie modelu sezonowych jednowymiarowych szeregów czasowych. Jeśli używasz R, albo spróbować auto.arima()albo ets()z pakietem prognozy .

Albo powinno działać dobrze, ale ogólna metoda szeregów czasowych nie wykorzystuje wszystkich dostarczonych informacji. W szczególności wydaje się, że znasz kształt krzywej każdego roku, więc lepiej byłoby wykorzystać te informacje, odpowiednio modelując dane każdego roku. Poniżej znajduje się sugestia, która próbuje uwzględnić te informacje.

Wygląda na to, że jakaś krzywa sigmoidalna załatwi sprawę. np. przesunięta logistyka: dla roku tygodnia gdzie , i są parametrami do oszacowania. jest asymptotycznym maksimum, kontroluje tempo wzrostu, a jest punktem środkowym, gdy . (Potrzebny będzie inny parametr, aby umożliwić opisaną asymetrię, dzięki czemu tempo wzrostu do czasu jest szybsze niż po

ft,j=rteat(jbt)1+eat(jbt)
tjatbtrtrtatbtft,j=rt/2btbt. Najprostszym sposobem na to jest zezwolenie na przyjmowanie różnych wartości przed i po czasie .)atbt

Parametry można oszacować za pomocą najmniejszych kwadratów dla każdego roku. Parametry tworzą szereg czasowy: , i . Można je prognozować przy użyciu standardowych metod szeregów czasowych, chociaż przy prawdopodobnie nie można wiele zrobić poza wykorzystaniem średniej z każdej serii do tworzenia prognoz. Następnie dla roku 6 oszacowanie wartości w tygodniu jest po prostu gdzie wykorzystywane są prognozy , i .a1,,anb1,,bnr1,,rnn=5jf^(6,j)a6b6r6

Gdy zaczną być obserwowane dane dla roku 6, będziesz chciał zaktualizować to oszacowanie. Po uzyskaniu każdej nowej obserwacji oszacuj krzywą sigmoidalną na dane z roku 6 (na początek potrzebne będą co najmniej trzy obserwacje, ponieważ istnieją trzy parametry). Następnie ważona średnia prognozy uzyskane przy użyciu danych do roku 5 i prognozy uzyskane przy użyciu tylko dane od 6 roku, przy czym masy są równe i odpowiednio . Jest to bardzo ad hoc i jestem pewien, że można to uczynić bardziej obiektywnym poprzez umieszczenie go w kontekście większego modelu stochastycznego. Niemniej jednak prawdopodobnie będzie działać dobrze dla twoich celów.(40t)/36(t4)/36

Rob Hyndman
źródło
4

To, o co pytasz, to w zasadzie to, co robi modelowanie Box Jenkins ARIMA (twoje roczne cykle byłyby określane jako komponenty sezonowe). Proponuję, oprócz samodzielnego wyszukiwania materiałów

Applied Time Series Analysis for the Social Sciences 1980, autor: R. McCleary; RA Hay; EE Meidinger; D McDowall

Chociaż mogę wymyślić uzasadnione powody, dla których chcesz prognozować dalej w przyszłości (a tym samym ocenić błąd, gdy to robisz), w praktyce jest to często bardzo trudne. Jeśli masz bardzo silne składniki sezonowe, będzie to bardziej wykonalne. W przeciwnym razie twoje szacunki prawdopodobnie osiągną równowagę w stosunkowo niewielu przyszłych okresach.

Jeśli planujesz używać R, aby dopasować swoje modele powinieneś sprawdzić Rob Hyndmana internetowej (mam nadzieję będzie on daje lepsze informacje niż ja!)

Andy W.
źródło
-2

masz 5 lat danych i 40 obserwacji rocznie. Dlaczego nie opublikujesz ich w Internecie i nie pozwolisz nam odpowiedzieć na to z góry, zamiast filozofować na wysokości 500 mil. Czekam na liczby. Widzieliśmy takie dane, na przykład liczbę klientów, którzy dokonują wymiany tygodniowo w systemie tygodniowym. Seria każdego roku zaczyna się od zera i kumuluje się do wartości granicznej.

IrishStat
źródło
1
-1 To brzmi bardziej jak reklama własna niż pomocna odpowiedź.
whuber
@whuber: Nie zamierzone. Tylko refleksja nad podobnym „lepkim problemem”, na który wpadłem.
IrishStat
To byłby ciekawy komentarz. Komentarze są dobrym sposobem na przekazanie niektórych z tych cennych doświadczeń, które cieszymy się, że możesz się z nami podzielić. Odpowiedzi powinny być zarezerwowane na rzeczywiste odpowiedzi na pytanie: zostaną poddane pod głosowanie, zarchiwizowane, umożliwione wyszukiwanie itp., A zatem muszą być bardziej bezpośrednie, o stałej wartości i być w stanie lepiej wytrzymać krytykę. (Oczywiście jest to idealizacja, ale do tego dążymy. :-)
whuber
@whuber: Ty uczysz! Uczę się ! Zastrzegam komentarze do „obszaru komentarzy”. Powtórzmy, że absolutnie nie było zamiaru promowania czegokolwiek ani żadnego konkretnego oprogramowania / doradztwa, tylko chęć dzielenia się doświadczeniami z innymi mieszkańcami wioski. Jestem pewien, że OP uznał moje komentarze za pomocne. Co powiesz, że Brett?
IrishStat