Movatterモバイル変換


[0]ホーム

URL:


Introduction to bvhar

library(bvhar)

Data

Looking at VAR and VHAR, you can learn how the models work and how toperform this package.

ETF Dataset

This package includes some datasets. Among them, we try CBOE ETFvolatility index (etf_vix). Since this is just an example,we arbitrarily extract a small number of variables:Gold, crude oil,euro currency, and china ETF.

var_idx<-c("GVZCLS","OVXCLS","EVZCLS","VXFXICLS")etf<-  etf_vix|>  dplyr::select(dplyr::all_of(var_idx))etf#> # A tibble: 905 × 4#>    GVZCLS OVXCLS EVZCLS VXFXICLS#>     <dbl>  <dbl>  <dbl>    <dbl>#>  1   21.5   36.5   13.2     30.2#>  2   21.5   35.4   12.6     28.9#>  3   22.3   35.5   13.1     29.1#>  4   21.6   36.6   12.8     28.5#>  5   21.2   35.6   13.3     29.5#>  6   21.4   34.8   13.2     29.1#>  7   21.6   34.0   13.2     28.7#>  8   21.1   32.6   12.8     28.0#>  9   20.3   33.5   12.7     28.9#> 10   19.6   33.4   12.4     28.0#> # ℹ 895 more rows

h-step ahead forecasting

For evaluation, split the data. The last19 observationswill be test set.divide_ts() function splits the timeseries into train-test set.

In the other vignette, we provide how to perform out-of-sampleforecasting.

h<-19etf_eval<-divide_ts(etf, h)# Try ?divide_tsetf_train<- etf_eval$train# trainetf_test<- etf_eval$test# test# dimension---------m<-ncol(etf)

Models

VAR

This package indentifies VAR(p) model by

\[\mathbf{Y}_t = \mathbf{c}+\boldsymbol\beta_1 \mathbf{Y}_{t - 1} + \ldots + \boldsymbol\beta_p+\mathbf{Y}_{t - p} + \boldsymbol\epsilon_t\]

where\(\boldsymbol\epsilon_t \simN(\mathbf{0}_k, \Sigma_e)\)

var_lag<-5

The package perform VAR(p = 5) based on

\[Y_0 = X_0 A + Z\]

where

\[Y_0 = \begin{bmatrix} \mathbf{y}_{p + 1}^T \\ \mathbf{y}_{p + 2}^T \\ \vdots \\ \mathbf{y}_n^T\end{bmatrix}_{s \times m} \equiv Y_{p + 1} \in \mathbb{R}^{s \times m}\]

bybuild_y0()

and

\[X_0 = \left[\begin{array}{c|c|c|c} \mathbf{y}_p^T & \cdots & \mathbf{y}_1^T & 1 \\ \mathbf{y}_{p + 1}^T & \cdots & \mathbf{y}_2^T & 1 \\ \vdots & \vdots & \cdots & \vdots \\ \mathbf{y}_{T - 1}^T & \cdots & \mathbf{y}_{T - p}^T & 1\end{array}\right]_{s \times k} = \begin{bmatrix} Y_p & Y_{p - 1} & \cdots & \mathbf{1}_{T - p}\end{bmatrix} \in \mathbb{R}^{s \times k}\]

bybuild_design(). Coefficient matrix is the form of

\[A = \begin{bmatrix} A_1^T \\ \vdots \\ A_p^T \\ \mathbf{c}^T\end{bmatrix} \in \mathbb{R}^{k \times m}\]

This form also corresponds to the other model. Usevar_lm(y, p) to model VAR(p). You can specifytype = "none" to get model without constant term.

