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

Časť A (10 bodov): Príprava dát

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

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í.

Časť B (10 bodov): Testovanie jednotkového koreňa

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).

Časť C (10 bodov): Testovanie bieleho šumu

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 ..."

Časť D (15 bodov): ARMA modely

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ý.

Časť E (5 bodov): Predikcie

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)?