Viikon 5 harjoituksissa käytämme samoja aikasarjoja kuin viikolla 4. Tiedosto Muuttuja Kuvaus Havaintoväli Aikasarjan pituus

Samankaltaiset tiedostot
4. Tietokoneharjoitukset

4. Tietokoneharjoitukset

Tiedosto Muuttuja Kuvaus Havaintoväli Aikasarjan pituus. Intelin osakekurssi. (Pörssi-) päivä n = 20 Intel_Volume. Auringonpilkkujen määrä

3. Tietokoneharjoitukset

6. Tietokoneharjoitukset

805324A (805679S) Aikasarja-analyysi Harjoitus 3 (2016)

805324A (805679S) Aikasarja-analyysi Harjoitus 6 (2016)

805324A (805679S) Aikasarja-analyysi Harjoitus 4 (2016)

MS-C2128 Ennustaminen ja aikasarja-analyysi ARMA esimerkkejä

8. Muita stokastisia malleja 8.1 Epölineaariset mallit ARCH ja GARCH

Dynaamiset regressiomallit

Harjoitus 7 : Aikasarja-analyysi (Palautus )

Auringonpilkkujen jaksollisuus

Aikasarjamallit. Pekka Hjelt

ARMA mallien rakentaminen, Kalmanin suodatin

ARMA mallien rakentaminen, johdatus dynaamisiin regressiomalle

Tilastollisen analyysin perusteet Luento 8: Lineaarinen regressio, testejä ja luottamusvälejä

Kertaus. MS-C2128 Ennustaminen ja Aikasarja-analyysi, Heikki Seppälä

6.5.2 Tapering-menetelmä

Kertaus. MS-C2128 Ennustaminen ja Aikasarja-analyysi, Lauri Viitasaari

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä.

Mallin arviointi ja valinta. Ennustevirhe otoksen sisällä, parametrimäärän valinta, AIC, BIC ja MDL

805324A (805679S) Aikasarja-analyysi Harjoitus 5 (2016)

Työvoiman tarpeen ennustaminen SARIMA-aikasarjamallilla

Aalto-yliopisto, Matematiikan ja systeemianalyysin laitos /Malmivuori MS-A0501 Todennäköisyyslaskennan ja tilastotieteen peruskurssi,

Sovellettu todennäköisyyslaskenta B

ARMA mallien ominaisuudet ja rakentaminen

Stationaariset stokastiset prosessit ja ARMA-mallit

Identifiointiprosessi

MS-A0502 Todennäköisyyslaskennan ja tilastotieteen peruskurssi

2. Tietokoneharjoitukset

031021P Tilastomatematiikka (5 op) kertausta 2. vk:een

ARMA mallien ominaisuudet ja rakentaminen

ARIMA- ja GARCH-mallit sekä mallin sovittaminen osakeaineistoon

Ennustaminen ARMA malleilla ja Kalmanin suodin

STOKASTISET PROSESSIT

Estimointi. Estimointi. Estimointi: Mitä opimme? 2/4. Estimointi: Mitä opimme? 1/4. Estimointi: Mitä opimme? 3/4. Estimointi: Mitä opimme?

Ilkka Keskiväli Kiinan energiankäytön aikasarja-analysointi

Johdatus tilastotieteeseen Estimointi. TKK (c) Ilkka Mellin (2005) 1

Tässä harjoituksessa käydään läpi R-ohjelman käyttöä esimerkkidatan avulla. eli matriisissa on 200 riviä (havainnot) ja 7 saraketta (mittaus-arvot)

Tilastollisen analyysin perusteet Luento 9: Moniulotteinen lineaarinen. regressio

Keskipisteen lisääminen 2 k -faktorikokeeseen (ks. Montgomery 9-6)

Yleistetyistä lineaarisista malleista

Identifiointiprosessi

MS-C2128 Ennustaminen ja Aikasarja-analyysi, 5 op Esittely

2. Teoriaharjoitukset

Tilastollisen analyysin perusteet Luento 7: Lineaarinen regressio

Ilkka Mellin Tilastolliset menetelmät Osa 2: Otokset, otosjakaumat ja estimointi Estimointi

805306A Johdatus monimuuttujamenetelmiin, 5 op

MS-C2128 Ennustaminen ja Aikasarja-analyysi, 5 op Esittely

