Avainsana-arkisto: eksponentiaalinen tasoitus

Aikasarjaennustaminen 1

Päivitetty 29.12.2020

Aikasarjaennustamisessa oletan että toteutuneiden havaintojen muodostama aikasarja sisältää informaatiota, joka auttaa tulevien havaintojen ennustamisessa. Ennustusmenetelmä riippuu siitä, minkälaista systemaattista vaihtelua aikasarjassa esiintyy. Eksponentiaalisia tasoitusmenetelmiä käytettäessä on kolme päävaihtoehtoa:

  • Yksinkertainen eksponentiaalinen tasoitus aikasarjoille, joissa ei ole trendiä eikä kausivaihtelua.
  • Kaksinkertainen eksponentiaalinen tasoitus eli Holtin menetelmä aikasarjoille, joissa on trendi, mutta ei kausivaihtelua.
  • Kolminkertainen eksponentiaalinen tasoitus eli Holt-Winterin menetelmä aikasarjoille, joissa on sekä trendi että kausivaihtelu.

Tämä artikkeli käsittelee yksinkertaista eksponentiaalista tasoitusta. Yksinkertaisessa eksponentiaalisessa tasoituksessa ennuste lasketaan seuraavasti:

alfa*edellinen havainto + (1 – alfa)*edellinen ennuste

Ennuste saadaan viimeisimmän havainnon ja siihen liittyneen ennusteen painotettuna summana. Painokerroin alfa on välillä 0 – 1 oleva luku, joka ilmaisee, kuinka suurella painolla edellistä havaintoa painotetaan ennustetta laskettaessa:

    • Jos alfa on 0, niin ennuste on sama kuin edellinen ennuste.
    • Jos alfa on 1, niin ennuste on sama kuin edellinen havainto.
    • Suuret alfan arvot antavat ennusteita, jotka reagoivat herkästi aikasarjassa esiintyvään vaihteluun, koska viimeisimmillä havainnoilla on suuri paino.
    • Pienet alfan arvot tasoittavat voimakkaasti aikasarjan vaihtelua.

Alfan arvo valitaan yleensä siten että ennustevirheiden neliöiden keskiarvo saadaan mahdollisimman pieneksi. Voin kirjoittaa ennusteen laskentakaavan myös muotoon

edellinen ennuste + alfa*(edellinen havainto – edellinen ennuste)

Ennustetta siis korjataan jokaisen toteutuneen havainnon jälkeen korjaustermillä alfa*edellisen ennusteen virhe.

Python toteutus

Esimerkkikoodin yksinkertaisen eksponentiaalisen tasoituksen käyttöön löydät GitHubista:

https://nbviewer.jupyter.org/github/taanila/aikasarjat/blob/main/forecast1.ipynb

Seuraavaksi

Esimerkkinä käyttämässäni aikasarjassa on melko helppo erottaa alkupään laskeva trendi ja loppupään nouseva trendi. Seuraavassa artikkelissani Aikasarjaennustaminen 2 yritän sovittaa aikasarjaan mallin, joka huomioi trendin.