(fit_var<-var_lm(y = etf_train,p = var_lag))#> Call:#> var_lm(y = etf_train, p = var_lag)#>#> VAR(5) Estimation using least squares#> ====================================================#>#> LSE for A1:#>           GVZCLS_1  OVXCLS_1  EVZCLS_1  VXFXICLS_1#> GVZCLS     0.93290    0.0545    0.0659     -0.0346#> OVXCLS    -0.02367    1.0047   -0.1447      0.0324#> EVZCLS    -0.00789    0.0102    0.9810      0.0199#> VXFXICLS  -0.03868    0.0109    0.0754      0.9328#>#>#> LSE for A2:#>           GVZCLS_2  OVXCLS_2  EVZCLS_2  VXFXICLS_2#> GVZCLS     -0.0781  -0.04865    0.0829      0.0561#> OVXCLS      0.0880   0.01207    0.2729     -0.1173#> EVZCLS      0.0195   0.00255   -0.1071     -0.0383#> VXFXICLS    0.0896   0.04278   -0.0691      0.0419#>#>#> LSE for A3:#>           GVZCLS_3  OVXCLS_3  EVZCLS_3  VXFXICLS_3#> GVZCLS      0.0424  -0.00452  -0.03245    -0.05967#> OVXCLS     -0.0272  -0.09144  -0.05764    -0.06255#> EVZCLS     -0.0123   0.00864   0.08693     0.00252#> VXFXICLS   -0.0266  -0.04810   0.00851    -0.02137#>#>#> LSE for A4:#>           GVZCLS_4  OVXCLS_4  EVZCLS_4  VXFXICLS_4#> GVZCLS    -0.00793   0.01072  -0.01513      0.0616#> OVXCLS    -0.04343  -0.00377  -0.00694      0.1445#> EVZCLS     0.00614  -0.02278  -0.01007      0.0200#> VXFXICLS  -0.00755  -0.05555   0.08783     -0.1025#>#>#> LSE for A5:#>           GVZCLS_5  OVXCLS_5  EVZCLS_5  VXFXICLS_5#> GVZCLS      0.0728  -0.01745   -0.0886   -0.017273#> OVXCLS      0.0104   0.07151   -0.0637    0.002018#> EVZCLS     -0.0113   0.00581    0.0202    0.000498#> VXFXICLS   -0.0155   0.04192   -0.0254    0.093984#>#>#> LSE for constant:#>   GVZCLS    OVXCLS    EVZCLS  VXFXICLS#>    0.571     0.145     0.129     0.875#>#>#> --------------------------------------------------#> *_j of the Coefficient matrix: corresponding to the j-th VAR lag

The package provideS3 object.

# class---------------class(fit_var)#> [1] "varlse"   "olsmod"   "bvharmod"# inheritance---------is.varlse(fit_var)#> [1] TRUE# names---------------names(fit_var)#>  [1] "coefficients"  "fitted.values" "residuals"     "covmat"#>  [5] "df"            "m"             "obs"           "y0"#>  [9] "p"             "totobs"        "process"       "type"#> [13] "design"        "y"             "method"        "call"

VHAR

Consider Vector HAR (VHAR) model.

\[\mathbf{Y}_t = \mathbf{c}+ \Phi^{(d)} +\mathbf{Y}_{t - 1} + \Phi^{(w)} \mathbf{Y}_{t - 1}^{(w)} + \Phi^{(m)}\mathbf{Y}_{t - 1}^{(m)} + \boldsymbol\epsilon_t\]

where\(\mathbf{Y}_t\) is daily RVand

\[\mathbf{Y}_t^{(w)} = \frac{1}{5} \left(\mathbf{Y}_t + \cdots + \mathbf{Y}_{t - 4} \right)\]

is weekly RV

and

\[\mathbf{Y}_t^{(m)} = \frac{1}{22} \left(\mathbf{Y}_t + \cdots + \mathbf{Y}_{t - 21} \right)\]

is monthly RV. This model can be expressed by

\[Y_0 = X_1 \Phi + Z\]

where

\[\Phi = \begin{bmatrix} \Phi^{(d)T} \\ \Phi^{(w)T} \\ \Phi^{(m)T} \\ \mathbf{c}^T\end{bmatrix} \in \mathbb{R}^{(3m + 1) \times m}\]

Let\(T\) be

\[\mathbb{C}_0 \mathpunct{:}=\begin{bmatrix} 1 & 0 & \cdots & 0 & 0 & \cdots & 0 \\ 1 / 5 & 1 / 5 & \cdots & 1 / 5 & 0 & \cdots &0 \\ 1 / 22 & 1 / 22 & \cdots & 1 / 22 & 1 / 22 &\cdots & 1 / 22\end{bmatrix} \otimes I_m \in \mathbb{R}^{3m \times 22m}\]