Työ 2: 1) Sähkönkulutuksen ennustaminen SARIMAX-mallin avulla 2) Sähkön hankinnan optimointi

4.0.2 Kuinka hyvä ennuste on?

Laskuharjoitus 9, tehtävä 6

Sovellettu todennäköisyyslaskenta B

Harha mallin arvioinnissa

S Laskennallinen Neurotiede

Osa 2: Otokset, otosjakaumat ja estimointi

Mat Tilastollisen analyysin perusteet, kevät 2007

Harjoitus 9: Excel - Tilastollinen analyysi

VARIANSSIANALYYSI ANALYSIS OF VARIANCE

Laboratoriotyö 2: Sähkönkulutuksen ennustaminen ja hankinnan optimointi

Regressioanalyysi. Vilkkumaa / Kuusinen 1

. Kun p = 1, jono suppenee raja-arvoon 1. Jos p = 2, jono hajaantuu. Jono suppenee siis lineaarisesti. Vastaavasti jonolle r k+1 = r k, suhde on r k+1

Harjoitukset 4 : Paneelidata (Palautus )

Sovellettu todennäköisyyslaskenta B

ARMA(p, q)-prosessin tapauksessa maksimikohdan määrääminen on moniulotteinen epälineaarinen optimointiongelma.

Tilastotieteessä aikasarja tarkoittaa yleensä sarjaa, jossa peräkkäisten havaintojen aikaväli on aina sama.

pitkittäisaineistoissa

Dynaamisten systeemien identifiointi 1/2

Testejä suhdeasteikollisille muuttujille

Estimointi. Vilkkumaa / Kuusinen 1

Harjoitus 3: Regressiomallit (Matlab)

Yleinen lineaarinen malli eli usean selittäjän lineaarinen regressiomalli

Dynaamiset regressiomallit

Harjoitus 3: Regressiomallit (Matlab)

Load

Ilkka Mellin Aikasarja-analyysi Stationaariset stokastiset prosessit

Jos nyt on saatu havaintoarvot Ü ½ Ü Ò niin suurimman uskottavuuden

Sovellettu todennäköisyyslaskenta B

9. Tila-avaruusmallit

Regressioanalyysi. Kuusinen/Heliövaara 1

Johtuuko tämä ilmastonmuutoksesta? - kasvihuoneilmiön voimistuminen vaikutus sääolojen vaihteluun

Sovellettu todennäköisyyslaskenta B

xi = yi = 586 Korrelaatiokerroin r: SS xy = x i y i ( x i ) ( y i )/n = SS xx = x 2 i ( x i ) 2 /n =

9. laskuharjoituskierros, vko 12-13, ratkaisut

TIE- JA VESIRAKENNUSHALLITUS TUTKIMUSKESKUS INSINÖÖRITOIMISTO PENTTI POLVINEN KY TVH HELSINKI ii / / / - 1)

Erikoistyö: Alkoholin kulutusmenojen ennustaminen

MS-A0107 Differentiaali- ja integraalilaskenta 1 (CHEM)

Estimointi populaation tuntemattoman parametrin arviointia otossuureen avulla Otossuure satunnaisotoksen avulla määritelty funktio

Inversio-ongelmien laskennallinen peruskurssi Luento 7 8

Ilkka Mellin Aikasarja-analyysi ARMA-mallit

Diskriminanttianalyysi I

Väliestimointi (jatkoa) Heliövaara 1

Pelaisitko seuraavaa peliä?

Esimerkki: Tietoliikennekytkin

Sovellettu todennäköisyyslaskenta B

Vastepintamenetelmä. Kuusinen/Heliövaara 1

1. TODENNÄKÖISYYSJAKAUMIEN ESTIMOINTI

Osakesalkun optimointi. Anni Halkola Turun yliopisto 2016

Transkriptio:

