id.cv {svars} | R Documentation |
Identification of SVAR models based on Changes in volatility (CV)
Description
Given an estimated VAR model, this function applies changes in volatility to identify the structural impact matrix B of the corresponding SVAR model
y_t=c_t+A_1 y_{t-1}+...+A_p y_{t-p}+u_t
=c_t+A_1 y_{t-1}+...+A_p y_{t-p}+B \epsilon_t.
Matrix B corresponds to the decomposition of the pre-break covariance matrix \Sigma_1=B B'
.
The post-break covariance corresponds to \Sigma_2=B\Lambda B'
where \Lambda
is the estimated unconditional heteroskedasticity matrix.
Usage
id.cv(
x,
SB,
SB2 = NULL,
start = NULL,
end = NULL,
frequency = NULL,
format = NULL,
dateVector = NULL,
max.iter = 50,
crit = 0.001,
restriction_matrix = NULL
)
Arguments
x |
An object of class 'vars', 'vec2var', 'nlVar'. Estimated VAR object |
SB |
Integer, vector or date character. The structural break is specified either by an integer (number of observations in the pre-break period), a vector of ts() frequencies if a ts object is used in the VAR or a date character. If a date character is provided, either a date vector containing the whole time line in the corresponding format (see examples) or common time parameters need to be provided |
SB2 |
Integer, vector or date character. Optional if the model should be estimated with two volatility regimes. The structural break is specified either by an integer (number of observations in the pre-break period), a vector of ts() frequencies if a ts object is used in the VAR or a date character. If a date character is provided, either a date vector containing the whole time line in the corresponding format (see examples) or common time parameters need to be provided |
start |
Character. Start of the time series (only if dateVector is empty) |
end |
Character. End of the time series (only if dateVector is empty) |
frequency |
Character. Frequency of the time series (only if dateVector is empty) |
format |
Character. Date format (only if dateVector is empty) |
dateVector |
Vector. Vector of time periods containing SB in corresponding format |
max.iter |
Integer. Number of maximum GLS iterations |
crit |
Numeric. Critical value for the precision of the GLS estimation |
restriction_matrix |
Matrix. A matrix containing presupposed entries for matrix B, NA if no restriction is imposed (entries to be estimated). Alternatively, a K^2*K^2 matrix can be passed, where ones on the diagonal designate unrestricted and zeros restricted coefficients. (as suggested in Luetkepohl, 2017, section 5.2.1). |
Value
A list of class "svars" with elements
Lambda |
Estimated unconditional heteroscedasticity matrix |
Lambda_SE |
Matrix of standard errors of Lambda |
B |
Estimated structural impact matrix B, i.e. unique decomposition of the covariance matrix of reduced form residuals |
B_SE |
Standard errors of matrix B |
n |
Number of observations |
Fish |
Observed Fisher information matrix |
Lik |
Function value of likelihood |
wald_statistic |
Results of sequential Wald-type identification test on equal eigenvalues as described in Luetkepohl et. al. (2021). In case of more than two regimes, pairwise Wald-type tests of equal diagonal elements in the Lambda matrices are performed. |
iteration |
Number of GLS estimations |
method |
Method applied for identification |
SB |
Structural break (number of observations) |
A_hat |
Estimated VAR parameter via GLS |
type |
Type of the VAR model, e.g. 'const' |
SBcharacter |
Structural break (date; if provided in function arguments) |
restrictions |
Number of specified restrictions |
restriction_matrix |
Specified restriction matrix |
y |
Data matrix |
p |
Number of lags |
K |
Dimension of the VAR |
VAR |
Estimated input VAR object |
References
Rigobon, R., 2003. Identification through Heteroskedasticity. The Review of Economics and Statistics, 85, 777-792.
Herwartz, H. & Ploedt, M., 2016. Simulation Evidence on Theory-based and Statistical Identification under Volatility Breaks. Oxford Bulletin of Economics and Statistics, 78, 94-112.
Luetkepohl, H. & Meitz, M. & Netsunajev, A. & and Saikkonen, P., 2021. Testing identification via heteroskedasticity in structural vector autoregressive models. Econometrics Journal, 24, 1-22.
See Also
For alternative identification approaches see id.st
, id.garch
, id.cvm
, id.dc
or id.ngml
Examples
#' # data contains quartlery observations from 1965Q1 to 2008Q2
# assumed structural break in 1979Q3
# x = output gap
# pi = inflation
# i = interest rates
set.seed(23211)
v1 <- vars::VAR(USA, lag.max = 10, ic = "AIC" )
x1 <- id.cv(v1, SB = 59)
summary(x1)
# switching columns according to sign patter
x1$B <- x1$B[,c(3,2,1)]
x1$B[,3] <- x1$B[,3]*(-1)
# Impulse response analysis
i1 <- irf(x1, n.ahead = 30)
plot(i1, scales = 'free_y')
# Restrictions
# Assuming that the interest rate doesn't influence the output gap on impact
restMat <- matrix(rep(NA, 9), ncol = 3)
restMat[1,3] <- 0
x2 <- id.cv(v1, SB = 59, restriction_matrix = restMat)
summary(x2)
# In alternative Form
restMat <- diag(rep(1,9))
restMat[7,7]= 0
x2 <- id.cv(v1, SB = 59, restriction_matrix = restMat)
summary(x2)
#Structural brake via Dates
# given that time series vector with dates is available
dateVector = seq(as.Date("1965/1/1"), as.Date("2008/7/1"), "quarter")
x3 <- id.cv(v1, SB = "1979-07-01", format = "%Y-%m-%d", dateVector = dateVector)
summary(x3)
# or pass sequence arguments directly
x4 <- id.cv(v1, SB = "1979-07-01", format = "%Y-%m-%d", start = "1965-01-01", end = "2008-07-01",
frequency = "quarter")
summary(x4)
# or provide ts date format (For quarterly, monthly, weekly and daily frequencies only)
x5 <- id.cv(v1, SB = c(1979, 3))
summary(x5)
#-----# Example with three covariance regimes
x6 <- id.cv(v1, SB = 59, SB2 = 110)
summary(x6)