and let\(\mathbb{C}_{HAR}\) be

\[\mathbb{C}_{HAR} \mathpunct{:}=\left[\begin{array}{c|c} T & \mathbf{0}_{3m} \\ \hline \mathbf{0}_{3m}^T & 1\end{array}\right] \in \mathbb{R}^{(3m + 1) \times (22m + 1)}\]

Then for\(X_0\) in VAR(p),

\[X_1 = X_0 \mathbb{C}_{HAR}^T = \begin{bmatrix} \mathbf{y}_{22}^T & \mathbf{y}_{22}^{(w)T} &\mathbf{y}_{22}^{(m)T} & 1 \\ \mathbf{y}_{23}^T & \mathbf{y}_{23}^{(w)T} &\mathbf{y}_{23}^{(m)T} & 1 \\ \vdots & \vdots & \vdots & \vdots \\ \mathbf{y}_{T - 1}^T & \mathbf{y}_{T - 1}^{(w)T} &\mathbf{y}_{T - 1}^{(m)T} & 1\end{bmatrix} \in \mathbb{R}^{s \times (3m + 1)}\]

This package fits VHAR by scaling VAR(p) using\(\mathbb{C}_{HAR}\)(scale_har(m, week = 5, month = 22)). Usevhar_lm(y) to fit VHAR. You can specifytype = "none" to get model without constant term.

(fit_har<-vhar_lm(y = etf_train))#> Call:#> vhar_lm(y = etf_train)#>#> VHAR Estimation====================================================#>#> LSE for day:#>           GVZCLS_day  OVXCLS_day  EVZCLS_day  VXFXICLS_day#> GVZCLS       0.87561      0.0447      0.1623      -0.03772#> OVXCLS       0.04147      0.9942     -0.0605      -0.09361#> EVZCLS       0.00305      0.0281      0.9206      -0.00748#> VXFXICLS     0.01021      0.0569      0.0440       0.91713#>#>#> LSE for week:#>           GVZCLS_week  OVXCLS_week  EVZCLS_week  VXFXICLS_week#> GVZCLS        0.01622      -0.0554      -0.1608         0.0637#> OVXCLS       -0.07093      -0.0373       0.2000         0.1034#> EVZCLS       -0.00334      -0.0414      -0.0101         0.0239#> VXFXICLS     -0.03756      -0.0787      -0.0135         0.0480#>#>#> LSE for month:#>           GVZCLS_month  OVXCLS_month  EVZCLS_month  VXFXICLS_month#> GVZCLS        0.084981       0.00359        0.0228         -0.0299#> OVXCLS        0.045986       0.03825       -0.1564         -0.0157#> EVZCLS       -0.000597       0.02030        0.0501         -0.0138#> VXFXICLS      0.041648       0.01263        0.0639         -0.0371#>#>#> LSE for constant:#>   GVZCLS    OVXCLS    EVZCLS  VXFXICLS#>    0.491     0.135     0.105     0.926#>#>#> --------------------------------------------------#> *_day, *_week, *_month of the Coefficient matrix: daily, weekly, and monthly term in the VHAR model
# class----------------class(fit_har)#> [1] "vharlse"  "olsmod"   "bvharmod"# inheritance----------is.varlse(fit_har)#> [1] FALSEis.vharlse(fit_har)#> [1] TRUE# complements----------names(fit_har)#>  [1] "coefficients"  "fitted.values" "residuals"     "covmat"#>  [5] "df"            "m"             "obs"           "y0"#>  [9] "p"             "week"          "month"         "totobs"#> [13] "process"       "type"          "HARtrans"      "design"#> [17] "y"             "method"        "call"

BVAR

This page provides deprecated two functions examples. Bothbvar_minnesota() andbvar_flat() will beintegrated intovar_bayes() and removed in the nextversion.

Minnesota prior

  • Litterman (1986) and Bańbura et al. (2010)
  • All the equations are centered around the random walk withdrift.
  • Prior mean: Recent lags provide more reliable informationthan the more distant ones.
  • Prior variance: Own lags explain more of the variation of agiven variable than the lags of other variables in the equation.

