| id.cv | R Documentation | 
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 ε_t.
Matrix B corresponds to the decomposition of the pre-break covariance matrix Σ_1=B B'. The post-break covariance corresponds to Σ_2=BΛ B' where Λ is the estimated unconditional heteroskedasticity matrix.
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 )
| 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). | 
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 | 
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.
For alternative identification approaches see id.st, id.garch, id.cvm, id.dc or id.ngml
#' # 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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.