Raw File
FLXmclust.Rd
%
%  Copyright (C) 2004-2008 Friedrich Leisch and Bettina Gruen
%  $Id: FLXmclust.Rd 4553 2010-05-11 10:38:06Z leisch $
%
\name{FLXMCmvnorm}
\alias{FLXMCmvnorm}
\alias{FLXMCnorm1}
\alias{FLXmclust}
\title{FlexMix Clustering Demo Driver}
\description{
  These are demo drivers for \code{\link{flexmix}} implementing
  model-based clustering of Gaussian data. 
}
\usage{
FLXMCmvnorm(formula = . ~ ., diagonal = TRUE)
FLXMCnorm1(formula = . ~ .)
}
\arguments{
  \item{formula}{A formula which is interpreted relative to the formula
    specified in the call to \code{\link{flexmix}} using
    \code{\link{update.formula}}. Only the left-hand side (response) of
    the formula is used. Default is to use the original
    \code{\link{flexmix}} model
    formula.}
  \item{diagonal}{If \code{TRUE}, then the covariance matrix of the
    components is restricted to diagonal matrices.}
}
\details{
  This is mostly meant as a demo for FlexMix driver programming, you
  should also look at package \pkg{mclust} for real
  applications. \code{FLXMCmvnorm} clusters multivariate data,
  \code{FLXMCnorm1} univariate data. In the latter case smart
  initialization is important, see the example below. 
}
\value{
  \code{FLXMCmvnorm} returns an object of class \code{FLXMC}.
}
\author{Friedrich Leisch and Bettina Gruen}
\references{
  Friedrich Leisch. FlexMix: A general framework for finite mixture
  models and latent class regression in R. Journal of Statistical
  Software, 11(8), 2004. http://www.jstatsoft.org/v11/i08/
}
\seealso{\code{\link{flexmix}}}
\keyword{cluster}
\examples{
data("Nclus")

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)
}
back to top