First specify the prior usingset_bvar(sigma, lambda, delta, eps = 1e-04).

bvar_lag<-5sig<-apply(etf_train,2, sd)# sigma vectorlam<- .2# lambdadelta<-rep(0, m)# delta vector (0 vector since RV stationary)eps<-1e-04# very small number(bvar_spec<-set_bvar(sig, lam, delta, eps))#> Model Specification for BVAR#>#> Parameters: Coefficent matrice and Covariance matrix#> Prior: Minnesota#> ========================================================#>#> Setting for 'sigma':#>   GVZCLS    OVXCLS    EVZCLS  VXFXICLS#>     3.77     10.63      2.27      3.81#>#> Setting for 'lambda':#> [1]  0.2#>#> Setting for 'delta':#> [1]  0  0  0  0#>#> Setting for 'eps':#> [1]  1e-04#>#> Setting for 'hierarchical':#> [1]  FALSE

In turn,bvar_minnesota(y, p, bayes_spec, include_mean = TRUE) fitsBVAR(p).

  • y: Multivariate time series data. It should be dataframe or matrix, which means that every column is numeric. Each columnindicates variable, i.e. it sould be wide format.
  • p: Order of BVAR
  • bayes_spec: Output ofset_bvar()
  • include_mean = TRUE: By default, you include theconstant term in the model.
(fit_bvar<-bvar_minnesota(etf_train, bvar_lag,num_iter =10,bayes_spec = bvar_spec))#> Call:#> bvar_minnesota(y = etf_train, p = bvar_lag, num_iter = 10, bayes_spec = bvar_spec)#>#> BVAR(5) with Minnesota Prior#> ====================================================#>#> A ~ Matrix Normal (Mean, Precision, Scale = Sigma)#> ====================================================#> Matrix Normal Mean for A1 part:#>           GVZCLS_1  OVXCLS_1  EVZCLS_1  VXFXICLS_1#> GVZCLS      0.7771   0.00915    0.0628      0.0193#> OVXCLS      0.0445   0.70884    0.1111      0.0167#> EVZCLS      0.0104   0.01068    0.7036      0.0266#> VXFXICLS    0.0214   0.00673    0.1044      0.7674#>#>#> Matrix Normal Mean for A2 part:#>            GVZCLS_2   OVXCLS_2  EVZCLS_2  VXFXICLS_2#> GVZCLS     0.082726  -0.006736  -0.01387     -0.0020#> OVXCLS     0.000568   0.140781   0.02419     -0.0436#> EVZCLS    -0.004778   0.000769   0.11756     -0.0114#> VXFXICLS   0.013424  -0.003779   0.00369      0.1063#>#>#> Matrix Normal Mean for A3 part:#>           GVZCLS_3   OVXCLS_3  EVZCLS_3  VXFXICLS_3#> GVZCLS     0.03574  -0.003825  -0.01504    -0.00581#> OVXCLS    -0.01733   0.054037   0.00196    -0.01874#> EVZCLS    -0.00391   0.000223   0.05065    -0.00168#> VXFXICLS  -0.00891  -0.006167  -0.00435     0.02176#>#>#> Matrix Normal Mean for A4 part:#>           GVZCLS_4   OVXCLS_4   EVZCLS_4  VXFXICLS_4#> GVZCLS     0.02474  -0.001932  -0.011546     0.00263#> OVXCLS    -0.00987   0.030763   0.003771     0.00845#> EVZCLS    -0.00318  -0.000206   0.027289     0.00161#> VXFXICLS  -0.00898  -0.004378   0.000232     0.00582#>#>#> Matrix Normal Mean for A5 part:#>           GVZCLS_5   OVXCLS_5  EVZCLS_5  VXFXICLS_5#> GVZCLS     0.01986  -1.47e-03  -0.00970     0.00127#> OVXCLS    -0.00357   2.10e-02   0.00339     0.01017#> EVZCLS    -0.00284   1.59e-05   0.01729     0.00159#> VXFXICLS  -0.00431  -1.70e-03   0.00263     0.01207#>#>#> Matrix Normal Mean for constant part:#>   GVZCLS    OVXCLS    EVZCLS  VXFXICLS#>   0.7271    0.3713    0.0971    1.2139#>#>#> dim(Matrix Normal precision matrix):#> [1]  21  21#>#>#> Sigma ~ Inverse-Wishart#> ====================================================#> IW scale matrix:#>           GVZCLS  OVXCLS  EVZCLS  VXFXICLS#> GVZCLS      1285     375     115       287#> OVXCLS       375    3638     131       397#> EVZCLS       115     131     220       126#> VXFXICLS     287     397     126      1186#>#> IW degrees of freedom:#> [1] 887#>#>#> --------------------------------------------------#> *_j of the Coefficient matrix: corresponding to the j-th BVAR lag

