## R-opasta on helppo käyttää script editorissa. Jos et tiedä, mitä argumentteja funktioon tulee sisällyttää, voit ## tarkistaa sen kirjoittamalla funktion nimen kysymysmerin perään ja suorittamalla komennon. Näin saat selaimeesi auki ## oppaan sivun, joka selittää funktion toimintaa. Esimerkiksi ?ts ## Koodin käyttöä varten tarvitset paketin forecast (Packages->install package(s) -> "paikka" --> forecast) ## Haetaan aineisto - tässä tapauksessa Imports (voit olla tallentanut haluamasi tiedoston minne vain) ## header=TRUE olettaa, että tiedoston ensimmäisellä rivillä on muuttujien nimet data=read.table(file.choose(), header=TRUE) ## Tämän komennon pitäisi antaa sinun valita kansioistasi haluamasi tiedosto ## Vaihtoehtoinen tapa. Muuta tiedoston polku oikeaksi ja poista kommentointi jos haluat käyttää tätä menetelmää. ## ## data=read.table("C:/Opiskelu/Tilastotiede/Stationaariset 2014/Laskuharjoitukset/Imports.txt",header=TRUE) y = ts(data$Y) ## Muodostetaan aikasarja. Komento etsii sarakkeen Y aineistosta datan, muuttaa sen aikasarjaksi ja nimeää y:ksi. ## Vaihtoehtoinen tapa, kun halutaan antaa ensimmäisen havainnon alkamisajankohta (start=1959) ## ja havaintojen lkm/aikayksikkö (freq=4). Ks. ?start y=ts(data$Y, start=1959,freq=4) ## Aineiston alkuajankohta ja frekvenssi on ilmoitettu. freq = 1 tarkoittaa vuosihavaintoja, ## freq = 4 neljännesvuosihavaintoja, freq = 12 kuukausihavaintoja, jne ... ## Jos aikayksikköä kohti on enemmän kuin yksi havainto, täytyy alkuajankohta ilmoittaa vektorina. ## Syyskuu 1959 on start = c(1959, 3). ## Piirretään aikasarja plot(y, ylab="Miljoonaa A$", main="Imports",xlab="") ## Kun y on aikasarjamuotoa (ts), plot komento piirtää kuvan, jossa x-akseli ## on korvattu aikajanalla. y-lab ja main argumentit nimeävät otsikon ja akselin. ## Muunnokset ## ## Tavanomaiset aritmeettiset operaatiot: +, -, *, /, ^ (potenssi) ## Tavanomaiset funktiomuunnokset: log, exp, sin, cos, tan, asin, acos, atan, sqrt,abs ## Aikasarjan logaritmointi ja differensointi (tarvittaessa) ly=log(y) ## Muunnokset säilyttävät aineiston aikasarjana. dy=100*diff(ly) ##Logaritminen differenssi voidaan tulkita prosenttimuutokseksi; lisätietoa differensoinnista, ks. ?diff plot(dy,ylab="Prosenttia", main="Imports") ## Aikasarjan keskistäminen (tarvittaessa) dmean=mean(dy) dyk=dy-dmean ## Vähentää jokaisesta havainnosta havaintojen keskiarvon ## Lineaarisen trendin poistaminen (tarvittaessa) - tässä tapauksessa sarjasta ly trend <- tslm(ly ~ trend) ## Trendiparametrien (vakio ja aikaindeksin regressiokerroin) PNS-estimointi trend ## Estimaatit summary(trend) ## Yksityiskohtaisempia estimointituloksia (huomaa, etteivät keskivirheet ja ## testit ole päteviä, jos residuaaleissa on riippuvuutta). plot(ly) lines(fitted(trend),col="blue") ## Piirretään trendisuora ja sarja ly samaan kuvaan x = trend$residuals ## Trendipuhdistettu residuaalisarja plot(x, ylab="", main="Imports",xlab="") ## Residuaalisarjan kuva ## Autokorrelatiofunktion ja osittaisautokorrelaatiofunktion estimointi - tässä tapauksessa valittu viipymien määrä lag=40 ## ja tarkasteltava aikasarja dy (vastaavasti x, jos tarkastellaan trendipuhdistettua sarjaa) acor=acf(ts(dy), lag=40, type = "correlation", main="Empiirinen autokorrelatiofunktio sarjalle dy") pacor=pacf(ts(dy), lag=40, main=" Empiirinen osittaisautokorrelatiofunktio sarjalle dy") ## Ljungin ja Boxin autokorrelaatiotesti. Tässä khi^2-jakauman vapausasteiden määrää säädetään "fitdf = " argumentilla. ## Nyt, kun käytetään alkuperäistä aikasarjaa eikä estimoidun mallin residuaaleja, asetetaan fitdf=0, eli vapausasteita ## valitaan oletusmäärä. Box.test(dy, lag = 10, type = c("Ljung-Box"), fitdf = 0) ## Kun autokorrelaatiofunktio ja osittaisautokorrelaatiofunktio halutaan laskea neliöidylle sarjalle, ## suoritetaan muunnos eli käytetään sarjaa dy2=dy^2 dy2=dy^2 acor2=acf(ts(dy2), lag=40, type = "correlation", main="Empiirinen autokorrelatiofunktio neliöidylle sarjalle dy") pacor2=pacf(ts(dy2), lag=40, main="Empiirinen osittaisautokorrelatiofunktio neliöidylle sarjalle")