MS-C2128 Ennustaminen ja aikasarja-analyysi 5. harjoitukset / Tehtävät Kotitehtävät: 2 Aihe: ARMA-mallit Viikon 5 harjoituksissa käytämme samoja aikasarjoja kuin viikolla 4. Tehtävä 5.1. Tarkastellaan seuraavia aikasarjoja Tiedosto Muuttuja Kuvaus Havaintoväli Aikasarjan pituus INTEL Intel_Close Intelin osakekurssi (Pörssi-) päivä n = 20 SUNSPOT Spots Auringonpilkkujen määrä 1 v n = 215 SALES Sales Erään tukkukaupan myynnin volyymi 1 kk n = 144 Yritä löytää jokaiselle aikasarjalle paras mahdollinen ARMA-perheeseen kuuluva malli. Käytä aikasarjan viimeistä viidesosaa mallin verifioimiseen. Tehtävä 5.1. Ratkaisu: Ladataan aluksi paketti forecast, jos sitä ei ole aiemmin asennettu, ja luetaan muuttujat työhakemistoon #install.packages( forecast ) library(forecast) INTEL <- read.table( INTEL.txt,header=T) SUNSPOT <- read.table( SUNSPOT.txt,header=T) SALES <- read.table( SALES.txt,header=T)

Intel_Close Ensin on syytä tarkastella kuvaajia varianssin ja trendin varalta, ja tarvittaessa tehdä muunnoksia. Näitä on piirretty tehtävässä 4.1. Lasketaan autokorrelaatiot ja osittaisautokorrelaatiot. Intel_Close <- ts(intel$intel_close) Acf(Intel_Close) Pacf(Intel_Close) Tässä siniset viivat kertovat tilastollisen merkitsevyyden, siis erottavat merkitykselliset havainnot kohinasta.

Kommentteja: (1) Aikasarja Intel-Close voi kuvion perusteella hyvin olla stationaarinen ja se ei siten vaadi differensointia. Aikasarjan taso vaihtelee kyllä melko voimakkaasti, mutta sen käyttäytyminen on lokaalisti rauhallista. Aikasarjassa ei ole monotonista trendiä eikä näkyvää kausivaihtelua. (2) Korrelaatiofunktiot viittaavat AR(2)-malliin, mikä tuleekin osoittautumaan riittäväksi malliksi (ks. alla). Yritetään sovittaa AR(2) mallia. Tämä, kuten muidenkin ARMA-mallien sovitus, tapahtuu komennolla Arima: Arima ottaa parametrikseen aikasarjan, order on ARIMA-osan asteet muodossa (p,h,q), missä p, d ja q kuten luentokalvoissa. Lisäksi on mahdollista antaa määre seasonal, joka on kolmiosainen vektori, ja vastaa parametreja (P,H,Q). Arima(Intel_Close, order=c(2,0,0)) Series: Intel_Close ARIMA(2,0,0) with non-zero mean Coefficients: ar1 ar2 intercept 1.3342-0.5263 64.3965 s.e. 0.1850 0.2038 1.0501 sigma^2 estimated as 0.8844: log likelihood=-28.2 AIC=64.39 AICc=67.06 BIC=68.38 Tämä malli sisältää nyt vakion (Intercept), sen voi asettaa nollaksi antamalla Arimalle lisämääreen include.mean=f. Arima-funktiolle voidaan lisäksi valita estimoimiseen käytetty menetelmä. Oletuksena on ns. CSS-ML (conditional sum of squares - maximum likelihood) menetelmä. Kyseisessä algoritmissa mallin parametrit estimoidaan suurimman uskottavuuden (SU) menetelmällä siten että alkuarvaus saadaan CSS-menetelmällä. Lisätietoa SUmenetelmästä viikon 4 luentokalvoissa. Mallin tulkinta: Coefficients sisältää parametrit ja niiden hajonnat (s.e.) AIC on Akaiken informaatiokriteeri, AICc tämän johdannainen ja BIC on Bayesilainen informaatiokriteeri. malli=arima(intel_close, order=c(2,0,0)) Acf(malli$res)

