pid.chol: Recursive identification of panel SVAR models via Cholesky...

View source: R/pid_thr.R

pid.cholR Documentation

Recursive identification of panel SVAR models via Cholesky decomposition

Description

Given an estimated panel of VAR models, this function uses the Cholesky decomposition to 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}.

Matrix B_i corresponds to the decomposition of the least squares covariance matrix \Sigma_{u,i} = B_i B_i'.

Usage

pid.chol(x, order_k = NULL)

Arguments

x

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

order_k

Vector. Vector of characters or integers specifying the assumed structure of the recursive causality. Change the causal ordering in the instantaneous effects without permuting variables and re-estimating the VAR model.

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.

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.

References

Luetkepohl, H. (2005): New Introduction to Multiple Time Series Analysis, Springer, 2nd ed.

Sims, C. A. (2008): "Macroeconomics and Reality", Econometrica, 48, pp. 1-48.

See Also

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

Examples

data("PCAP")
names_k = c("g", "k", "l", "y")  # variable names
names_i = levels(PCAP$id_i)      # country names
L.data  = sapply(names_i, FUN=function(i) 
  ts(PCAP[PCAP$id_i==i, names_k], start=1960, end=2019, frequency=1), 
  simplify=FALSE)

# estimate and identify panel SVAR #
L.vars = lapply(L.data, FUN=function(x) vars::VAR(x, p=2, type="both"))
R.pid  = pid.chol(L.vars, order_k=names_k)


pvars documentation built on Nov. 5, 2025, 6:57 p.m.