Päivitetty 29.12.2020
Tämä artikkeli on jatkoa artikkeleille Aikasarjaennustaminen 1 ja Aikasarjaennustaminen 2.
Edellisen artikkelin Aikasarjaennustaminen 2 lopussa totesin, että esimerkkinä käyttämässäni aikasarjassa on neljän vuosineljänneksen välein toistuvaa kausivaihtelua, joka on syytä huomioida ennustamisessa. Tässä artikkelissa tarkastelen kausivaihtelun huomioivaa Holt-Winterin menetelmää.
Holt-Winterin tulomallissa aikasarjan tason L (level) hetkellä t määrittää lauseke
Lt = alfa * Yt/St-s + (1 – alfa)(Lt-1 + Tt-1)
Yllä Yt on viimeisin havainto, St-s on edellisen vastaavan periodin kausivaihtelu ja Tt-1 on edellinen trendi.
Trendille T hetkellä t saadaan arvio lausekkeesta
Tt = beta * (Lt – Lt-1) + (1 – beta) * Tt-1
Kausivaihtelulle S hetkellä t saadaan arvio lausekkeesta
St = gamma * Yt/Lt + (1 – gamma) * St-s
Ennuste hetkelle t + p saadaan
(Lt + pTt)St-s
Yllä on kyse Holt-Winterin tulomallista, jossa kausivaihtelu huomioidaan kausivaihtelukertoimena. Holt-Winterin mallia voidaan soveltaa myös summamallina, jolloin kausivaihtelu huomioidaan lisättävänä kausivaihteluterminä. Tulomalli soveltuu paremmin tilanteisiin, joissa kausivaihtelukomponentin suuruus vaihtelee aikasarjan tason L mukaan. Summamalli soveltuu tilanteisiin, joissa kausivaihtelukomponentin suuruus ei riipu aikasarjan tasosta L.
Mallin parametrit alfa, beta ja gamma pyritään määrittämään siten että ennustevirheiden neliöiden keskiarvo saadaan mahdollisimman pieneksi.
Python toteutus
Esimerkkikoodin kolminkertaiseen eksponentiaaliseen tasoitukseen löydät GitHubista:
https://nbviewer.jupyter.org/github/taanila/aikasarjat/blob/main/forecast3.ipynb