#acl DynareWriterGroup:read,write,delete,revert DynareTeamGroup:read,write,delete,revert,admin All:read = Interface for SVAR exclusion restrictions = == Model == {{{#!latex \[ y_t' A_0 = \sum_{i=1}^r y_{t-i} A_i + z_t' C + \epsilon_t \] }}} where ''y'',,t,, is a vector of ''n'' endogenous variables, ''r'' is the maximum lag length, {{{z}}} a vector of ''m'' exogenous variables (only a constant for the time being). Note that each equation corresponds to the columns of ''A'',,i,,, ''i''=0,...,''r''. The model can be written in a more compact form {{{#!latex \[ y_t' A_0 = x_t A_+ + \epsilon_t \] }}} where {{{#!latex \[ x_t = \left[\begin{array}{cccc}y_{t-1}' & \ldots & y_{t-r}' & z_t'\end{array}\right]\;\;\; A_+ = \left[\begin{array}{c}A_1\\ \vdots \\ A_t\\ C\end{array}\right] \] }}} == Exculsion Restrictions == Restrictions are defined with ''Q'',,i,, and ''R'',,i,, matrices for each column of ''A'',,0,, and ''A'',,+,, respectively. ''Q'' and ''R'' matrices are made of 0 and 1 such that {{{#!latex \[ Q_i A_{0,i} = 0\;\;\;R_i A_{+,i} = 0 \] }}} ''Q'',,i,, matrices have ''n'' columns and as many rows as there are restrictions. ''R'',,i,, matrices have ''k=r*n+1'' columns and as many rows as there are restrictions. == Dynare implementation == The ''Q'',,i,, and ''R'',,i,, matrices are stored in 2 cell arrays, with as many elements as equations: {{{ Qi = cell(n); Ri = cell(n); }}} Each element of the cell arrays is a matrix with as many rows as there are restrictions on the equation and as many columns as there are coefficients in ''A'',,0,, and ''A'',,+,, respectively. For each exclusion of variable ''y'',,t,j,, in equation ''i'' {{{ Qi{i}(h,j) = 1; }}} where ''h'' is the number of the restriction in equation ''i'' in ''A'',,0,, For each exclusion of variable ''y'',,t-p,j,, in equation ''i'' {{{ Ri{i}(h,(p-1)*n+j) = 1; }}} where ''h'' is the number of the restriction in equation ''i'' in ''A'',,+,, For general linear restrictions on the coefficients, the non-zero elements of the matrices in {{{Qi}}} and {{{Ri}}} are not necessarily equal to 1. Excluding the constant in equation ''i'' requires setting {{{ Ri{i}(h,r*n+1) = 1; }}} The preprocessor creates {{{options_.ms.Qi}}} and {{{options_.ms.Ri}}} The Matlab function {{{swz/identification/exclusions.m}}} handles these options, except when {{{upper_cholesky}}} or {{{lower_cholesky}}} are specified. It contains the following code: {{{ %make local copy in order not to call structure fields inside a loop Qi = options_.ms.Qi; Ri = options_.ms.Ri; for n=1:nvar Ui{n" = null(Qi(:,:,n)); Vi{n} = null(Ri(:,:,n)); n0(n) = size(Ui{n},2); np(n) = size(Vi{n},2); end }}} ixmCoPres = NaN; }}} and makes sure that the matrices have the right dimensions.