MSVARXmdl | R Documentation |
This function estimates a Markov-switching vector autoregressive model
MSVARXmdl(Y, p, k, Z, control = list())
Y |
( |
p |
integer for the number of lags to use in estimation. Must be greater than or equal to |
k |
integer for the number of regimes to use in estimation. Must be greater than or equal to |
Z |
a |
control |
List with optimization options including:
|
List of class MSVARmdl
(S3
object) with model attributes including:
y: a (T-p x q)
matrix of observations.
X: a (T-p x p*q + const)
matrix of lagged observations with a leading column of 1
s.
x: a (T-p x p*q)
matrix of lagged observations.
resid: a (T-p x q)
matrix of residuals.
fitted: a (T x q)
matrix of fitted values.
intercept: a (k x q)
matrix of estimated intercepts of each process.
mu: a (k x q)
matrix of estimated means of each process.
beta: a list containing k
separate ((1 + p + qz) x q)
matrix of estimated coefficients for each regime.
betaZ: a (qz x q)
matrix of estimated exogenous regressor coefficients.
phi: estimates of autoregressive coefficients.
Fmat: Companion matrix containing autoregressive coefficients.
stdev: List with k
(q x q)
matrices with estimated standard deviation on the diagonal.
sigma: List with k
(q x q)
matrices with estimated covariance matrix.
theta: vector containing: mu
and vech(sigma)
.
theta_mu_ind: vector indicating location of mean with 1
and 0
otherwise.
theta_sig_ind: vector indicating location of variance and covariances with 1
and 0
otherwise.
theta_var_ind: vector indicating location of variances with 1
and 0
otherwise.
theta_P_ind: vector indicating location of transition matrix elements with 1
and 0
otherwise.
stationary: Boolean indicating if process is stationary if TRUE
or non-stationary if FALSE
.
n: number of observations (same as T
).
p: number of autoregressive lags.
q: number of series.
k: number of regimes in estimated model.
P: a (k x k)
transition matrix.
pinf: a (k x 1)
vector with limiting probabilities of each regime.
St: a (T x k)
vector with smoothed probabilities of each regime at each time t
.
deltath: double with maximum absolute difference in vector theta
between last iteration.
iterations: number of EM iterations performed to achieve convergence (if less than maxit
).
theta_0: vector of initial values used.
init_used: number of different initial values used to get a finite solution. See description of input maxit_converge
.
msmu: Boolean. If TRUE
model was estimated with switch in mean. If FALSE
model was estimated with constant mean.
msvar: Boolean. If TRUE
model was estimated with switch in variance. If FALSE
model was estimated with constant variance.
control: List with model options used.
logLike: log-likelihood.
AIC: Akaike information criterion.
BIC: Bayesian (Schwarz) information criterion.
Hess: Hessian matrix. Approximated using hessian
and only returned if getSE=TRUE
.
info_mat: Information matrix. Computed as the inverse of -Hess
. If matrix is not PD then nearest PD matrix is obtained using nearest_spd
. Only returned if getSE=TRUE
.
nearPD_used: Boolean determining whether nearPD
function was used on info_mat
if TRUE
or not if FALSE
. Only returned if getSE=TRUE
.
theta_se: standard errors of parameters in theta
. Only returned if getSE=TRUE
.
trace: List with Lists of estimation output for each initial value used due to use_diff_init > 1
.
List with model characteristics
Dempster, A. P., N. M. Laird, and D. B. Rubin. 1977. “Maximum Likelihood from Incomplete Data via the EM Algorithm.” Journal of the Royal Statistical Society. Series B 39 (1): 1–38..
Krolzig, Hans-Martin. 1997. “The markov-switching vector autoregressive model.”. Springer.
VARmdl
set.seed(123)
# Define DGP of MS VAR process
mdl_msvar2 <- list(n = 200,
p = 1,
q = 2,
mu = rbind(c(5, -2),
c(10, 2)),
sigma = list(rbind(c(5.0, 1.5),
c(1.5, 1.0)),
rbind(c(7.0, 3.0),
c(3.0, 2.0))),
phi = rbind(c(0.50, 0.30),
c(0.20, 0.70)),
k = 2,
P = rbind(c(0.90, 0.10),
c(0.10, 0.90)))
# Simulate process using simuMSVAR() function
y_msvar_simu <- simuMSVAR(mdl_msvar2)
# Set options for model estimation
control <- list(msmu = TRUE,
msvar = TRUE,
method = "EM",
use_diff_init = 1)
# Estimate model
y_msvar_mdl <- MSVARmdl(y_msvar_simu$y, p = 1, k = 2, control = control)
summary(y_msvar_mdl)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.