Ekonometrija. Trendas ir sezoninė laiko eilutės komponentė dėst. T. Rekašius, 2012 m. lapkričio 19 d. 1 Duomenys Visi trečiam laboratoriniam darbui reikalingi duomenys yra tekstinio formato failuose http://fmf.vgtu.lt/~trekasius/destymas/2012/ekomet_lab3_xx.dat, kur XX yra numeris nuo 01 iki 30. Kiekvienas studentas pagal savo eilės numerį grupės sąraše pasiima atitinkamą duomenų rinkinį. Jis sudarytas iš dviejų dalių: pirmoje failo eilutėje įrašyta tam tikros laiko eilutės periodo reikšmė, o žemiau surašytos tos laiko eilutės reikšmės. Iš viso duomenyse yra ne mažiau kaip n = 70 stebinių. Užduotis. iš tekstinio failo nuskaityti laiko eilutę, scan su parametru skip nuskaityti laiko eilutės periodo reiškmę. scan su parametru n Pastabos. Čia naudojamas duomenų failas sudarytas iš dviejų dalių. Pirmoje failo eilutėje įrašyta laiko eilutės periodo T reikšmė ir tą nurodantis trumpas komentaras. Kiti žemiau esantys skaičiai yra laiko eilutės reikšmės Y 1, Y 2,..., Y n. Faile šis reikšmių vektorius surašytas nebūtinai į vieną stulpelį. Žemiau parodytas tokio failo fragmentas. 12 # laiko eilutės periodas 12 mėnesių 33.4 19.1 15.6 18.2 11.1 21.1 29.7 35.7 26.2 15.2... Tokios struktūros duomenų failo nuskaitymui paprastai naudojama komanda scan. Už simbolio # įrašytas komentaras atpažįstamas automatiškai ir failo nuskaitymo metu ignoruojamas. Tokiu būdu komentaruose papildomai galima įrašyti bet kokią kitą su duomenimis susijusią informaciją. Su papildomais parametrais n ir skip galima nurodyti, kiek failo eilučių reikia nuskaityti, ir kiek pirmųjų failo eilučių reikia praleisti. Tokiu būdu galima nuskaityti bet kurią duomenų failo vietą. Kaip ir kitos duomenų nuskaitymo procedūros,
procedūra scan duomenis gali nuskaityti tiesiai iš interneto. Tada nurodoma, kad kelias iki failo yra adresas internete. adresas <- "http://fmf.vgtu.lt/~trekasius/destymas/2012/ekomet_lab3_xx.dat" Y <- scan(file = adresas, skip = 2) p <- scan(file = adresas, n = 1) Statistinei laiko eilučių analizei su R naudojamos specialios procedūros. Kadangi laiko eilutės be stebimo kintamojo reikšmių paprastai dar turi informaciją apie matavimų pradžią ir jų periodiškumą, tokios procedūroms pateikiami duomenys turi būti specialaus laiko eilutės formato. Tokio tipo objektą galima suformuoti su procedūra ts, kuriai nurodome stebėto kintamojo reikšmių vektorių, matavimų pradžios momentą ir jų periodiškumą arba laiko tarpą tarp dviejų matavimų. Šiame laboratoriniame darbe laiko eilutės analizei bus naudojamos įprastos statistinės analizės procedūros, kurioms laiko eilutės formatas nebūtinas. 2 Užduotys Laiko eilute vadiname kintamojo Y stebėjimų laike seką Y 1, Y 2,..., Y n. Laiko eilučių modeliais galima prognozuoti ekonominių, demografinių ir kitų mus dominančių rodiklių elgesį pagal jų stebėjimus praeityje. Tikimybiniai laiko eilučių modeliai remiasi prielaida, kad laiko eilutės reikšmės yra tam tikro atsitiktinio proceso {Y (t), t T } realizacija, kur T yra laiką atitinkanti indeksų aibė. Toliau analizuosime tokias laiko eilutes, kur reikšmės išmatuotos vienodais laiko intervalais, todėl T = 1, 2,..., n. Ekonometrinės analizės tikslas turint tam tikro rodiklio laiko eilutę, sudaryti ją atitinkančio proceso Y t modelį, pagal kurį jau galima prognozuoti. Tarkime, kad laike besikeičiantį ekonominį, demografinį rodiklį ar kitą procesą galima užrašyti tokiu pavidalu: Y t = T t + S t + X t, t = 1, 2..., n, (1) kur a) T t trendas, b) S t sezoniškumas, c) X t atsitiktiniai nuokrypiai. Tokiu atveju sakoma, kad laiko eilutės Y t modelis yra adityvus. Dauguma ekonominių procecų nėra stacionarūs ir turi visas tris komponentes. Pagrindinis šio darbo tikslas atlikti laiko eilutės Y t dekompoziciją ir gauti ją sudarančias komponentes. Visos laboratorinio darbo užduotys suskirstytos į keletą etapų: aprašomoji laiko eilutės statistika, trendo komponentės išskyrimas, sezoniškumo komponentės išskyrimas. 2.1 Aprašomoji statistika Pirma darbo dalis skirta aprašomajai statistikai, t.y. laiko eilutės vizualizavimui ir jos pagrindinių skaitinių charakteristikų skaičiavimui. 2
Užduotis. nubraižykite laiko eilutės Y t grafiką, plot apskaičiuokite pagrindines skaitines charakteristikas, summary arba min, max, mean, median, var apskaičiuokite ir nubraižykite autokovariacijos ir autokoreliacijos funkcijas. acf Pastabos. Pradiniame laiko eilučių analizės etape didelė dalis informacijos gaunama iš grafiko. Iš jo nesunkiai matosi, ar yra tam tikra ilgalaikė stebimo rodiklio kitimo tendencija, ar yra sezoniniai svyravimai, iš dalies galima pasakyti ar stebimas procesas yra stacionarus. Tokios išvados vėliau reikalingos sudarant tikimybinį laiko eilutės modelį. Procesą vadiname stacionariu siauraja prasme, jei visos jo charakteristikos yra invariantiškos laiko postūmio atžvilgiu. Procesas vadinamas stacionariu plačiaja prasme, jei jo vidurkis EY t = m ir dispersija DY t = σ 2 nuo laiko nepriklauso, o kovariacinė funkcija cov(y t, Y t+k ) = r(t, t + k) = r(k) (2) priklauso tik nuo laiko skirtumo k. Svarbi atsitiktinio proceso charakteristika autokoreliacinė funkcija, kurią skaičiuojame pagal formulę ρ(k) = r(k), k = 1, 2,.... (3) r(0) Turint laiko eilutę Y 1, Y 2,..., Y n autokovariacinę funkciją įvertiname taip: ˆr(k) = 1 n n k t=1 (Y t Ȳ )(Y t+k Ȳ ). (4) Čia Ȳ yra proceso vidurkis. Iš duomenų autokoreliacinė funkcija skaičiuojama pagal formulę ˆρ(k) = n k 1 (Y t n Ȳ )(Y t+k Ȳ ) t=1. (5) 1 n (Y t n Ȳ )2 t=1 Laiko eilutės autokovariacinės ir autokoreliacinės funkcijos vertinimui iš duomenų naudojama procedūra acf. Kurią iš šių funkcijų reikia įvertinti, nurodoma keičiant parametro type reikšmę, kuri gali būti lygi covariance arba correlation. Apskaičiuotos funkcijos grafikas nubraižomas automatiškai. auto.cov <- acf(y, type = "covariance") auto.cor <- acf(y, type = "correlation") Pagal autokovariacijos ir autokoreliacijos funkcijų grafiką sprendžiama apie laiko eilutės narių tarpusavio priklausomybę, o tuo pačiu ir apie Y t modelio pavidalą. Autokoreliacijos funkcijos (5) reikšmės parodo tiesinės priklausomybės stiprumą tarp laiko eilutės narių Y t ir Y t k. Pagal tai sprendžiama, kokią įtaką dabartinei stebimo rodiklio reikšmei turi praeityje stebėtos reikšmės. Dydis k yra laiko pokytis (lag). 3
2.2 Trendo komponentės išskyrimas Stacionaraus atsitiktinio proceso vidurkis turi būti pastovus ir nepriklausyti nuo laiko. Daugumos ekonominių rodiklių vidurkis priklauso nuo laiko, todėl toks procesas nėra stacionarus. Ilgalaikė proceso kitimo tendencija vadinama trendu. Laikome, kad tai yra tam tikra glodi laiko funkcija ir pagal (1) formulę žymima T t. Laiko eilučių modeliai rašomi stacionariems procesams, todėl trendą iš stebėtos laiko eilutės Y t reikia išskirti. Tarkime, kad stebėta laiko eilutė sezoninės komponentės neturi, todėl Y t = T t + X t, t = 1, 2..., n. (6) Čia X t yra tam tikras apie trendą T t išsibarstęs procesas su nuliniu vidurkiu. Dažniausiai laikoma, kad trendas yra nesudėtingo pavidalo deterministinė laiko funkcija. Pačiu paprasčiausiu atveju galima nagrinėti tiesinį trendą T t = b 0 + b 1 t, t = 1, 2..., n. (7) Kartais laiko eilutei galima pritaikyti kvadratinį trendą, kuris užrašomas formule T t = b 0 + b 1 t + b 2 t 2, t = 1, 2..., n. (8) Formulėmis (7) ir (8) aprašyto trendo funkcijų parametrus galima įvertinti iš regresinės analizės žinomu mažiausių kvadratų metodu. Iš pradinės laiko eilutės atėmus trendo įvertį gauname nauja laiko eilutę ˆX t = Y t ˆT t, t = 1, 2..., n. (9) Užduotis. sudaryti tiesinio ar kvadratinio laiko eilutės trendo modelį, įverinti jo parametrus, lm nubraižyti laiko eilutės ir trendo grafiką, fitted, plot, points parinkti labiau tinkantį trendo modelį, gauti naujos laiko eilutės be trendo komponentės reikšmių vektorių. Pastabos. Tiesinio trendo (7) parametrus paprasčiausia įvertinti naudojant procedūrą lm. Laikome, kad kintamasis Y priklauso nuo kito kintamojo t, kurio reikšmės 1, 2,..., n. t <- 1:n trendas.t <- lm(y ~ 1 + t) summary(trendas.t) Gali būti, kad laiko eilutės vidurkis laike keičias nežymiai, todėl visada reikia patikrinti gauto trendo modelio parametrų reikšmingumą. Ar trendo modelis tinkamas, galima nuspręsti pagal viso regresinio modelio reikšmingumą, determinacijos koeficiento ir paklaidų dispersijos reikšmes. Turint laiko eilutės grafiką, trendo kreivė braižoma su procedūra points. Tam reikia turėti trendo T t prognozę visuose taškuose t, kurią apskaičiuojame su procedūra fitted. 4
T <- fitted(trendas.t) plot(y, type = "l") points(t, T, type = "l", col = "red") Analogiškai gaunami kvadratinio trendo parametrai. Nors funkcija (8) yra netiesinė, bet jos parametrams vertinti taip pat tinka procedūra lm. Šiuo atveju reikia sudaryti tiesinę funkciją nuo netiesinių kintamųjų, todėl sukuriame papildomą kintamąjį kurio reikšmės lygios t 2. t <- 1:n k <- t^2 trendas.k <- lm(y ~ 1 + t + k) summary(trendas.k) Kuris trendo modelis labiau tinka nagrinėjamai laiko eilutei, reikia nuspręsti atsižvelgiant į laiko eilutės grafiką bei trendo modelių charakteristikas. Žinoma, ilgalaikę proceso tendenciją aprašančių funkcijų gali būti ir daugiau: eksponentinis trendas, logaritminis trendas ir pan. Negalima tiksliai pasakyti, kuris iš jų yra tinkamas konkrečiai laiko eilutei. Bet kuriuo atveju trendo funkcijos pasirinkimas turi būti gana stipriai argumentuotas, nes tada daroma prielaida, kad ta pati tendencija galioja visai laiko eilutei Y t su visomis t reikšmėmis. Praktikoje stebimos laiko eilutės dėl įvairiausių priežasčių (pvz., ekonominių krizių, demografinio sprogimo ar staigaus sąlygų pasikeitimo) savo kitimo tendenciją keičia, todėl į tai taip pat reikia atsižvelgti. 2.3 Sezoninės komponentės išskyrimas Dalis ekonominių, demografinių, socialinių ir kitų rodiklių keičiasi periodiškai. Tokią laiko eilutės komponentę vadiname sezoniškumu ir pagal (1) formulę žymime S t. Tai periodinė funkcija su periodu p, todėl S t = S t+p, be to reikalaujame, kad būtų teisinga lygybė p S t = 0. (10) t=1 Tarkime, kad stebėta laiko eilutė trendo komponentės neturi, todėl Y t = S t + X t, t = 1, 2..., n. (11) Vertinant sezoniškumą, išrenkame tuos stebinius, kurie skiriasi per sveiką periodų p skaičių D(τ) = {t : t = kp + τ, k = 0, 1, 2,...}. (12) Pavyzdžiui, jei laiko eilutės periodas lygus metams, o τ yra lapkritis, tada p = 12, o iš laiko eilutės bus išrenkami visų lapkričio mėnesių stebiniai, kur D(τ) bus jų indeksų aibė. Sezoninės komponentės įvertį gauname apskaičiuodami visų taip išrinktų stebinių vidurkį Ŝ t = 1 n τ t D(τ) Y t, t = 1,2..., p, (13) kur n τ yra aibės D(τ) elementų skaičius. Skaičiavimus pakartojame su visomis τ = 1, 2,..., p reikšmėmis ir tokiu būdu gauname S t įverčius per visą periodą. Sezoninės komponentės vertinimui gali būti naudojami fiktyvūs kintamieji (dummy variables), kurie gali įgyti tik dvi reikšmes. Pavyzdžiui, jei laiko eilutės periodas lygus 12 mėnesių, o τ yra lapkritis, tai kintamasis s τ lygus vienetui kiekvienam laiko eilutės lapkričio 5
mėnesio stebiniui, ir lygus nuliui visais kitais atvejais. Trumpiau šią sąlygą galima užrašyti taip 1, jei t D(τ), s τ = τ = 1, 2,..., p. (14) 0, jei t / D(τ), Tokių kintamųjų bus tiek, koks yra laiko eilutės periodas p. galime parašyti tokiu pavidalu: Tada sezoninę komponentę S t = β 1 s 1 + β 2 s 2 + + β p s p. (15) Nesunku suprasti, kad tam tikru laiko momentu t nelygus nuliui bus tik vienas toks fiktyvus kintamasis, todėl β 1, t = 1, p + 1,... β 2, t = 2, p + 2,... S t = β 3, t = 3, p + 3,... (16) β p, t = p, p + p,... Lygties (15) parametrus įvertiname mažiausių kvadratų metodu. Iš pradinės laiko eilutės atėmus sezono įvertį gauname nauja laiko eilutę ˆX t = Y t Ŝt, t = 1, 2..., n. (17) Užduotis. sudaryti sezoninės komponentės modelį, įverinti jo parametrus, mean arba lm nubraižyti laiko eilutės ir sezoninių svyravimų grafiką, fitted, plot, points gauti naujos laiko eilutės be sezoninės komponentės reikšmių vektorių. Pastabos. Prieš pradedant šį laiko eilutės dekompozicijos etapą, trendas jau turi būti pašalintas. Sezoninę komponentę vertinant pagal (13) formulę, iš laiko eilutės (11) reikia išrinkti narius, kurių numeriai sudaro aibę (12). Tarkime, kad kad tam tikrą rodiklį stebime n mėnesių. Tada laiko eilutės periodas p = 12, o jos ilgis n. Iš pradžių sudarysime mėnesių numerių aibę. n <- length(y) p <- 12 i <- rep(1:p, length.out = n) # mėnesių numerių aibė Turėdami visų mėnesių numerių aibę iš jos išrenkame visus laiko eilutės sausio mėnesio numerius, pagal juos išrenkame atitinkamus stebinius ir apskaičiuojame sausio mėnesio sezoniškumo indeksą. Tokius skaičiavimus pakartoję su visais mėnesiais gautume sezoniškumo komponentės įvertį. i.tau <- 1 D.tau <- which(i == i.tau) D.tau # sausio mėnesio numeris # sausio mėnesio indeksų aibė Y.sausis <- Y[D.tau] # sausio mėnesio stebiniai S.1 <- mean(y.sausis) # sausio mėnesio sezoniškumo įvertis 6
Norint sezoniškumo komponentę įvertinti regresiniu būdu, reikia sudaryti formule (14) apibrėžtus fiktyvius kintamuosius s τ. Tada iš jų sudaroma plano matrica Π, kurioje yra n eilučių ir p stulpelių. Šiuo atveju j-asis stulpelis atitinka j-ąjį mėnesį, o vienetas tokiame stulpelyje įrašomas tada, kai laiko eilutės reikšmė gauta j-ąjį mėnesį. 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 Y..... β 1 1 X Y 2 Y =., Π = 0 0 0 1 0 β 2 1 0 0 0 0 1, β = β X 2 3, X = 1 0 0 0 0... (18) Y n 0 1 0 0 0 X β n p 0 0 1 0 0..... 0 0 0 1 0 0 0 0 0 1 Laiko eilutės (11) su sezonine komponente modelis matriciniu pavidalu užrašomas taip: Y = Πβ + X (19) Tokio modelio parametrus vertiname su procedūra lm, tačiau prieš tai reikia sudaryti plano matricą. Tam naudojama speciali R procedūra model.matrix, kuriai reikia nurodyti modelio formulę ir kintamuosius. Kintamasis, iš kurio bus sudaromi fiktyvūs kintamieji, turi būti kategorinis. Jį su procedūra factor gausime iš mėnesių numerių kintamojo. n <- length(y) p <- 12 i <- rep(1:p, length.out = n) s <- factor(i) Formulė rašoma taip pat, kaip ir procedūrai lm. Reikia atkreipti dėmesį, kad modelyje (15) nėra laisvojo nario. Patogumo dėlei prie sudarytos plano matricos prijungiame laiko eilutės reikšmių vektorių. P <- model.matrix(y ~ 0 + s) # nulis formulėje nurodo, kad laisvojo nario nėra P <- data.frame(y, P) Toliau parametrų vertinimui naudojame procedūrą lm. sezonas.y <- lm(y ~ 0 +., data = P) # taškas formulėje nurodo visus kintamuosius summary(sezonas.y) Gauti parametrų įverčiai ir yra sezoninės komponentės įverčiai. Regresinės analizės rezultatų lentelėje patikrintos hipotezės apie jų reikšmingumą, tačiau šiuo atveju tai nesvarbu. Sezoninius svyravimus visai laiko eilutei galime prognozuoti įprastomis procedūromis fitted arba predict. Sezoninę komponentę atėmus iš pradinės laiko eilutės (be trendo) gausime atsitiktinių svyravimų komponentę, kuriai ir rašomi tikimybiniai laiko eilučių modeliai. S <- fitted(sezonas.y) X <- Y - S 7
3 Kontroliniai klausimai Aprašomoji statistika. Koks nagrinėjamos laiko eilutės ilgis? Ar iš grafiko galima pasakyti, kad laiko eilutė yra stacionari? Kaip keičiasi skaitinės charakteristikos pirmoje laiko eilutės pusėje ir antroje? Ką apie laiko eilutę galima pasakyti iš autokoreliacinės funkcijos grafiko? Trendo ir sezoninės komponentės išskyrimas. Kokia trendo forma tinka nagrinėjamai laiko eilutei? Kam lygus laiko eilutės be trendo vidurkis ir dispersija? Koks yra laiko eilutės periodas? Ar gautas sezoninės komponentės įvertis tenkina (10) sąlygą? Išvados iš laiko eilutės dekompozicijos. Apskaičiuokite ir paaiškinkite atsitiktinių svyravimų X t autokoreliacinę funkciją. Patikrinkite hipotezę apie atsitiktinių svyravimų X t normalumą. Bet kokiu būdu apskaičiuokite laiko eilutės prognozę vieną laiko momentą į priekį. 4 Reikalavimui darbui Namų darbo ataskaitai reikia paruošti: gautų rezultatų aprašymą, v_pavarde_ekomet_lab3.pdf skaičiavimų su R programos kodą. v_pavarde_ekomet_lab3.r Gautus rezultatus būtina pakomentuoti ir paaiškinti, ką reiškia kiekviena apskaičiuota charakteristika, priimta ar atmesta hipotezė, nubraižytas grafikas ir t.t. Visus teiginius reikia pagrįsti skaičiavimais, o juos iliustruoti histogramomis, stačiakampėmis diagramomis ar kitais grafikais. Statistiniam tyrimui stenkitės suteikti ekonominę prasmę ir taip atskleisti nagrinėjamą reiškinį. R programos kodas turi būti tvarkingas ir aiškiai perskaitomas, t.y. jis turi būti skirtas ne tik kompiuteriui, bet ir žmogui. Programos tekstas turi būti su komentarais. 8