It isbvarmn class. For Bayes computation, it also hasother class such asnormaliw andbvharmod.

# class---------------class(fit_bvar)#> [1] "bvarmn"   "bvharmod" "normaliw"# inheritance---------is.bvarmn(fit_bvar)#> [1] TRUE# names---------------names(fit_bvar)#>  [1] "coefficients"    "fitted.values"   "residuals"       "mn_prec"#>  [5] "covmat"          "iw_shape"        "df"              "m"#>  [9] "obs"             "prior_mean"      "prior_precision" "prior_scale"#> [13] "prior_shape"     "y0"              "design"          "p"#> [17] "totobs"          "type"            "y"               "chain"#> [21] "iter"            "burn"            "thin"            "call"#> [25] "process"         "spec"

Flat prior

Ghosh et al. (2018) provides flat prior for covariance matrix,i.e. non-informative. Useset_bvar_flat(U).

(flat_spec<-set_bvar_flat(U =5000*diag(m* bvar_lag+1)))# c * I#> Model Specification for BVAR#>#> Parameters: Coefficent matrice and Covariance matrix#> Prior: Flat#> ========================================================#>#> Setting for 'U':#> # A matrix:  21 x 21#>        [,1]  [,2]  [,3]  [,4]  [,5]#>  [1,]  5000     0     0     0     0#>  [2,]     0  5000     0     0     0#>  [3,]     0     0  5000     0     0#>  [4,]     0     0     0  5000     0#>  [5,]     0     0     0     0  5000#>  [6,]     0     0     0     0     0#>  [7,]     0     0     0     0     0#>  [8,]     0     0     0     0     0#>  [9,]     0     0     0     0     0#> [10,]     0     0     0     0     0#> # ... with 11 more rows

Thenbvar_flat(y, p, bayes_spec, include_mean = TRUE):

