flexmix (version 2.3-9)

FLXMCfactanal: Driver for mixtures of factor analyzers

Description

This driver for flexmix implements estimation of mixtures of factor analyzers using ML estimation of factor analysis implemented in factanal in each M-step.

Usage

FLXMCfactanal(formula = . ~ ., factors = 1, ...)

Arguments

formula
A formula which is interpreted relative to the formula specified in the call to flexmix using update.formula. Only the left-hand side (respons
factors
Integer specifying the number of factors in each component.
...
Passed to factanal

Value

  • FLXMCfactanal returns an object of class FLXM.

Warning

This does not implement the AECM framework presented in McLachlan and Peel (2000, p.245), but uses the available functionality in R for ML estimation of factor analyzers. The implementation therefore is only experimental and has not been well tested.

Please note that in general a good initialization is crucial for the EM algorithm to converge to a suitable solution for this model class.

References

G. McLachlan and D. Peel. Finite Mixture Models, 2000. John Wiley and Sons Inc.

See Also

flexmix

Examples

Run this code
## Reproduce Table 8.1. p.255 (McLachlan and Peel, 2000)
if (require("gclus")) {
  data("wine", package = "gclus")
  wine_data <- as.matrix(wine[,-1])
  set.seed(123)
  wine_fl_diag <- initFlexmix(wine_data ~ 1, k = 3, nrep = 10,
                              model = FLXMCmvnorm(diagonal = TRUE))
  wine_fl_fact <- lapply(1:8, function(q) flexmix(wine_data ~ 1, model =
                          FLXMCfactanal(factors = q, nstart = 3),
                          cluster = posterior(wine_fl_diag)))
  sapply(wine_fl_fact, logLik)
  ## FULL
  set.seed(123)
  wine_full <- initFlexmix(wine_data ~ 1, k = 3, nrep = 10,
                           model = FLXMCmvnorm(diagonal = FALSE))
  logLik(wine_full)
  ## TRUE
  wine_true <- flexmix(wine_data ~ 1, cluster = wine$Class,
                       model = FLXMCmvnorm(diagonal = FALSE))
  logLik(wine_true)
}

Run the code above in your browser using DataLab