Added support for mixed-frequency estimation with AR(1)
idiosyncratic errors (quarterly.vars combined with
idio.ar1 = TRUE). This implements the full model of Banbura
and Modugno (2014), allowing observation errors to follow AR(1)
processes while handling mixed monthly-quarterly data with temporal
aggregation constraints.
New internal functions init_cond_MQ_idio() and
EMstepBMMQidio() implement the EM algorithm for the
combined MQ + idio.ar1 case, with state vector structure
[factors, monthly_errors, quarterly_error_lags].
Updated plot.dfm() with
type = "residual" to properly handle mixed-frequency and
AR(1) error models by using the residuals() method
internally.
Added examples and documentation for the new MQ + idio.ar1
functionality in both the DFM() help page and the
introductory vignette.
quarterly.vars, enabling mixed-frequency
estimation with monthly and quarterly data following Banbura and Modugno
(2014). The data matrix should contain the quarterly variables at the
end (after the monthly ones).inv_sympd() by Armadillo
inv() in C++ Kalman Filter to improve numerical robustness
at a minor performance cost.summary.dfm: print method showed
that model had AR(1) errors even though idio.ar1 = FALSE by
default.Added argument idio.ar1 = TRUE allowing estimation
of approximate DFM’s with AR(1) observation errors.
Added a small theoretical vignette entitled ‘Dynamic Factor Models: A Very Short Introduction’. This vignette lays a foundation for the present and future functionality of dfms. I plan to implement all features described in this vignette until summer 2023.
na.keep = TRUE to
fitted.dfm. Setting na.keep = FALSE allows
interpolation of data based on the DFM. Thanks @apoorvalal (#45).summary.dfm occurring if only one
factor was estimated (basically an issue with dropping matrix dimensions
which lead the factor summary statistics to be displayed without
names).New default em.method = "auto", which uses
"BM" if the data has any missing values and
"DGR" otherwise.
Added vignette providing a walkthrough of the main features.
DFM(). The new name was inspired by the vars
package.