Learn R Programming

flexmix (version 2.3-19)

FLXMCmvnorm: FlexMix Clustering Demo Driver

Description

These are demo drivers for flexmix implementing model-based clustering of Gaussian data.

Usage

FLXMCmvnorm(formula = . ~ ., diagonal = TRUE)
FLXMCnorm1(formula = . ~ .)

Value

FLXMCmvnorm returns an object of class FLXMC.

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 (response) of the formula is used. Default is to use the original flexmix model formula.

diagonal

If TRUE, then the covariance matrix of the components is restricted to diagonal matrices.

Author

Friedrich Leisch and Bettina Gruen

Details

This is mostly meant as a demo for FlexMix driver programming, you should also look at package mclust for real applications. FLXMCmvnorm clusters multivariate data, FLXMCnorm1 univariate data. In the latter case smart initialization is important, see the example below.

References

Friedrich Leisch. FlexMix: A general framework for finite mixture models and latent class regression in R. Journal of Statistical Software, 11(8), 2004. doi:10.18637/jss.v011.i08

See Also

flexmix

Examples

Run this code
data("Nclus", package = "flexmix")

require("MASS")
eqscplot(Nclus)

## This model is wrong (one component has a non-diagonal cov matrix)
ex1 <- flexmix(Nclus ~ 1, k = 4, model = FLXMCmvnorm())
print(ex1)
plotEll(ex1, Nclus)

## True model, wrong number of components
ex2 <- flexmix(Nclus ~ 1, k = 6, model = FLXMCmvnorm(diagonal = FALSE))  
print(ex2)

plotEll(ex2, Nclus)

## Get parameters of first component
parameters(ex2, component = 1)

## Have a look at the posterior probabilies of 10 random observations
ok <- sample(1:nrow(Nclus), 10)
p  <- posterior(ex2)[ok, ]
p

## The following two should be the same
max.col(p)
clusters(ex2)[ok]
# \testonly{
  stopifnot(all.equal(max.col(p), clusters(ex2)[ok]))
# }
## Now try the univariate case
plot(density(Nclus[, 1]))

ex3 <- flexmix(Nclus[, 1] ~ 1, cluster = cut(Nclus[, 1], 3),
               model = FLXMCnorm1())
ex3
parameters(ex3)

Run the code above in your browser using DataLab