dfms is now part of rOpenSci – following completion of a scientific review by @eeholmes and @santikka. This means the repo shifted to ropensci/dfms and the docs (now in rOpenSci style) to docs.ropensci.org/dfms.
Added a news() function for news decomposition identifying the contribution of new data releases to DFM predictions/nowcasts following research codes by Banbura and Modugno (2014). It supports efficient multi-target news estimation, has been tested with MQ/AR(1) model versions, and is suitable for mixed-frequency nowcasting applications.
Added arguments save.full.state to DFM() and use.full.state to predict(), fitted(), and residuals() - default TRUE. Full-state output includes idiosyncratic components (when modeled with idio.ar1 = TRUE). This generally improves the accuracy of DFM forecasts, but changes the interpretation for residuals/fitted values,
which are then no longer a function of the factors alone.
Marked 1.0.0 as the package is now peer-reviewed and feature-complete within the intended scope: the full and efficient implementation of Banbura and Modugno (2014) in R.
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.