Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

id.cv

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 ε_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.

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 pairwise Wald tests

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.

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)

svars

Data-Driven Identification of SVAR Models

v1.3.7
MIT + file LICENSE
Authors
Alexander Lange [aut, cre], Bernhard Dalheimer [aut], Helmut Herwartz [aut], Simone Maxand [aut], Hannes Riebl [ctb]
Initial release
2021-03-17

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.