Residuaalit eivät näytä olevan autokorreloituneita. Voidaan myös tehdä Ljung-Box testi residuaaleille. Tämä tapahtuu seuraavasti: Box.test(malli$res,lag=h,fitdf=x,type= Ljung-Box ), missä h on viive, ja x estimoitujen parametrien määrä mallissa. Nyt esim x=2. Ljung-Box testi voidaan tehdä viipeille (lag), jotka ovat suurempia kuin x+1 (katso luento 5). Huomaa, että funktio Box.test tekee oletuksena ns. Box-Piercen testin. Tilastotieteen kirjallisuudessa Ljung-Box on kuitenkin todettu Box-Pierce testiä paremmaksi. # Loopissa vektorin koko kasvaa aina yhdellä # Huomaa, että laskennallisesti tehokkaampi tapa olisi alustaa # halutun pituinen vektori, eli # ljung_box = c(rep(na,18)) ljung_box =c() for (i in 3:20) { ljung_box=c(ljung_box,box.test(malli$res,lag=i,fitdf=2, type= "Ljung-Box")$p.value) } ljung_box [1] 0.3786061 0.4713735 0.5906405 0.6158862 0.6485075 0.7648594 0.7350293 0.5646156 0.6414046 0.5078315 0.4545944 0.5403243 0.5671877 [14] 0.1945652 0.1691062 0.2126523 0.2622378 NA Tämän testin nollahypoteesi on, että autokorrelaatiota ei ole. P-arvot ovat nyt varsin suuria, joten nollahypoteesi jää voimaan. AR(2)-malli on siis riittävä. Piirretään sovite ja alkuperäinen aineisto samaan kuvaan.

sovite <- fitted(malli) plot(sovite,type="b",col="blue",ylim=c(60,68), ylab="kurssi",xlab="aika") lines(intel_close,col="red",type="b") legend(16,68, legend=c("alkup.", "Sovite"), col=c("red", "blue"), lty=c(1,1), cex=0.8) Kuvassa alkuperäinen aikasarja on punaisella ja sovite sinisellä. Lasketaan estimaatit aikasarjan ensimmäisestä 16 havainnosta ja katsotaan miten hyvin malli ennustaa viimeistä 4 havaintoa. malli_ver <- Arima(Intel_Close[1:16],order=c(2,0,0)) ennuste <- forecast(malli_ver,h=4,level=false)$mean #level=false, jättää luottamusvälit pois plot(intel_close,col="red",type="b",ylim=c(60,68), ylab="kurssi",xlab="aika") lines(ennuste,col="blue",type="b") legend(16,68, legend=c("alkup.", "Ennuste"), col=c("red", "blue"), lty=c(1,1), cex=0.8)

Nähdään, että 16 ensimmäistä havaintoa eivät ennusta erityisen hyvin viimeistä neljää havaintoa, vaikka AR(2)-malli todettiin riittäväksi. Tämä selittyy sillä, että alkuperäinen aikasarja on suhteellisen lyhyt. Varsinkin lyhyitä aikasarjoja ennustaessa tulee olla siis hyvin varovainen. Spots Tehtävän 1 perusteella Spots on valmiiksi stationaarinen Spots <- ts(sunspot$spots) Acf(Spots,lag.max=50) Pacf(Spots,lag.max=50)

Kommentteja: (1) Aikasarjaa Spots voi kuvion perusteella pitää stationaarisena ja se ei siten vaadi differensointia. Aikasarjan yleistaso pysyy vakiona. Aikasarjassa ei ole trendiä, mutta siinä on selvää syklistä vaihtelua, jonka jakso on n. 11 vuotta. Jaksolle ei voida löytää luontevaa selitystä (ja lisäksi jakson pituus ei ole täysin vakio), mikä sulkee pois kausidifferensoinnin käytön. (2) Korrelaatiofunktiot ja spektri voisivat viitata AR(2)-malliin, tosin pacf:ssä on näyttöä tätä vastaan (viipeet 6-8). malli=arima(spots,order=c(2,0,0)) Acf(malli$res) Nyt osa autokorrelaatioista menee merkitsevyystason ylitse. c=c() for (i in 3:50)

