Na uvedenej stránke s dátami si stiahnite tieto (dolu na stránke):
Načítajte ich do R-ka:
load("NLucic_SIHTD_Continuous_Foreign_Trade_series_1900-2021-14032024.Rdata")
Vytvorí sa objekt x:
class(x)
## [1] "data.frame"
Môžeme si vybrať stĺpec na analyzovanie, napríklad:
data1 <- x[, 10]
data2 <- x[, "Bermuda"]
data3 <- x$BritishVirginIslands
Aké ostrovy sú k dispozícii na modelovanie:
colnames(x)
## [1] "Years" "AmericanSamoa"
## [3] "Bermuda" "BritishVirginIslands"
## [5] "CaymanIslands" "CookIslands"
## [7] "FalklandIslands" "FaroeIslands"
## [9] "FrenchGuiana" "FrenchPolynesia"
## [11] "Greenland" "Guadeloupe"
## [13] "Guam" "Hawaii"
## [15] "Martinique" "Montserrat"
## [17] "NetherlandsAntilles" "NewCaledonia"
## [19] "Niue" "PuertoRico"
## [21] "Reunion" "SaintPierreetMiquelon"
## [23] "TurksandCaicos" "USVirginIslands"
## [25] "AntiguaandBarbuda" "Bahamas"
## [27] "Barbados" "Belize"
## [29] "Cuba" "Cyprus"
## [31] "Dominica" "DominicanRepublic"
## [33] "Fiji" "Grenada"
## [35] "GuineaBissau" "Guyana"
## [37] "Haïti" "Iceland"
## [39] "Jamaica" "Malta"
## [41] "Mauritius" "SaintKitts.Nevis"
## [43] "SaintLucia" "SaintVincent.Grenadines"
## [45] "Samoa" "Seychelles"
## [47] "SriLanka" "Suriname"
## [49] "TrinidadandTobago"
Vyberte si jeden z ostrovov okrem nasledovných (kvôli porovnanteľným výsledkom):
Kaaždý pracuje s inými dátami, rezervácia v Google dokumente v hárku ČR mINF - projekt.
Stručne popíšte, čo vyjadrujú dáta, ktoré modelujete a ostrov, ktorý ste si vybrali. Charakteristika má byť stručná - nejde o projekt z ekonómie ani z geografie, cieľom je mať nejaké predstavu o tom, čo modelujeme (lepšiu ako “tie dáta, pre ktoré mám nájsť model”).
Skontrolujte, či sú v dátach nejaké NA hodnoty na konci - ak áno,
treba ich vynechať. Z vektora hodnôt spravte časový rad pomocou funkcie
ts a informácie o dátach v prvom stĺpci. Vykreslite ich
priebeh, priebeh ich logaritmov a diferencií logaritmov.
Zobrazme si niektorý stĺpec s dátami:
plot(data)
S rastúcimi hodnotami rastie disperzia dát, preto dáta zlogaritmujeme:
plot(log(data))
V týchto dátach je rastúci trend, preto nie sú stacionárne a kvôli tomu ich zdiferencujeme:
plot(diff(log(data)))
Pre tieto dáta budeme hľadať ARMA model, bude však formulovaný ako ARIMA model pre logaritmy. Hľadáme model v tvare
sarima(log(data), p, 1, q) # + treba premysliet, co musi platit pre konstantu
Ukážte, že diferencie logaritmov už nie je potrebné ďalej diferencovať. Vysvetlite parametre použitého testu, testovanú hypotézu a záver.
Zistite, či môžeme diferencie logaritmov považovať za biely šum. Zobrazte autokorelačnú funkciu a p-hodnoty Ljung Boxovho testu a skomentujte výsledky.
Presne napíšte, aká hypotéza sa pre každú jednotlivú hypotézu pri hodnotách ACF a pri každom zbehnutom Ljung-Boxovom teste. Teda namiesto “Je to biely šum, lebo všetky p-hodnoty Ljung-Boxovho testu sú väčšie ako 0,05” napíšte (vo vlastnej formulácii) “Jednotlivé Ljung-Boxove testy testujú hypotézy… Keďže p-hodnoty vyšli…, tieto hypotézy… To znamená, že …”
Nájdite model pre logaritmy pomocou funkcie auto.arima (teda
auto.arima(log(data), ...)), pričom
Odhadnite získaný model pomocou funkcie sarima (z balíka
astsa) a zhodnoťte rezíduá. Podobne ako v predchádzajúcej
časti, aj tu píšte zdôvodnenia svojich tvrdení. Zapíšte rovnicu
vyjadrujúcu odhadnutý model. Skomentujte prítomnosť, resp. neprítomnosť
konštantného člena v modeli pre diferencie a súvislosť s priebehom
nediferencovaných dát.
Prejdeme znova všetky modely uvažované pri použití funkcie
auto.arima. Explicitne vypíšte všetky, ktoré sú to.
Skomentujte zaradenie, resp. nezaradenie konštantného člena do modelu - rozhodnúť sa musíte na základe priebehu nediferencovaných dát.
Za “dobrý model” budeme považovať taký, pre ktorý sú p-hodnoty
Ljung-Boxovho testu pre všetky počty korelácií - od minimálneho po
maximálny uvažovaný pri použití funkcie sarima - väčšie ako
0,05. Ktoré modely vyšli ako dobré?
Spravte tabuľku, v ktorej dobré modely zoradíte podľa Bayesovho informačného kritéria od najlepšieho po najhorší.
Zhoduje sa najlepší model s tým, ktorý vrátila funkcia
auto.arima. Ak vyšiel iný, zapíšte jeho rovnicu a ukážte
výsledky testovania rezíduí.
Spravte predikcie na niekoľko nasledujúcich rokov a skomentujte ich priebeh (vzhľadom na doterajší priebeh dát).