Learn R Programming

pvars (version 1.1.1)

pid.iv: Identification of panel SVAR models by means of proxy variables

Description

Given an estimated panel of VAR models, this function uses proxy variables to partially identify the structural impact matrix \(B_i\) of the corresponding SVAR model $$y_{it} = c_{it} + A_{i1} y_{i,t-1} + ... + A_{i,p_i} y_{i,t-p_i} + u_{it}$$ $$ = c_{it} + A_{i1} y_{i,t-1} + ... + A_{i,p_i} y_{i,t-p_i} + B_i \epsilon_{it}.$$ In general, identification procedures determine \(B_i\) up to column ordering, scale, and sign. For a unique solution, pid.iv follows the literature on proxy SVAR. The \(S\) columns in \(B_i = [B_{i,1} : B_{i,2}]\) of the identified shocks \(\epsilon_{its}, s=1,\ldots,S,\) are ordered first, and the variance \(\sigma^2_{\epsilon,is} = 1\) is normalized to unity (see e.g. Lunsford 2015:6, Eq. 9). Further, the sign is fixed to a positive correlation between proxy and shock series. A normalization of the impulsed shock that may fix the size of the impact response in the IRF can be imposed subsequently via 'normf' in irf.pvarx and sboot.pmb.

Usage

pid.iv(
  x,
  iv,
  S2 = c("MR", "JL", "NQ"),
  cov_u = "OMEGA",
  R0 = NULL,
  combine = c("pool", "indiv")
)

Value

List of class 'pid' with elements:

A

Matrix. The lined-up coefficient matrices \(A_j, j=1,\ldots,p\) for the lagged variables in the panel VAR.

B

Matrix. Mean group of the estimated structural impact matrices \(B_i\), i.e. the unique decomposition of the covariance matrices of reduced-form errors.

L.varx

List of 'varx' objects for the individual estimation results to which the structural impact matrices \(B_i\) have been added.

eps0

Matrix. The combined whitened residuals \(\epsilon_{0}\) to which the pooled identification procedure has been applied subsequently. These are still the unrotated baseline shocks! NULL if 'indiv' identifications have been used.

Q

Matrix. The orthogonal matrix suggested by the pooled identification procedure. NULL if 'indiv' identifications have been used.

args_pid

List of characters and integers indicating the identification methods and specifications that have been used.

args_pvarx

List of characters and integers indicating the estimator and specifications that have been used.

Arguments

x

An object of class 'pvarx' or a list of VAR objects that will be coerced to 'varx'. Estimated panel of VAR objects.

iv

List. A single 'data.frame' of the \(L\) common proxy time series \(m_t\) or a list of \(N\) 'data.frame' objects of the \(L\) individual proxy time series \(m_{it}\). The proxies must have the same succession \(l = 1,\ldots,L\) in each individual 'data.frame'.

S2

Character. Identification within multiple proxies \(m_{it}\) via 'MR' for lower-triangular \([I_S : -B_{i,11} B_{i,12}^{-1} ] B_{i,1}\) by Mertens, Ravn (2013), via 'JL' for chol\((\Sigma_{mu,i} \Sigma_{u,i}^{-1} \Sigma_{um,i})\) by Jentsch, Lunsford (2021), or via 'NQ' for the nearest orthogonal matrix from svd decomposition by Empting et al. (2025). In case of \(S=L=1\) proxy, all three choices provide identical results on \(B_{i,1}\). In case of combine='pool', the argument is automatically fixed to 'NQ'.

cov_u

Character. Selection of the estimated residual covariance matrices \(\hat{\Sigma}_{u,i}\) to be used in the identification procedure. Either 'OMEGA' (the default) for \(\hat{U}_i \hat{U}_i'/T_i\) as used in Mertens, Ravn (2013) and Jentsch, Lunsford (2021) or 'SIGMA' for \(\hat{U}_i \hat{U}_i'/(T_i - n_{zi})\), which corrects for the number of regressors \(n_{zi}\). Both character options refer to the name of the respective estimate in the 'varx' objects.

R0

Matrix. A \((L \times S)\) selection matrix for 'NQ' that governs the attribution of the \(L\) proxies to their specific \(S\) structural shock series. If NULL (the default), R0 \(= I_S\) will be used such that the \(S=L\) columns of \(B_{i,1}\) are one-by-one estimated from the \(S=L\) proxy series 'iv' available.

combine

Character. The combination of the individual reduced-form residuals via 'pool' for the pooled shocks by Empting et al. (2025) using a common orthogonal matrix or via 'indiv' for individual-specific \(B_i \forall i\) using strictly separated identification runs.

References

Mertens, K., and Ravn, M. O. (2013): "The Dynamic Effects of Personal and Corporate Income Tax Changes in the United States", American Economic Review, 103, pp. 1212-1247.

Jentsch, C., and Lunsford, K. G. (2019): "The Dynamic Effects of Personal and Corporate Income Tax Changes in the United States: Comment", American Economic Review, 109, pp. 2655-2678.

Jentsch, C., and Lunsford, K. G. (2021): "Asymptotically Valid Bootstrap Inference for Proxy SVARs", Journal of Business and Economic Statistics, 40, pp. 1876-1891.

Empting, L. F. T., Maxand, S., Oeztuerk, S., and Wagner, K. (2025): "Inference in Panel SVARs with Cross-Sectional Dependence of Unknown Form".

See Also

Other panel identification functions: pid.chol(), pid.cvm(), pid.dc(), pid.grt()

Examples

Run this code
data("PCIT")
names_k = c("APITR", "ACITR", "PITB", "CITB", "GOV", "RGDP", "DEBT")
names_l = c("m_PI", "m_CI")  # proxy names
names_s = paste0("epsilon[ ", c("PI", "CI"), " ]")  # shock names
dim_p   = 4  # lag-order

# estimate and identify panel SVAR #
L.vars = list(USA = vars::VAR(PCIT[ , names_k], p=dim_p, type="const"))
L.iv   = list(USA = PCIT[-(1:dim_p), names_l])
R.pid  = pid.iv(L.vars, iv=L.iv, S2="NQ", cov_u="SIGMA", combine="pool")
colnames(R.pid$B)[1:2] = names_s  # labeling

Run the code above in your browser using DataLab