Budeme analyzovať dáta dlhodobých úrokových mierach z Európskej centrálnej banky, pričom použijeme mesačné dáta z obdobia 2001-2021 (resp. od neskoršieho času, ak z roku 2001 ešte dáta nie sú dostupné). https://sdw.ecb.europa.eu/browse.do?node=bbn4864
Na stránke predmetu je csv-súbor stiahnutý z webu ECB v auguste (pri aktuálnom stiahnutí bude obsahovať aj novšie dáta).
Načítame dáta:
# DOPLNTE
data <- read.csv( , # cesta k suboru
skip = , # vynechanie riadkov,
# chceme iba data
header = FALSE, # vynechali sme riadky
row.names = 1) # prvy sltpec nie su data
# tieto datumy pouzijeme
# ako nazvy riadkov
head(data)
## V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14
## 2021Dec -0.05 0.03 0.44 0.64 2.62 -0.38 -0.08 0.11 0.41 -0.06 0.05 1.29 0.38
## 2021Nov -0.01 0.07 0.25 0.55 2.62 -0.31 0.01 0.20 0.47 0.00 0.09 1.22 0.32
## 2021Oct 0.08 0.16 0.25 0.39 2.34 -0.21 0.10 0.18 0.47 0.08 0.20 0.96 0.32
## 2021Sep -0.08 0.01 0.15 0.23 1.90 -0.36 -0.01 0.03 0.33 -0.07 0.04 0.80 0.37
## 2021Aug -0.23 -0.14 0.14 0.15 1.74 -0.54 -0.16 0.02 0.21 -0.21 -0.11 0.59 0.43
## 2021Jul -0.13 -0.03 0.14 0.25 1.72 -0.45 -0.05 0.09 0.33 -0.10 -0.01 0.70 0.45
## V15 V16 V17 V18 V19 V20 V21 V22 V23 V24 V25 V26 V27
## 2021Dec 4.40 0.10 1.05 0.16 -0.22 0.30 0.59 -0.32 3.35 0.35 5.37 0.14 0.17
## 2021Nov 4.07 0.19 1.01 0.16 -0.21 0.26 0.64 -0.27 3.12 0.39 5.11 0.27 0.15
## 2021Oct 3.69 0.22 0.95 0.16 -0.20 0.17 0.67 -0.18 2.63 0.39 4.75 0.38 0.17
## 2021Sep 3.09 0.07 0.78 0.16 -0.37 0.02 0.57 -0.34 1.87 0.26 4.00 0.27 0.05
## 2021Aug 2.84 -0.08 0.63 0.16 -0.47 0.00 0.44 -0.48 1.60 0.14 3.72 0.11 -0.09
## 2021Jul 2.83 0.03 0.75 0.16 -0.40 0.09 0.49 -0.38 1.61 0.27 3.24 0.18 0.14
## V28
## 2021Dec -0.02
## 2021Nov 0.02
## 2021Oct 0.13
## 2021Sep -0.08
## 2021Aug -0.25
## 2021Jul -0.14
Získajte zo súboru s dátami aj názvy premenných (štáty a meny).
head(nazvy)
## [,1]
## [1,] "Austria, Euro"
## [2,] "Belgium, Euro"
## [3,] "Bulgaria, Bulgarian lev"
## [4,] "Cyprus, Euro"
## [5,] "Czech Republic, Czech koruna"
## [6,] "Germany, Euro"
Potom môžeme priradiť stĺpcom ich názvy a získať dáta, s ktorými budeme ďalej pracovať.
colnames(data) <- nazvy
head(data)
## Austria, Euro Belgium, Euro Bulgaria, Bulgarian lev Cyprus, Euro
## 2021Dec -0.05 0.03 0.44 0.64
## 2021Nov -0.01 0.07 0.25 0.55
## 2021Oct 0.08 0.16 0.25 0.39
## 2021Sep -0.08 0.01 0.15 0.23
## 2021Aug -0.23 -0.14 0.14 0.15
## 2021Jul -0.13 -0.03 0.14 0.25
## Czech Republic, Czech koruna Germany, Euro Denmark, Danish krone
## 2021Dec 2.62 -0.38 -0.08
## 2021Nov 2.62 -0.31 0.01
## 2021Oct 2.34 -0.21 0.10
## 2021Sep 1.90 -0.36 -0.01
## 2021Aug 1.74 -0.54 -0.16
## 2021Jul 1.72 -0.45 -0.05
## Estonia, Euro Spain, Euro Finland, Euro France, Euro Greece, Euro
## 2021Dec 0.11 0.41 -0.06 0.05 1.29
## 2021Nov 0.20 0.47 0.00 0.09 1.22
## 2021Oct 0.18 0.47 0.08 0.20 0.96
## 2021Sep 0.03 0.33 -0.07 0.04 0.80
## 2021Aug 0.02 0.21 -0.21 -0.11 0.59
## 2021Jul 0.09 0.33 -0.10 -0.01 0.70
## Croatia, Croatian kuna Hungary, Hungarian forint Ireland, Euro
## 2021Dec 0.38 4.40 0.10
## 2021Nov 0.32 4.07 0.19
## 2021Oct 0.32 3.69 0.22
## 2021Sep 0.37 3.09 0.07
## 2021Aug 0.43 2.84 -0.08
## 2021Jul 0.45 2.83 0.03
## Italy, Euro Lithuania, Euro Luxembourg, Euro Latvia, Euro Malta, Euro
## 2021Dec 1.05 0.16 -0.22 0.30 0.59
## 2021Nov 1.01 0.16 -0.21 0.26 0.64
## 2021Oct 0.95 0.16 -0.20 0.17 0.67
## 2021Sep 0.78 0.16 -0.37 0.02 0.57
## 2021Aug 0.63 0.16 -0.47 0.00 0.44
## 2021Jul 0.75 0.16 -0.40 0.09 0.49
## Netherlands, Euro Poland, Polish zloty Portugal, Euro
## 2021Dec -0.32 3.35 0.35
## 2021Nov -0.27 3.12 0.39
## 2021Oct -0.18 2.63 0.39
## 2021Sep -0.34 1.87 0.26
## 2021Aug -0.48 1.60 0.14
## 2021Jul -0.38 1.61 0.27
## Romania, Romanian leu Sweden, Swedish krona Slovenia, Euro
## 2021Dec 5.37 0.14 0.17
## 2021Nov 5.11 0.27 0.15
## 2021Oct 4.75 0.38 0.17
## 2021Sep 4.00 0.27 0.05
## 2021Aug 3.72 0.11 -0.09
## 2021Jul 3.24 0.18 0.14
## Slovakia, Euro
## 2021Dec -0.02
## 2021Nov 0.02
## 2021Oct 0.13
## 2021Sep -0.08
## 2021Aug -0.25
## 2021Jul -0.14
Spravte načítanie dát podľa horeuvedeného postupu. Potom si vyberte jeden zo štátov, s týmito podmienkami:
sum(!is.na(data[, "Estonia, Euro"]))
## [1] 19
V dátach je vizuálne vidieť klesajúci trend. (Úrokové miery typicky klesali. Dáta sú v našom súbore usporiadané od najnovších po najstaršie.)
Pri odhadovaní modelov v časti D výjdu aspoň dva z modelov ako dobré.
Pozor na Grécko - tam sú dáta typu character
kvôli jednému chýbajúcemu pozorovaniu označenému ako -
, čo treba v prípade výberu týchto dát ošetriť (chýbajúcu hodnotu môžete nahradiť priemerom susedných).
Každý pracuje s inými dátami, rezervácia v google dokumente.
Spravte z vašich dát časový rad, ktorý končí v decemberi 2021 a začína v januári 2001 (resp. neskôr, odkedy sú dáta dostupné, s výnimkou už uvedeného Estónska to však nie je taký výrazne malý počet dostupných dát):
Napíšte časový rozsah dát, s ktorými pracujete. Zobrazte časový priebeh úrokových mier a ich diferencií.
Kvôli klesajúcemu trendu v dátach nemôžeme považovať úrokové miery za stacionárne. Minimálne teda budeme pracovať s prvými diferenciami. V týh už trend nevidíme, ale môže byť potrebné diferencovať ich kvôli jednotkovému koreňu. Testujte prítomnosť jednotkového koreňa ADF testom. Uveďte nulovú hypotézu, hodnotu testovacej štatistiky, kritickú hodnotu a záver.
Ak treba, diferencujte ďalej, kým nedostanete dáta bez jednotkového koreňa. Ďalej používajte tieto diferencie (t.j. testovanie bieleho šumu a hľadanie ARMA modelu bude pre tieto, už stacionárne dáta).
Zistite, či môžeme diferencie (tie, ktoré vám vyšli bez jednotkového koreňa) úrokových mier 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 ..."
Pre diferencie (znovu - tie, v ktorých už nebol jednotkový koreň) úrokových mier odhadnite ARMA modely s AR rádom 0, 1, 2, 3 a MA rádom tiež 0, 1, 2, 3 (všetky môžné kombinácie). Modely odhadujte ako modely pre úrokové miery s uvedením potrebného počtu diferencií, aby sa predikcie dali robiť pre úrokové miery (a nie ich diferencie).
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 24 väčšie ako 0,05. Ktoré modely vyšli ako dobré?
Spomedzi dobrých model vyberte tie dva, ktoré majú najmenšiu hodnotu Bayesovho informačného kritéria.
Pre najlepší model (t.j. dobrý model v zmysle Ljung-Boxovho testu s namenším BIC) uveďte:
Poznámky: Požiadavka na dáta zo začiatku zadania sa vzťahuje na to, že aspoň dva z týchto modelov výjdu ako dobrý.
Uvažujme dva modely z predchádzajúcej časti.
V pôvodnom súbore s dátami sú k dispozícii aj dáta z roku 2022 od januára do júla, ktoré sme pri našom modelovaní nepoužili. Načítajte ich, použijeme ich na zhodnotenie predikcií.
Spravte pre tieto mesiace predikcie pomocou vášho modelu. Zakreslite do jedného grafu farebne odlíšené:
Skomentujte získaný výsledok (Sú hodnoty systematicky vyšie alebo nižšie ako predikcie? Zmestia sa do intervalov spoľahlivosti? Iné podobné komentáre.)
Na druhom obrázku zobrazte:
Nakoľko sa predikcie z týchto dvoch modelov líšia (vzhľadom na reálne nadobudnuté hodnoty a ich rozdiely oproti predikciám)?