FactorAugmentedSVARResult#
- class cultivars.multivariate.structural.factor_augmented.FactorAugmentedSVARResult(*, favar, structural)[source]#
An identified factor system, answered at the scale of the panel.
The factor VAR on \((F_t, Y_t)\) is identified like any closed system, \(u_t = B \varepsilon_t\); the observation equation \(x_t = \Lambda^F F_t + \Lambda^Y Y_t + e_t\) then carries every identified factor-space response onto the panel,
\[\frac{\partial x_{t+h}}{\partial \varepsilon_t} = \operatorname{diag}(s)\, \Lambda\, \Psi_h B,\]with \(\Lambda = (\Lambda^F, \Lambda^Y)\) the loadings on the standardized panel and \(s\) the standardization scales, so the responses come back in each series’ own units.
Composition on both sides:
structuralis the factor-space identification with its whole surface – impact matrix, factor impulse responses, variance shares, recovered shocks – andfavaris the reduced form with its loadings and fit. This object owns the join: the observation-equation map from identified factor shocks to responses of every panel series.Note
The map is rotation-invariant. Principal components recover the factor space only up to rotation, and the loadings rotate with the factors, so \(\Lambda \Psi_h B\) does not depend on the factor basis even though a factor-by-factor reading of
factor_irf()does. The panel response to the observed block’s own shock is not zero on impact: the observed variables enter the observation equation directly through \(\Lambda^Y\), and the recursive default only keeps that shock out of the factors within the period.- Variables:
favar – The fitted factor-augmented reduced form.
structural – The identification of its factor VAR.
See also
FactorAugmentedSVAR– the model whoseidentify()returns this record.FAVARResult– the reduced form, with the loadings and the standardization.SVARResult– the factor-space result under the default scheme.
References
Bernanke, B. S., Boivin, J., & Eliasz, P. (2005). Measuring the effects of monetary policy: A factor-augmented vector autoregressive (FAVAR) approach. Quarterly Journal of Economics, 120(1), 387-422.
Example
Thirty series loading on one AR(1) factor and a policy rate that reacts to it. The panel impact of the factor shock is the loadings pattern in each series’ units, and the panel responses are the factor-space responses pushed through the observation equation:
>>> import numpy as np >>> from cultivars.multivariate.large_dim.factor_augmented import FAVAR >>> rng = np.random.default_rng(0) >>> factor = np.zeros(300) >>> for t in range(1, 300): ... factor[t] = 0.7 * factor[t - 1] + rng.standard_normal() >>> weights = rng.uniform(0.5, 1.5, 30) >>> panel = np.outer(factor, weights) + 0.3 * rng.standard_normal((300, 30)) >>> policy = 0.4 * factor + rng.standard_normal(300) >>> res = FAVAR(panel, policy[:, None], n_factors=1, order=1, observed_names=("ffr",)).fit() >>> svar = FactorAugmentedSVAR(res).identify() >>> svar.n_series, svar.shock_names, svar.impact.shape, svar.irf(8).shape (30, ('f1', 'ffr'), (30, 2), (9, 30, 2)) >>> bool(abs(np.corrcoef(svar.impact[:, 0], weights)[0, 1]) > 0.99) True >>> through = (res.loadings @ svar.factor_irf(0)[0]) * res._scales[:, None] >>> bool(np.allclose(svar.impact, through)) True
Attributes#
The fitted factor-augmented reduced form, with loadings and scales. |
|
The factor-space identification of |
|
Impact responses of every panel series, |
|
Number of panel series. |
|
One label per panel series. |
|
Labels of the identified shocks, from the factor-space result. |
Methods#
|
The factor-space structural impulse responses, undelegated. |
|
Responses of every panel series to the identified shocks. |
|
The estimation summary, renderable as text, HTML, or a dataframe. |