{ c=c(c,box.test(malli$res,lag=i,fitdf=2, type= Ljung-Box )$p.value)} c [1] 0.093379196 0.071577053 0.152711804 0.209852285 0.297590787 [6] 0.360195519 0.085111937 0.032824920 0.003785297 0.004745079 [11] 0.008116945 0.012689837 0.019920272 0.025990086 0.033572491 [16] 0.038657976 0.052563207 0.067453541 0.089710457 0.089621568 [21] 0.116261199 0.146403129 0.181490442 0.149486465 0.067496750 [26] 0.078072998 0.077236261 0.094964410 0.075039036 0.091995359 [31] 0.098584657 0.106594088 0.117899578 0.086096794 0.099363603 [36] 0.066790207 0.076974670 0.088229189 0.100735795 0.108634013 [41] 0.122469752 0.143219942 0.167114594 0.103387897 0.114468676 [46] 0.115238833 0.133627606 0.099923435 Sama tulos nähdään Ljung-Box-testillä. AR(2)-malli ei ole Ljung-Box-testien perusteella riittävä selittämään aikasarjan Spots käyttäytymistä. Kokeillaan nyt automaattista Arima-mallien sijoitusta. malli=auto.arima(spots) malli Series: Spots ARIMA(3,0,1) with non-zero mean Coefficients: ar1 ar2 ar3 ma1 intercept 0.6574 0.3494-0.5433 0.6580 49.1226 s.e. 0.2000 0.2622 0.1308 0.2128 3.4416 sigma^2 estimated as 266.4: log likelihood=-906.65 AIC=1825.3 AICc=1825.7 BIC=1845.52 Tämä käytännössä sijoittaa automaattisesti hyväksi havaitsemansa ARIMA-mallin annettuun aikasarjaan. Ilman lisämääreitä valinta tapahtuu minimoimalla AICc:tä. Tämä algoritmi on vähän huolimaton, joten sokeana ei kannata kaikkea uskoa. Acf(malli$res,lag.max=50)

Kommentteja: (1) Auringonpilkkujen määrää kuvaava aikasarja Spots osoittautuu vaikeaksi mallintaa ARMA-malleilla. Eräs ongelman aiheuttajista on se, että syklisen vaihtelun jakson pituus n. 11 vuotta ei ole täysin vakio. Ilmeisesti se on syynä siihen, että SARMA-mallit eivät toimi hyvin. (2) Auringonpilkku-aikasarjaa on tutkittu paljon. Tämänhetkisen käsityksen mukaan eräs parhaista kandidaateista selittämään sen käyttäytymistä, on ns. kynnysmalli (engl. threshold model). Kynnysmalli on eräs epälineaarisista aikasarjamalleista. Sen kuvaaminen sivuutetaan tässä. Piirretään sovitteet (AR(2)) ja aikasarja samaan kuvioon: Sovitettu aikasarja näyttää seuraavan hyvin alkuperäisen aikasarjan käyttäytymistä. Yritetään vielä ennustaa viimeistä 43 havaintoa. malli_ver <- Arima(Spots[1:172],order=c(2,0,0)) ennuste <- forecast(malli_ver,h=43,level=false)$mean plot(spots,col="red",type="l",ylim=c(0,200), ylab="lkm.",xlab="aika") lines(ennuste,col="blue",type="l") legend(1,200, legend=c("alkup.", "Ennuste"), col=c("red", "blue"), lty=c(1,1), cex=0.8)

Nähdään, että ennusteet pitkälle tulevaisuuteen epäonnistuvat pahasti. Toistetaan ennustaminen 5 aika-askeleella. Ennustaminen onnistuu taas suhteellisen hyvin muutaman aika-askeleen eteenpäin. Huonot ennusteet selittyvät lisäksi sillä, että totesimme kyseisen aikasarjan olevan vaikea mallintaa.

Sales Sales ei viikon 4 kotitehtävän perusteella ole stationaarinen, sillä on selkeä trendi. sales=ts(sales$sales,frequency=12) ts.plot(diff(sales)) Tällä aikasarjalla on puolestaan selkeä kausivaihtelu, joka näyttäisi olevan kuukausittaista. Otetaan kausidifferenssi ts.plot(diff(diff(sales),lag=12)) Näyttää stationaariselta. Kirjoitetaan salesd=diff(diff(sales),lag=12) Acf(salesd,lag.max=40)

Pacf(salesd,lag.max=40) Kommentteja: (1) Aikasarja D12DSales (jossa on siis tehty sekä tavallinen että kausidifferensointi) on stationaarinen: trendi ja näkyvä kausivaihtelu eliminoituvat. (2) Myös korrelaatiofunktiot viittaavat stationaarisuuteen (korrelaatiofunktiot kuolevat riittävän nopeasti). (3) Mallina aikasarjalle Sales voisi olla jokin SARIMA-perheen malli, kuten esim. SARIMA(2,1,0)) (1,1,0) (ks. kuitenkin alla). malli=arima(sales,order=c(2,1,0),seasonal=c(1,1,0)) Acf(malli$res,lag.max=40) #Huomaa, että Arima() ei toimi jos aikasarjan frequencyparametri on asetettu väärin

