R: Simulate from Parameterized MVN Mixture Models

sim {mclust} | R Documentation

## Simulate from Parameterized MVN Mixture Models

### Description

Simulate data from parameterized MVN mixture models.

### Usage

    sim(modelName, parameters, n, seed = NULL, ...)

### Arguments

`modelName` | A character string indicating the model. The help file for `mclustModelNames` describes the available models.
`parameters` | A list with the following components: `pro` A vector whose kth component is the mixing proportion for the kth component of the mixture model. If missing, equal proportions are assumed. `mean` The mean for each component. If there is more than one component, this is a matrix whose kth column is the mean of the kth component of the mixture model. `variance` A list of variance parameters for the model. The components of this list depend on the model specification. See the help file for `mclustVariance` for details.
`n` | An integer specifying the number of data points to be simulated.
`seed` | An optional integer argument to `set.seed` for reproducible random class assignment. By default the current seed will be used. Reproducibility can also be achieved by calling `set.seed` before calling `sim`.
`...` | Catches unused arguments in indirect or list calls via `do.call`.

### Details

This function can be used with an indirect or list call using `do.call`, allowing the output of e.g. `mstep`, `em`, `me`, `Mclust` to be passed directly without the need to specify individual parameters as arguments.

### Value

A matrix in which first column is the classification and the remaining columns are the `n` observations simulated from the specified MVN mixture model.

`Attributes:` | `"modelName"` A character string indicating the variance model used for the simulation.

### See Also

`simE`, ..., `simVVV`, `Mclust`, `mstep`, `do.call`

### Examples

    irisBIC <- mclustBIC(iris[,-5])
    irisModel <- mclustModel(iris[,-5], irisBIC)
    names(irisModel)
    irisSim <- sim(modelName = irisModel$modelName,
                   parameters = irisModel$parameters,
                   n = nrow(iris))

      do.call("sim", irisModel) # alternative call

    par(pty = "s", mfrow = c(1,2))

    dimnames(irisSim) <- list(NULL, c("dummy", (dimnames(iris)[[2]])[-5]))

    dimens <- c(1,2)
    lim1 <- apply(iris[,dimens],2,range)
    lim2 <- apply(irisSim[,dimens+1],2,range)
    lims <- apply(rbind(lim1,lim2),2,range)
    xlim <- lims[,1]
    ylim <- lims[,2]

    coordProj(iris[,-5], parameters=irisModel$parameters,
              classification=map(irisModel$z),
              dimens=dimens, xlim=xlim, ylim=ylim)

    coordProj(iris[,-5], parameters=irisModel$parameters,
              classification=map(irisModel$z), truth = irisSim[,-1],
              dimens=dimens, xlim=xlim, ylim=ylim)

    irisModel3 <- mclustModel(iris[,-5], irisBIC, G=3)
    irisSim3 <- sim(modelName = irisModel3$modelName,
                   parameters = irisModel3$parameters, n = 500, seed = 1)

     irisModel3$n <- NULL
     irisSim3 <- do.call("sim",c(list(n=500,seed=1),irisModel3)) # alternative call

    clPairs(irisSim3[,-1], cl = irisSim3[,1])

[Package mclust version 5.4.8 Index]