Päivitetty 29.12.2020
Tämä artikkeli on jatkoa yksinkertaista eksponentiaalista tasoitusta käsittelevälle artikkelille Aikasarjaennustaminen 1. Tässä artikkelissa käytän kaksinkertaista eksponentiaalista tasoitusta eli Holtin mallia, joka huomioi myös trendin.
Holtin mallissa aikasarjan tason L (level) hetkellä t määrittää lauseke
Lt = alfa * Yt + (1 – alfa) * (Lt-1 + Tt-1)
Yllä Yt on viimeisin havainto ja Tt-1 on edellinen trendi. Trendille hetkellä t saadaan arvio lausekkeesta
Tt = beta * (Lt – Lt-1) + (1 – beta) * Tt-1
Ennuste hetkelle t+p saadaan
Lt + pTt
Mallin parametrit alfa ja beta pyritään määrittämään siten että ennustevirheiden neliöiden keskiarvo saadaan mahdollisimman pieneksi.
Python toteutus
Esimerkkikoodin kaksinkertaisen eksponentiaalisen tasoituksen käytöstä löydät GitHubista:
https://nbviewer.jupyter.org/github/taanila/aikasarjat/blob/main/forecast2.ipynb
Aikasarjan lähempää tarkastelua
Löytääkseni paremman ennustemallin tarkastelen esimerkkikoodissa käyttämääni aikasarjaa hieman lähemmin purkamalla sen komponentteihin.
from statsmodels.tsa.api import seasonal_decompose seasonal_decompose(data['Demand']).plot()
Tuloksena saan neljä kuviota:
- alkuperäinen aikasarja
- aikasarjasta erotettu trendi
- aikasarjan kausivaihtelu
- aikasarjan jäljelle jäänyt osa trendin ja kausivaihtelun poistamisen jälkeen.
Aikasarjassa on erotettavissa selkeä neljän vuosineljänneksen jaksoissa toistuva kausivaihtelu, jota kaksinkertainen eksponentiaalinen tasoitus ei huomioi ennusteessa. Asiaa voin tarkastella myös autokorrelaatioiden avulla. Autokorrelaatio tarkoittaa aikasarjan korrelaatiota viivästetyn aikasarjan kanssa, esimerkiksi aikasarjan korrelaatio neljän vuosineljänneksen takaisiin aikasarjan arvoihin. Autokorrelaatio voidaan laskea eri viiveille. Tämän voin tehdä pandas-kirjaston autocorrelation_plot-toiminnolla:
from pandas.plotting import autocorrelation_plot autocorrelation_plot(data['Demand'])
Vaaka-akselilla on viive (lag) ja pystyakselilla autokorrelaatiokertoimen arvo. Huomaan, että viiveen 4 kohdalla on suurehko korrelaatio. Tämä viittaa neljän vuosineljänneksen mittaiseen kausivaihtelujaksoon. Kuvion katkoviivat edustavat tilastollisesti merkitsevän korrelaation rajoja. Viiveen 4 kohdalla korrelaatio on katkoviivan yläpuolella ja näin ollen tilastollisesti merkitsevä.
Seuraavassa artikkelissa Aikasarjaennustaminen 3 laadin ennustemallin, jossa myös neljän vuosineljänneksen jaksoissa toistuva kausivaihtelu on huomioitu.