c=c() for (i in 4:50){ c=c(c,box.test(malli$res,lag=i,fitdf=3, type="ljung-box")$p.value)} c [1] 0.7248406315 0.5271186279 0.2815302456 0.3840298411 [5] 0.5159272702 0.6311255190 0.3468480317 0.1976339228 [9] 0.2293396575 0.2380502659 0.2282192715 0.0995772942 [13] 0.0509104614 0.0344255265 0.0448945465 0.0620507942 [17] 0.0836639664 0.1109048591 0.0506974373 0.0038601750 [21] 0.0009175278 0.0013330954 0.0015893990 0.0012180142 [25] 0.0016499143 0.0024536944 0.0030739259 0.0017781792 [29] 0.0015308234 0.0021889817 0.0020281789 0.0028796887 [33] 0.0036150807 0.0017784033 0.0024964193 0.0034392749 [37] 0.0021181210 0.0028490917 0.0038999331 0.0048470643 [41] 0.0063942819 0.0082266423 0.0009782449 0.0005481341 [45] 0.0006053689 0.0007278338 0.0007755318 SARIMA(2,1,0)) (1,1,0)[12]-malli ei ole Ljung-Box-testien perusteella riittävä selittämään aikasarjan Sales käyttäytymistä. Funktio auto.arima() antaa tulokseksi SARIMA(3,1,1)(1,1,2)[12]-mallin, joka ei myöskään sovi aikasarjaan Ljung-Box testien perusteella: malli.auto <- auto.arima(sales) Acf(malli.auto$res,lag.max=40) c=c() for (i in 8:50){ # Nyt estimoimme 3+1+1+2=7 parametria c=c(c,box.test(malli.auto$res,lag=i,fitdf=7, type="ljung-box")$p.value)} c

[1] 0.0242304402 0.0772142886 0.0118315115 0.0087777057 [5] 0.0182827559 0.0184330822 0.0229914047 0.0055632672 [9] 0.0035801023 0.0020972202 0.0035540170 0.0059708346 [13] 0.0097102970 0.0149003554 0.0054630998 0.0001737397 [17] 0.0002824187 0.0003612219 0.0003883306 0.0001434732 [21] 0.0002328480 0.0003571897 0.0005420872 0.0003191189 [25] 0.0003208185 0.0004523630 0.0004247775 0.0006282611 [29] 0.0008538485 0.0006246351 0.0009064446 0.0011929199 [33] 0.0008947369 0.0012682360 0.0017983764 0.0025007661 [37] 0.0029901508 0.0033178099 0.0007498938 0.0005506740 [41] 0.0007623702 0.0009139528 0.0007152571 Mallinnuksen tulosta ei voida siten pitää kovin onnistuneena. Parempaa mallia on kuitenkin vaikeata löytää ainakaan SARIMA-perheestä. Kommentti: Aikasarja Sales osoittautuu vaikeaksi mallintaa. Hyvää mallia on vaikeata löytää. Katsotaan vielä miten hyvin SARIMA(2,1,0)) (1,1,0) estimaatit sopivat alkuperäiseen aikasarjaan Aikasarjaa verifioimisen voi toteuttaa kuten aiemmissa kohdissa. Katsotaan nyt miltä mallin ennuste näyttää 24 aika-askelta (2 vuotta) eteenpäin:

plot(forecast(malli,h=24)) Saatava ennuste näyttää järkevältä, mutta SARIMA(2,1,0)) (1,1,0)-malli ei ole Ljung-Boxtestien perusteella riittävä Tehtävä 5.2. Tiedostoon MLCO2 on tallennettu aikasarja MLCO2, joka sisältää Mauna Loa-tulivuorella tehtyjen hiilidioksidimittausten tulokset 216 kuukaudelta. Aikasarjaa on tarkasteltu alustavasti tehtävässä 4.1. (a) (b) Yritä rakentaa paras mahdollinen ARMA-tyyppinen malli aikasarjalle MLCO2. Ennusta aikasarjaa 2 ja 24 askelta eteenpäin. Pohdi ennusteiden hyvyyttä.