(fit_ghosh<-bvar_flat(etf_train, bvar_lag,num_iter =10,bayes_spec = flat_spec))#> Call:#> bvar_flat(y = etf_train, p = bvar_lag, num_iter = 10, bayes_spec = flat_spec)#>#> BVAR(5) with Flat Prior#> ====================================================#>#> A ~ Matrix Normal (Mean, U^{-1}, Scale 2 = Sigma)#> ====================================================#> Matrix Normal Mean for A1 part:#>           GVZCLS_1  OVXCLS_1  EVZCLS_1  VXFXICLS_1#> GVZCLS      0.3128    0.0460    0.0205      0.0457#> OVXCLS      0.0440    0.4128    0.0186      0.0314#> EVZCLS      0.0174    0.0230    0.1334      0.0410#> VXFXICLS    0.0477    0.0464    0.0481      0.3197#>#>#> Matrix Normal Mean for A2 part:#>           GVZCLS_2  OVXCLS_2  EVZCLS_2  VXFXICLS_2#> GVZCLS     0.19811   0.00287   0.00771      0.0194#> OVXCLS     0.01595   0.23709   0.00978     -0.0111#> EVZCLS     0.00425   0.01205   0.11715      0.0201#> VXFXICLS   0.02725   0.01516   0.03513      0.2162#>#>#> Matrix Normal Mean for A3 part:#>           GVZCLS_3  OVXCLS_3  EVZCLS_3  VXFXICLS_3#> GVZCLS     0.13884   -0.0153  -0.00102     0.00591#> OVXCLS    -0.00741    0.1304   0.00361    -0.02452#> EVZCLS    -0.00353    0.0079   0.10724     0.01150#> VXFXICLS   0.00797   -0.0146   0.02633     0.14628#>#>#> Matrix Normal Mean for A4 part:#>           GVZCLS_4  OVXCLS_4  EVZCLS_4  VXFXICLS_4#> GVZCLS     0.11392  -0.01775  -0.00653     0.00884#> OVXCLS    -0.01626   0.09421   0.00195    -0.00572#> EVZCLS    -0.00847   0.00565   0.10046     0.01098#> VXFXICLS  -0.00356  -0.03067   0.02292     0.10552#>#>#> Matrix Normal Mean for A5 part:#>           GVZCLS_5  OVXCLS_5  EVZCLS_5  VXFXICLS_5#> GVZCLS     0.11282   -0.0208  -0.01028     0.01136#> OVXCLS    -0.01507    0.1004   0.00155     0.00973#> EVZCLS    -0.01252    0.0104   0.09667     0.01361#> VXFXICLS  -0.00492   -0.0215   0.02342     0.10353#>#>#> Matrix Normal Mean for constant part:#>   GVZCLS    OVXCLS    EVZCLS  VXFXICLS#> 5.49e-03  7.82e-04  8.83e-05  9.82e-03#>#>#> dim(Matrix Normal precision matrix):#> [1]  21  21#>#>#> Sigma ~ Inverse-Wishart#> ====================================================#> IW scale matrix:#>           GVZCLS  OVXCLS  EVZCLS  VXFXICLS#> GVZCLS      2483     595     209       535#> OVXCLS       595    3580     216       578#> EVZCLS       209     216     771       354#> VXFXICLS     535     578     354      2472#>#>#> --------------------------------------------------#> *_j of the Coefficient matrix: corresponding to the j-th BVAR lag
# class---------------class(fit_ghosh)#> [1] "bvarflat" "normaliw" "bvharmod"# inheritance---------is.bvarflat(fit_ghosh)#> [1] TRUE# names---------------names(fit_ghosh)#>  [1] "coefficients"    "fitted.values"   "residuals"       "mn_prec"#>  [5] "covmat"          "iw_shape"        "df"              "m"#>  [9] "obs"             "prior_mean"      "prior_precision" "y0"#> [13] "design"          "y"               "p"               "type"#> [17] "chain"           "iter"            "burn"            "thin"#> [21] "call"            "process"         "spec"

BVHAR

Consider the VAR(22) form of VHAR.

\[\begin{aligned} \mathbf{Y}_t = \mathbf{c}& + \left( \Phi^{(d)} + \frac{1}{5}\Phi^{(w)} + \frac{1}{22} \Phi^{(m)} \right) \mathbf{Y}_{t - 1} \\ & + \left( \frac{1}{5} \Phi^{(w)} + \frac{1}{22} \Phi^{(m)}\right) \mathbf{Y}_{t - 2} + \cdots \left( \frac{1}{5} \Phi^{(w)} +\frac{1}{22} \Phi^{(m)} \right) \mathbf{Y}_{t - 5} \\ & + \frac{1}{22} \Phi^{(m)} \mathbf{Y}_{t - 6} + \cdots +\frac{1}{22} \Phi^{(m)} \mathbf{Y}_{t - 22}\end{aligned}\]

What does Minnesota prior mean in VHAR model?

For more simplicity, write coefficient matrices by\(\Phi^{(1)}, \Phi^{(2)}, \Phi^{(3)}\). If weapply the prior in the same way, Minnesota moment becomes

\[E \left[ (\Phi^{(l)})_{ij} \right] = \begin{cases} \delta_i & j = i, \; l = 1 \\ 0 & o/w\end{cases} \quad \mathrm{Var}\left[ (\Phi^{(l)})_{ij} \right] =\begin{cases} \frac{\lambda^2}{l^2} & j = i \\ \nu \frac{\lambda^2}{l^2} \frac{\sigma_i^2}{\sigma_j^2} & o/w\end{cases}\]

We call this VAR-type Minnesota prior or BVHAR-S.

BVHAR-S

