Prognózování časových řad je jednou z nejžádanějších technik datové vědy, ať už jde o obchodování s akciemi, předpovídání obchodních tržeb nebo předpověď počasí. Je to jednoznačně velmi užitečná dovednost a právě tou vás vybavím na konci tohoto článku.
V tomto tutoriálu sestavíme model ARIMA(nebojte se, pokud ještě přesně nevíte, jak to funguje) pro předpověď budoucích hodnot teploty v určitém městě pomocí jazyka python. Odkaz na GitHub pro kód a soubor dat najdete na konci tohoto blogu. Na konci jsem také připojil své video na YouTube, pokud byste měli zájem o video s vysvětlením. Takže bez ztráty času začněme.
Prvním krokem v každé časové řadě je načtení dat a zjištění, jak vypadají. Následující úryvek kódu ukazuje, jak to udělat.
Kód je poměrně jednoduchý. Data načteme pomocí pd.read_csv a zápisem parse_date=True se ujistíme, že pandas pochopí, že pracuje s hodnotami data, a ne s hodnotami řetězců.
Následuje vypuštění všech chybějících hodnot a vypsání tvaru dat. df.head() vypíše prvních 5 řádků datasetu. Zde je výstup, který byste při tom měli vidět:
Následuje vykreslení dat. Tím získáte představu o tom, zda jsou data stacionární, nebo ne. Pro ty, kteří nevědí, co znamená stacionarita, uvedu její podstatu. Ačkoli jsem na toto téma natočil několik videí, vše se omezuje na toto:
Každá data časové řady, která mají být modelována, musí být stacionární. Stacionární znamená, že jeho statistické vlastnosti jsou v čase víceméně konstantní. To dává smysl, ne? Jak jinak chcete předpovídat, když se statistické vlastnosti s časem mění? Jedná se o následující vlastnosti, které bude mít každý model stacionarity:
Konstantní průměr
Konstantní rozptyl(Mohou se vyskytovat odchylky, ale odchylky by neměly být nepravidelné)
Žádná sezónnost(Žádné opakující se vzory v souboru dat)
Takže prvním krokem je kontrola stacionarity. Pokud váš soubor dat není stacionární, budete jej muset převést na stacionární řadu. Než se tím vším začnete zabývat, uklidněte se! Máme pevně stanovený jednoduchý test pro kontrolu stacionarity, který se nazývá ADF(Augmented Dickey Fuller Test). Ale než si ho ukážeme, pojďme si nejprve vykreslit data.
Protože mě zajímá pouze předpověď průměrné teploty, bude to jediný sloupec, který budu vykreslovat.
df.plot(figsize=(12,5))
Kontrola stacionarity
Hned zpočátku můžeme vidět, že se zdá, že má poněkud konstantní průměr kolem 45. V tomto případě se jedná o průměrnou teplotu. A také výkyvy se zdají být víceméně stejné. Abychom si však byli jisti, zda jsou data stacionární, nebo ne, provedeme pevný statistický test pomocí následujícího kódu:
Napsat komentář