class: center, middle, inverse, title-slide .title[ # Vektorové Autoregresné Modely ] .subtitle[ ## Prognózovanie ] .author[ ### Tomáš Oleš ] .institute[ ### Katedra hospodárskej politiky ] .date[ ### 2023 ] --- <style type="text/css"> pre { max-width: 100%; } </style> --- ## Potrebné nástroje ```r var_packages <- c("vars", "urca", "mFilter","tseries", "GGally", "forecast", "tidyverse", "stargazer", "xts", "svars", "bvarsv", "tsibble") not_installed <- var_packages[!(var_packages %in% installed.packages()[ , "Package"])] if(length(not_installed)) install.packages(not_installed) invisible(lapply(var_packages, library, character.only = TRUE)) ``` Načitanie údajov ```r y = read.csv("~/data/VAR_data_simulated_class.csv") n_periods <- 400 y <- ts(y, start = 1, end = n_periods, frequency = 1) ``` --- .center[ <img src="1_week_files/figure-html/unnamed-chunk-6-1.png" width="504" /> ] --- Otestovanie stacionarity ```r for (i in 1:3) { adf_result <- adf.test(y[, i]) cat("ADF Test for Series", i, "\n") cat("Test Statistic:", adf_result$statistic, "\n") cat("P-value:", adf_result$p.value, "\n") cat("Critical Values:", adf_result$critical, "\n") cat("Is the series stationary?", adf_result$p.value < 0.05, "\n\n") } ``` ``` ## ADF Test for Series 1 ## Test Statistic: -6.62849 ## P-value: 0.01 ## Critical Values: ## Is the series stationary? TRUE ## ## ADF Test for Series 2 ## Test Statistic: -7.364723 ## P-value: 0.01 ## Critical Values: ## Is the series stationary? TRUE ## ## ADF Test for Series 3 ## Test Statistic: -4.740779 ## P-value: 0.01 ## Critical Values: ## Is the series stationary? TRUE ``` --- Štruktúra údajov ```r str(y) ``` ``` ## Time-Series [1:400, 1:3] from 1 to 400: 0 0 0 1.15 1.08 ... ## - attr(*, "dimnames")=List of 2 ## ..$ : NULL ## ..$ : chr [1:3] "y1" "y2" "y3" ``` ```r head(y) ``` ``` ## Time Series: ## Start = 1 ## End = 6 ## Frequency = 1 ## y1 y2 y3 ## 1 0.0000000 0.00000000 0.00000000 ## 2 0.0000000 0.00000000 0.00000000 ## 3 0.0000000 0.00000000 0.00000000 ## 4 1.1529362 -0.02884155 0.07050839 ## 5 1.0833299 0.67934843 0.14338941 ## 6 0.6718484 -1.51712267 1.73957619 ``` --- --- ## Autoregresný proces - jednoduchý spôsob na zobrazenie závislosti medzi dvoma nasledujucimi procesmi: `$$y_t = \mu_o + \phi_1 y_{t-1} + \epsilon_t$$` <br> kde `\(\epsilon_t\)` je biely šum s konštantnou varianciou a priemerom - tento proces nazývame: + jednoduchý autotoregresný proces prvého rádu (first-order) + `\(AR(1) \rightarrow\)` jedno oneskorenie (lag) `\(y_t\)` + je stacionárny ak `\(\mid \phi_1 \mid <1\)` -- - vo všeobecnosti: `$$y_t = \mu_0 + \phi_1 y_{t-1}+...+\phi_p y_{t-p} + u_t$$` `$$y_t = \mu_0 + \sum_{i=1}^p\phi_iL^iy_t + u_t$$` --- ## VAR - systém regresných modelov (viac ako jedna premenná) - množina lineárnych dynamických rovníc, kde každá premenný je špecifikovaná ako funkcia **všetkých ostatných premenných** a **rovnakého počtu oneskoreni** - to znamená všeky premenné sú **endogenne** (determinované v rámci systému) --- ## VAR s dvoma premennými (bi-variate) `$$y_{1t} = \beta_{10} + \beta_{11}y_{1t-1} + \alpha_{11}y_{2t-1} + u_{1t}$$` `$$y_{2t} = \beta_{20} + \beta_{21}y_{2t-1} + \alpha_{22}y_{1t-1} + u_{2t}$$` - všimnite si, že: + v jednopremennom `\(AR(1)\)`, sú 2 neznáme premenné `\(\mu_0\)` a `\(\phi_1\)`. + v dvojpremennom `\(VAR(1)\)`, je 6 neznámych premenných `$$\beta_{10}, \beta_{11}, \alpha_{11}$$` `$$\beta_{20}, \beta_{21}, \alpha_{22}$$`. --- ## VAR modely vyšších rádov - jednopremenný `\(AR(p)\)` `$$y_t = \mu_0 + \phi_1 y_{t-1}+...+\phi_p y_{t-p} + \epsilon_t$$` - dvojpremenný `\(VAR(p)\)` `$$y_{1t} = \beta_{10} + \beta_{11}y_{1t-1} + \alpha_{11}y_{2t-1} + ... + \beta_{11}y_{1t-p} + \alpha_{11}y_{2t-p} + u_{1t}$$` `$$y_{2t} = \beta_{20} + \beta_{21}y_{2t-1} + \alpha_{21}y_{1t-1} + ... + \beta_{21}y_{2t-p} + \alpha_{22}y_{1t-p} + u_{2t}$$` Je potrebné si uvedomiť, že s VAR model nemusí mať len dve premenné, s ich počtom počet parametrov rastie, čo môže viesť k **vyčerpaniu počtu stupňov voľnosti**. --- ## VAR: maticový zápis - dvojpremenný VAR(1) model: `$$y_{1t} = \beta_{10} + \beta_{11}y_{1t-1} + \alpha_{11}y_{2t-1} + u_{1t}$$` `$$y_{2t} = \beta_{20} + \beta_{21}y_{2t-1} + \alpha_{22}y_{1t-1} + u_{2t}$$` - v maticovej podobe `$$\begin{pmatrix} y_{1t} \\ y_{2t}\end{pmatrix} = \begin{pmatrix} \beta_{10} \\ \beta_{20}\end{pmatrix} + \begin{pmatrix} \beta_{11} & \alpha_{11}\\ \beta_{21} & \alpha_{22}\end{pmatrix}\begin{pmatrix} y_{1t-1} \\ y_{2t-1}\end{pmatrix} +\begin{pmatrix} u_{1t} \\ y_{ut}\end{pmatrix}$$` `$$\mathbf{Y_t} = \mathbf{\beta_0} + \mathbf{\beta_1}\mathbf{Y_{t-1}} + \mathbf{u_t}$$` --- ## VAR s exogénnymi premennými - VAR modely môžu byť špevifikované ako súčasná hodnota všetkých endogénnych premenných, v našom prípade `\(y_{1t}\)` a `\(y_{2t}\)` ako: + ich vlastná história, **a** + súčasná a minulá hodnota exogennych premenných `\(X_t\)`. - VAR model prvého rádu, kde je súčastná hodnota ovplyvňovaná jedným oneskorením edogénných premenných a súčastnou hodnotou exogénnych premenných môžeme zapísať: `$$\mathbf{Y_t} = \mathbf{\beta_0} + \mathbf{\beta_1}\mathbf{Y_{t-1}} + \mathbf{\Omega}\mathbf{X_{t}} + \mathbf{u_t}$$` --- ## Počet pozorovaní a počet lagov - ak je `\(T\)` pozorovaní pre všetky premenné, plný počet pozorovaní bude dostupný len pre `\(t=p + 1\)`, `\(t=p + 2\)`, `\(...\)`, `\(T\)`, resp. `\(VAR(p) \rightarrow T-p\)` na odhad všetkých neznámych parametrov, `\(\beta_0, \beta_1,..., \beta_p\)`. - počet lagov by mal byť "správny": + príliš málo = autokorelacia (neefektívnosť); + príliš veľa = nedostatok stupňov voľnosti. - "správny" počet lagov je ten, ktorý minimalizuje AIC (goodness of fit vs. complexitou; resp. variance vs. bias tradeoff): `$$MAIC = ln(|\hat{\sum}|) + 2k/(T-p)$$` + `\(k\)` je celkový počet parametrov vo všetkých rovniciach VAR modelu + `\(T-p\)` je počet pozorovaní použitých na odhad --- ## Príklad: výberu lagov Preskúmanie variability v údajoch ```r for (i in 1:3) { acf(y[, i]) pacf(y[, i]) } ``` --- --- ### Výber správneho lagov ```r lagselect <- VARselect(y, lag.max = 10, type = "none") lagselect$selection ``` ``` ## AIC(n) HQ(n) SC(n) FPE(n) ## 3 3 3 3 ``` --- ## Stabilita VAR systému `$$\mathbf{Y_t} = \mathbf{\beta_0} + \mathbf{\beta_1}\mathbf{Y_{t-1}} + \mathbf{u_t}$$` - systém je stabilný len pokiaľ je koreň (root) ( `\(|\mathbf{\beta_1}- \lambda I| = 0\)` ) `\(\beta_1\)` menší ako `\(1\)` v absolútnej hodnote --- ## Príklad: odhad VAR modelu ```r estim_var <- VAR(y, p = 3, type = "none") summary(estim_var) ``` Test stability VAR modelu ako celku ```r roots1 <- roots(estim_var, modulus = TRUE) summary(roots1) ``` ``` ## Min. 1st Qu. Median Mean 3rd Qu. Max. ## 0.3664 0.4477 0.4533 0.6062 0.8253 0.8896 ``` --- ```r summary(estim_var[["varresult"]][["y2"]]) ``` ``` ## ## Call: ## lm(formula = y ~ -1 + ., data = datamat) ## ## Residuals: ## Min 1Q Median 3Q Max ## -2.6432 -0.6600 0.0652 0.7183 2.5665 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## y1.l1 -0.055091 0.048716 -1.131 0.2588 ## y2.l1 -0.343084 0.049618 -6.914 1.94e-11 *** ## y3.l1 0.004598 0.043208 0.106 0.9153 ## y1.l2 0.372513 0.057977 6.425 3.86e-10 *** ## y2.l2 0.278253 0.047781 5.823 1.21e-08 *** ## y3.l2 -0.100953 0.043167 -2.339 0.0199 * ## y1.l3 -0.013667 0.052853 -0.259 0.7961 ## y2.l3 -0.192446 0.045917 -4.191 3.44e-05 *** ## y3.l3 -0.028951 0.043216 -0.670 0.5033 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 0.9944 on 388 degrees of freedom ## Multiple R-squared: 0.5414, Adjusted R-squared: 0.5308 ## F-statistic: 50.9 on 9 and 388 DF, p-value: < 2.2e-16 ``` --- Test stability jednotlivých čašových radov ```r structbreak1 <- stability(estim_var, type = "OLS-CUSUM") plot(structbreak1) ``` <img src="1_week_files/figure-html/unnamed-chunk-15-1.png" width="504" /> --- ## Test kauzality Nech máme nasledovný VAR(3) model. Je náročné zistiť, ktorá premenná spôsobuje ktorú: `$$\begin{pmatrix} y_{1t} \\ y_{2t}\end{pmatrix} = \begin{pmatrix} \beta_{10} \\ \beta_{20}\end{pmatrix} + \begin{pmatrix} \beta_{11} & \beta_{11}\\ \beta_{21} & \beta_{22}\end{pmatrix}\begin{pmatrix} y_{1t-1} \\ y_{2t-1}\end{pmatrix} + \begin{pmatrix} \gamma_{11} & \gamma_{11} \\ \gamma_{21} & \gamma_{22} \end{pmatrix} \begin{pmatrix} y_{1t-2} \\ y_{2t-2} \end{pmatrix} + \\ \begin{pmatrix} \delta_{11} & \delta_{11}\\ \delta_{21} & \delta_{22}\end{pmatrix}\begin{pmatrix} y_{1t-3} \\ y_{2t-3}\end{pmatrix} + \begin{pmatrix} u_{1t} \\ y_{ut}\end{pmatrix}$$` Ak chceme zistiť či oneskorenia `\(y_{1t}\)` spôsobujú súčastnú hodnotu `\(y_{2t}\)`, ako vyzerá F-test? Koľko máme všetkých kombinácií na F-test? --- ## Grangerova kauzalita: Granger (1969) - testuje všetky štyri hypotézy v rámci F-testu - Grangerova kauzalita skúma: "Spôsobujú (grager-cause) zmeny v `\(y_{1}\)` zmeny v `\(y_{2}\)`"? - ak `\(y_{1}\)` grangerovo spôsobuje `\(y_{2}\)`, oneskorenia `\(y_{1}\)` by mali byť významné (aspoň jedno) resp. ak `\(y_{2}\)` grangerovo spôsobuje `\(y_{1}\)`, oneskorenia `\(y_{2}\)` by mali byť významné (aspoň jedno) - ak sú v oboch rovniciach oneskorenia významné kauzalita je obojsmerná (bi-directional) --- ## Príklad: grangerova kauzalita ```r granger_y1 <- causality(estim_var, cause = "y1") granger_y1 ``` ``` ## $Granger ## ## Granger causality H0: y1 do not Granger-cause y2 y3 ## ## data: VAR object estim_var ## F-Test = 12.058, df1 = 6, df2 = 1164, p-value = 3.532e-13 ## ## ## $Instant ## ## H0: No instantaneous causality between: y1 and y2 y3 ## ## data: VAR object estim_var ## Chi-squared = 1.4203, df = 2, p-value = 0.4916 ``` --- ```r granger_y2 <- causality(estim_var, cause = "y2") granger_y2 ``` ``` ## $Granger ## ## Granger causality H0: y2 do not Granger-cause y1 y3 ## ## data: VAR object estim_var ## F-Test = 0.87282, df1 = 6, df2 = 1164, p-value = 0.5142 ## ## ## $Instant ## ## H0: No instantaneous causality between: y2 and y1 y3 ## ## data: VAR object estim_var ## Chi-squared = 0.29627, df = 2, p-value = 0.8623 ``` --- ## Funkcia reakcie na impulz (Impulse Response Functions (IRFs)) - VAR modely sa ťažko interpretujú - jedným z riešení je nasimulovať funkcie reakcie na impulz (IRFs) a dekompozíciu variancie - funkcia reakcie na impulz skúma ako závislá premenná reaguje v rámci VAR systém na šok v náhodnej zložke `\(u_t\)` (jednotkový a kladný) - tento rovnaký šok je simulovaný pre každú premennú s výsledky sa uložia --- ## IRFs Uvažujme nasledovný VAR(1) model `$$y_{1t} = \beta_{10} + \beta_{11}y_{1t-1} + \alpha_{11}y_{2t-1} + u_{1t}$$` `$$y_{2t} = \beta_{20} + \beta_{21}y_{2t-1} + \alpha_{22}y_{1t-1} + u_{2t}$$` - zmena v `\(u_{1t}\)` ihneď zmení `\(y_{1}\)`; to spôsobí zmenu oboch `\(y_{1}\)` a `\(y_{2}\)` v ďalšom období - môžeme skúmať ako dlho, a do akej miery každá premenná ovlyvňuje celý systém premnených --- ## Príklad: IRFs ```r y1irf <- irf(estim_var, impulse = "y1", response = "y2", n.ahead = 20, boot = TRUE) plot (y1irf, ylab = "y2", main = "Shock to y1") ``` <img src="1_week_files/figure-html/unnamed-chunk-18-1.png" width="504" /> --- ## Dekompozícia variancie - skúma aká časť (proporcia) pohybu závislej premennej je vysvetlená vlstnými šokmi a šokmi v ostatných premenných, hovorí o relatívnej významnosti vo (prognóze) vývoji závislej premennej vo VAR modeli --- ## Príklad: dekompozícia variancie ```r fevd_var1 <- fevd(estim_var, n.ahead=10) plot(fevd_var1) ``` <img src="1_week_files/figure-html/unnamed-chunk-19-1.png" width="450px" /> --- ## Prognózovanie s VAR modelmi ```r forecast(estim_var) %>% autoplot() + xlab("Time") ``` <img src="1_week_files/figure-html/unnamed-chunk-20-1.png" width="450px" /> --- ## Výhody VAR modelovania - žiadna potreba identifikácie exogénnej a endogénnej premennej, nakoľko sú všetky endogénne - nakoľko tam nie je žiaden člen s nulovým počtom oneskorení (contemporaneous) je možné to odhadnúť OLS estimátorom - veľmi dobrý spôsob na prognźovanie (vs. veľké štruktúrne modely) --- ## Nevýhody VAR modelovania - väčšina ekonomickách procesov má nestacionárny charakter*(BVAR) - a-teoretickosť* (SR-VAR) - výber lagov je často problematický - príliš veľa parametrov, v prípade `\(g\)` premenných a `\(k\)` oneskorení, musíme odhadnúť `\((g+kg^2)\)` parametrov - zmiešaná povaha šokov* (SVAR) - náročná interpretácia samotných parametrov VAR modelu (IRFs, FVD) --- ## Štruktúrne VAR modely - Sims(1980) navrhol štrukturne VAR modely ako alternatívu k štruktúrnym makroekonomickým modelom - výhoda SVAR modelov spočíva v tom, že dokážu presne izolovať, šoky (polík) a následne skúmať empirické regularity v makrosystéme - zavádzajú teoretické očakávania na formulovanie krátkodobých a dlhodobých obmedzení, ktoré sú vlastne podstatou ich (správnej) identifikácie --- --- ## Štruktúrna forma modelu - uvažujme, že `\(y_{1,t}, y_{2,t}\)` sú ovplyvnené súčasnou (contemporaneous) hodnotou a aj minulou hodnoutou druhej premennej: `$$y_{1,t} = b_{10} - b_{12} y_{2,t} + \gamma_{11}y_{1,t-1} + \gamma_{12}y_{2,t-1} + \varepsilon_{1,t} \\ y_{2,t} = b_{20} - b_{21} y_{1,t} + \gamma_{21}y_{1,t-1} + \gamma_{22}y_{2,t-1} + \varepsilon_{2,t}$$` - v prípade ak `\(y_{1,t}\)` a `\(y_{2,t}\)` sú stacionárne, `\(\varepsilon_{1,t}; \varepsilon_{2,t}\)` sú náhodné (bielym šumom). Tak v prípade ak `\(b_{12} \neq 0\)` tak musí platiť, že efekt `\(\varepsilon_{2,t}\)` je nepriamy efekt `\(\varepsilon_{2,t}\)` na vývoj premennej `\(\varepsilon_{1,t}\)`. - jediný problém je, že sa to nedá odhadnúť, preto musíme vytvoriť redukovanú formu modelu --- ## Redukovana forma modelu `$$B {\bf{y}}_t = \Gamma_0 + \Gamma_1 {\bf{y}}_{t-1} + \varepsilon_t$$`, kde `$$B =\begin{pmatrix} 1 & b_{12} \\b_{21} & 1 \end{pmatrix}, {\bf{y}}_{t-1} = \begin{pmatrix} y_{1,t} \\ y_{2,t} \end{pmatrix}, \Gamma_0 = \begin{pmatrix} b_{10} \\ b_{20} \end{pmatrix}$$` `$$\Gamma_1 = \begin{pmatrix} \gamma_{11} & \gamma_{12} \\ \gamma_{21} & \gamma_{22} \\ \end{pmatrix}, \varepsilon_t = \begin{pmatrix} \varepsilon_{1,t} \\ \varepsilon_{2,t}\end{pmatrix}$$` prenásobením `\(B^{-1}\)` získame *redukovanu formu*: `$${\bf{y}}_t = A_0 + A_1 {\bf{y}}_{t-1} + {\bf{u}}_t$$` `$$y_{1,t} = a_{10} + a_{11}y_{1,t-1} + a_{12}y_{2,t-1} + u_{1,t} \\ y_{2,t} = a_{20} + a_{21}y_{1,t-1} + a_{22}y_{2,t-1} + u_{2,t}$$` --- dôležité je podrobne sa pozrieť na identifikované šoky, vieme že platí `\({\bf{u}}_t = B^{-1}\varepsilon_t\)`: `$$\begin{pmatrix} u_{1,t} \\ u_{2,t} \end{pmatrix} = \begin{pmatrix} 1 & b_{12} \\ b_{21} &1 \end{pmatrix}^{-1} \begin{pmatrix} \varepsilon_{y,t} \\ \varepsilon_{2,t} \end{pmatrix}$$` `$$u_{1,t} = (\varepsilon_{1,t} - b_{12}\varepsilon_{2,t})/(1-b_{12}b_{21})\\ u_{2,t} = (\varepsilon_{2,t} - b_{21}\varepsilon_{1,t})/(1-b_{12}b_{21})$$` --- ### Identifikácia SVAR modelu Sims (1980) ukázal, že ak v štruktúrnej forme obmedzíme niektoré z parametrov tak je možné presne identifikovať, celý systém, skúsme teda stanoviť `\(\small {b}_{21} = 0\)`. `$$y_{1,t} = b_{10} - b_{12} y_{2,t} + \gamma_{11}y_{1,t-1} + \gamma_{12}y_{2,t-1} + \varepsilon_{1,t} \\ y_{2,t} = b_{20} \hspace{1.5cm} + \gamma_{21}y_{1,t-1} + \gamma_{22}y_{2,t-1} + \varepsilon_{2,t}$$` kde `$$B^{-1} = \begin{pmatrix} 1 & - b_{12} \\ 0 &1\end{pmatrix}$$` redukovaná forma je potom: `$$\small \begin{pmatrix} y_{1,t} \\ y_{2,t} \end{pmatrix} = \begin{pmatrix} b_{10}-b_{12}b_{20} \\ b_{20} \end{pmatrix} + \begin{pmatrix} \gamma_{11} - b_{12} \gamma_{21} & \gamma_{12} - b_{12} \gamma_{22} \\ \gamma_{21} & \gamma_{22} \end{pmatrix} \begin{pmatrix} y_{1,t-1} \\ y_{2,t-1} \end{pmatrix} +\begin{pmatrix} \varepsilon_{1,t} -b_{12} \varepsilon_{2,t} \\ \varepsilon_{2,t} \end{pmatrix}$$` všimnite si, že `\(u_{2,t} = \varepsilon_{2,t}\)`: `$$\begin{pmatrix} u_{1,t} \\ u_{2,t}\end{pmatrix} = \begin{pmatrix} 1 & b_{12} \\ 0 &1 \end{pmatrix}^{-1} \begin{pmatrix} \varepsilon_{1,t} \\ \varepsilon_{2,t}\end{pmatrix}$$` --- ### Načitanie údajov Uvažujme nasledovny vzťah: `$$gdp_{t} = b_{10} - b_{12} unrate_{t} + \gamma_{11}gdp_{t-1} + \gamma_{12}unrate_{t-1} + \varepsilon_{1,t} \\ gdp_{t} = b_{20} - b_{21} gdp_{t} + \gamma_{21}unrate_{t-1} + \gamma_{22}unrate_{t-1} + \varepsilon_{2,t}$$` ```r us <- read.csv("~/data//us_data_unemp_gdp.csv") gdp <- ts(us$gdp, start = c(1948,1,1), frequency = 4) unrate <- ts(us$unrate, start = c(1948,1,1), frequency = 4) us <- ts(us, start = c(1948,1,1), frequency = 4) ``` --- ## Zobrazenie údajov .pull-left[ ```r plot(gdp) ``` <img src="1_week_files/figure-html/unnamed-chunk-23-1.png" width="400px" /> ] .pull-right[ ```r plot(unrate) ``` <img src="1_week_files/figure-html/unnamed-chunk-24-1.png" width="400px" /> ] --- Otestovanie stacionarity ```r for (i in 1:2) { adf_result <- adf.test(us[, i]) cat("ADF Test for Series", i, "\n") cat("Test Statistic:", adf_result$statistic, "\n") cat("P-value:", adf_result$p.value, "\n") cat("Critical Values:", adf_result$critical, "\n") cat("Is the series stationary?", adf_result$p.value < 0.05, "\n\n") } ``` ``` ## Warning in adf.test(us[, i]): p-value smaller than printed p-value ``` ``` ## ADF Test for Series 1 ## Test Statistic: -6.974693 ## P-value: 0.01 ## Critical Values: ## Is the series stationary? TRUE ## ## ADF Test for Series 2 ## Test Statistic: -3.497031 ## P-value: 0.04336627 ## Critical Values: ## Is the series stationary? TRUE ``` --- # Stanovenie reštrikcie Uvažujme, že `\(unrate_t\)` nemá žiaden vplyv na súčastný vývoj `\(gdp_t\)` ```r amat <- diag(2) amat ``` ``` ## [,1] [,2] ## [1,] 1 0 ## [2,] 0 1 ``` ```r amat[1,2] <- NA #Koeficient v hornom trojuholniku amat[1,2] bude odhadnuty, b_{21} = 0 amat ``` ``` ## [,1] [,2] ## [1,] 1 NA ## [2,] 0 1 ``` --- --- ### Výber oneskorenia ```r lagselect_svar <- VARselect(us, lag.max = 10, type = "none") lagselect_svar$selection ``` ``` ## AIC(n) HQ(n) SC(n) FPE(n) ## 10 4 4 10 ``` --- ### Odhad modelu ```r estim_var_reduced <- VAR(us, p=5, season = NULL, exog = NULL, type = "none") SVARmodel <- SVAR(estim_var_reduced, Amat = amat, estmethod = c("scoring", "direct")) SVARmodel ``` ``` ## ## SVAR Estimation Results: ## ======================== ## ## ## Estimated A matrix: ## gdp unrate ## gdp 1 0.04385 ## unrate 0 1.00000 ``` --- --- ### IRFs ```r SVARunrateirf <- irf(SVARmodel, impulse = "unrate", response = "unrate", n.ahead = 40) plot(SVARunrateirf) ``` <img src="1_week_files/figure-html/unnamed-chunk-29-1.png" width="400px" /> --- ```r SVARgdpirf <- irf(SVARmodel, impulse = "gdp", response = "unrate", n.ahead = 40) plot(SVARgdpirf) ``` <img src="1_week_files/figure-html/unnamed-chunk-30-1.png" width="504" /> --- --- ##TVP-VAR odkaz pre vašnivych pokračovatelov a pokračovatelky - [The Times They Are a-Changin’: III. TVP-VAR models: Jaromir Baxa ](https://dl1.cuni.cz/pluginfile.php/1650417/mod_resource/content/1/12_C_TVPVARmodels_html.html) .center[ <img src="img/Picture 1_Oles.png" width="400px" /> ] --- --- ## TVP-VAR Okunov zákon ```r library(bvarsv) library(graphics) okun_bvar_sv <- bvar.sv.tvp(us, p=2, nburn = 5000, nrep = 10000) ``` ``` ## [1] "2023-11-22 22:01:31 -- now starting MCMC" ## [1] "2023-11-22 22:01:44 -- now at iteration 5000" ## [1] "2023-11-22 22:02:11 -- now at iteration 15000" ``` --- ```r irf_u_g_1964f <- impulse.responses(okun_bvar_sv, impulse.variable = 1, response.variable = 2, nhor = 20, t=84,draw.plot=FALSE)$irf #1q1964 irf_u_g_1964 <- apply(as.matrix(irf_u_g_1964f),2,median) irf_u_g_2002f <- impulse.responses(okun_bvar_sv, impulse.variable = 1, response.variable = 2, nhor = 20, t=218,draw.plot=FALSE)$irf #2q2002 irf_u_g_2002 <- apply(as.matrix(irf_u_g_2002f),2,median) irf_u_g_1985f <- impulse.responses(okun_bvar_sv, impulse.variable = 1, response.variable = 2, nhor = 20, t=148) #1q1985 lines(x = 1:20, y = irf_u_g_1964, lwd = 3, lty = 9) #bodkovana ciara je pre rok 1964 lines(x = 1:20, y = irf_u_g_2002, lwd = 3, lty = 4) #bodkovano prerusovana ciara pre 2002 ``` <img src="1_week_files/figure-html/unnamed-chunk-33-1.png" width="504" /> --- ## Otázky?  --- # Referencie - [Handbook of Research Methods and Applications in Empirical Macroeconomics: Luetkepohl, H. ](https://cadmus.eui.eu/bitstream/handle/1814/19354/ECO_2011_30.pdf?...1) - [Forecasting: Principles and Practice: Hyndman, R. a Athanasupoulos, G.](https://otexts.com/fpp3/advanced.html) - [VAR and VEC Models: Abdel-Latif, H.](https://www.youtube.com/watch?v=XK3cEJw93jA&t=4391s&ab_channel=Hanomics) - [Structural vector autoregression models: Kotzé, K.](https://kevinkotze.github.io/ts-8-svar/) ---