set_bvhar(sigma, lambda, delta, eps = 1e-04) specifiesVAR-type Minnesota prior.

(bvhar_spec_v1<-set_bvhar(sig, lam, delta, eps))#> Model Specification for BVHAR#>#> Parameters: Coefficent matrice and Covariance matrix#> Prior: MN_VAR#> ========================================================#>#> Setting for 'sigma':#>   GVZCLS    OVXCLS    EVZCLS  VXFXICLS#>     3.77     10.63      2.27      3.81#>#> Setting for 'lambda':#> [1]  0.2#>#> Setting for 'delta':#> [1]  0  0  0  0#>#> Setting for 'eps':#> [1]  1e-04#>#> Setting for 'hierarchical':#> [1]  FALSE

bvhar_minnesota(y, har = c(5, 22), bayes_spec, include_mean = TRUE)can fit BVHAR with this prior. This is the default prior setting.Similar to above functions, this function will be also integrated intovhar_bayes() and removed in the next version.

(fit_bvhar_v1<-bvhar_minnesota(etf_train,num_iter =10,bayes_spec = bvhar_spec_v1))#> Call:#> bvhar_minnesota(y = etf_train, num_iter = 10, bayes_spec = bvhar_spec_v1)#>#> BVHAR with Minnesota Prior#> ====================================================#>#> Phi ~ Matrix Normal (Mean, Scale 1, Scale 2 = Sigma)#> ====================================================#> Matrix Normal Mean for day:#>           GVZCLS_day  OVXCLS_day  EVZCLS_day  VXFXICLS_day#> GVZCLS        0.7808     0.00502      0.0595        0.0181#> OVXCLS        0.0419     0.75268      0.1293       -0.0129#> EVZCLS        0.0109     0.00957      0.7248        0.0213#> VXFXICLS      0.0252     0.00347      0.1003        0.8042#>#>#> Matrix Normal Mean for week:#>           GVZCLS_week  OVXCLS_week  EVZCLS_week  VXFXICLS_week#> GVZCLS         0.1160    -0.007669     -0.03216       -0.00181#> OVXCLS        -0.0211     0.152822      0.02794       -0.00136#> EVZCLS        -0.0103    -0.000372      0.13214       -0.00158#> VXFXICLS      -0.0177    -0.010393      0.00229        0.10274#>#>#> Matrix Normal Mean for month:#>           GVZCLS_month  OVXCLS_month  EVZCLS_month  VXFXICLS_month#> GVZCLS         0.05269      -0.00345       -0.0110        -0.00302#> OVXCLS         0.00556       0.05169       -0.0225        -0.01051#> EVZCLS        -0.00441       0.00410        0.0502        -0.00138#> VXFXICLS       0.00733      -0.00321        0.0109         0.00573#>#>#> Matrix Normal Mean for constant part:#>   GVZCLS    OVXCLS    EVZCLS  VXFXICLS#>   0.6107    0.1410    0.0741    1.1544#>#>#> dim(Matrix Normal precision matrix):#> [1]  13  13#>#>#> Sigma ~ Inverse-Wishart#> ====================================================#> IW scale matrix:#>           GVZCLS  OVXCLS  EVZCLS  VXFXICLS#> GVZCLS      1268     366     114       286#> OVXCLS       366    3742     131       378#> EVZCLS       114     131     219       121#> VXFXICLS     286     378     121      1189

This model isbvharmn class.

# class---------------class(fit_bvhar_v1)#> [1] "bvharmn"  "bvharmod" "normaliw"# inheritance---------is.bvharmn(fit_bvhar_v1)#> [1] TRUE# names---------------names(fit_bvhar_v1)#>  [1] "coefficients"    "fitted.values"   "residuals"       "mn_prec"#>  [5] "covmat"          "iw_shape"        "df"              "m"#>  [9] "obs"             "prior_mean"      "prior_precision" "prior_scale"#> [13] "prior_shape"     "y0"              "design"          "p"#> [17] "week"            "month"           "totobs"          "type"#> [21] "HARtrans"        "y"               "chain"           "iter"#> [25] "burn"            "thin"            "call"            "process"#> [29] "spec"

