*dfms* provides efficient estimation of Dynamic Factor Models
via the EM Algorithm. Estimation can be done in 3 different ways
following:

Doz, C., Giannone, D., & Reichlin, L. (2011). A two-step estimator for large approximate dynamic factor models based on Kalman filtering.

*Journal of Econometrics, 164*(1), 188-205. doi:10.1016/j.jeconom.2011.02.012Doz, C., Giannone, D., & Reichlin, L. (2012). A quasi-maximum likelihood approach for large, approximate dynamic factor models.

*Review of economics and statistics, 94*(4), 1014-1024. doi:10.1162/REST_a_00225Banbura, M., & Modugno, M. (2014). Maximum likelihood estimation of factor models on datasets with arbitrary pattern of missing data.

*Journal of Applied Econometrics, 29*(1), 133-160. doi:10.1002/jae.2306

The default is `em.method = "auto"`

, which chooses
`"DGR"`

following Doz, Giannone & Reichlin (2012) if
there are no missing values in the data, and `"BM"`

following
Banbura & Modugno (2014) with missing data. Using
`em.method = "none"`

generates Two-Step estimates following
Doz, Giannone & Reichlin (2011). This is extremely efficient on
bigger datasets. PCA and Two-Step estimates are also reported in
EM-based methods.

All 3 estimation methods support missing data, with various
preprocessing options, but `em.method = "DGR"`

does not
account for them in the EM iterations, and should only be used if a few
values are missing at random. For all other cases
`em.method = "BM"`

or `em.method = "none"`

is the
way to go.

*dfms* is intended to provide a simple, numerically robust,
and computationally efficient baseline implementation of (linear
Gaussian) Dynamic Factor Models for R, allowing straightforward
application to various contexts such as time series dimensionality
reduction and multivariate forecasting. The implementation is based on
efficient C++ code, making *dfms* orders of magnitude faster than
packages such as *MARSS* that
can be used to fit dynamic factor models, or packages like *nowcasting* and
*nowcastDFM*,
which fit dynamic factor models specific to mixed-frequency nowcasting
applications. The latter two packages additionally support blocking of
variables into different groups for which factors are to be estimated,
and EM adjustments for variables at different frequencies.
The package is currently not intended to fit more general forms of the
state space model such as provided by *MARSS*.

```
# CRAN
install.packages("dfms")
# Development Version
install.packages('dfms', repos = c('https://sebkrantz.r-universe.dev', 'https://cloud.r-project.org'))
```

```
library(dfms)
# Fit DFM with 6 factors and 3 lags in the transition equation
= DFM(diff(BM14_M), r = 6, p = 3)
mod
# 'dfm' methods
summary(mod)
plot(mod)
as.data.frame(mod)
# Forecasting 20 periods ahead
= predict(mod, h = 20)
fc
# 'dfm_forecast' methods
print(fc)
plot(fc)
as.data.frame(fc)
```