BVHAR-L

Set\(\delta_i\) for weekly andmonthly coefficient matrices in above Minnesota moments:

\[E \left[ (\Phi^{(l)})_{ij} \right] = \begin{cases} d_i & j = i, \; l = 1 \\ w_i & j = i, \; l = 2 \\ m_i & j = i, \; l = 3\end{cases}\]

i.e. instead of onedelta vector, set three vector

  • daily
  • weekly
  • monthly

This is called VHAR-type Minnesota prior or BVHAR-L.

set_weight_bvhar(sigma, lambda, eps, daily, weekly, monthly)defines BVHAR-L.

daily<-rep(.1, m)weekly<-rep(.1, m)monthly<-rep(.1, m)(bvhar_spec_v2<-set_weight_bvhar(sig, lam, eps, daily, weekly, monthly))#> Model Specification for BVHAR#>#> Parameters: Coefficent matrice and Covariance matrix#> Prior: MN_VHAR#> ========================================================#>#> Setting for 'sigma':#>   GVZCLS    OVXCLS    EVZCLS  VXFXICLS#>     3.77     10.63      2.27      3.81#>#> Setting for 'lambda':#> [1]  0.2#>#> Setting for 'eps':#> [1]  1e-04#>#> Setting for 'daily':#> [1]  0.1  0.1  0.1  0.1#>#> Setting for 'weekly':#> [1]  0.1  0.1  0.1  0.1#>#> Setting for 'monthly':#> [1]  0.1  0.1  0.1  0.1#>#> Setting for 'hierarchical':#> [1]  FALSE

bayes_spec option ofbvhar_minnesota() getsthis value, so you can use this prior intuitively.

fit_bvhar_v2<-bvhar_minnesota(  etf_train,num_iter =10,bayes_spec = bvhar_spec_v2)fit_bvhar_v2#> Call:#> bvhar_minnesota(y = etf_train, num_iter = 10, bayes_spec = bvhar_spec_v2)#>#> BVHAR with Minnesota Prior#> ====================================================#>#> Phi ~ Matrix Normal (Mean, Scale 1, Scale 2 = Sigma)#> ====================================================#> Matrix Normal Mean for day:#>           GVZCLS_day  OVXCLS_day  EVZCLS_day  VXFXICLS_day#> GVZCLS        0.7670     0.00504      0.0644       0.01884#> OVXCLS        0.0497     0.73098      0.0999      -0.00317#> EVZCLS        0.0122     0.00907      0.7094       0.02036#> VXFXICLS      0.0259     0.00429      0.0976       0.79368#>#>#> Matrix Normal Mean for week:#>           GVZCLS_week  OVXCLS_week  EVZCLS_week  VXFXICLS_week#> GVZCLS         0.1259    -0.008055     -0.03361       -0.00353#> OVXCLS        -0.0222     0.168704      0.01523       -0.00218#> EVZCLS        -0.0108    -0.000896      0.14770       -0.00294#> VXFXICLS      -0.0199    -0.010546     -0.00238        0.11358#>#>#> Matrix Normal Mean for month:#>           GVZCLS_month  OVXCLS_month  EVZCLS_month  VXFXICLS_month#> GVZCLS         0.06476      -0.00349      -0.01286        -0.00584#> OVXCLS         0.00142       0.06915      -0.03315        -0.01117#> EVZCLS        -0.00492       0.00329       0.06611        -0.00337#> VXFXICLS       0.00474      -0.00312       0.00592         0.01821#>#>#> Matrix Normal Mean for constant part:#>   GVZCLS    OVXCLS    EVZCLS  VXFXICLS#>   0.5517    0.0335    0.0834    1.0025#>#>#> dim(Matrix Normal precision matrix):#> [1]  13  13#>#>#> Sigma ~ Inverse-Wishart#> ====================================================#> IW scale matrix:#>           GVZCLS  OVXCLS  EVZCLS  VXFXICLS#> GVZCLS      1194     372     115       286#> OVXCLS       372    3124     125       387#> EVZCLS       115     125     193       119#> VXFXICLS     286     387     119      1123

[8]ページ先頭

©2009-2025 Movatter.jp