R: Semiparametric EM-like Algorithm for univariate symmetric...

spEMsymloc {mixtools} | R Documentation

## Semiparametric EM-like Algorithm for univariate symmetric location mixture

### Description

Returns semiparametric EM algorithm output (Bordes et al, 2007, and Benaglia et al, 2009) for location mixtures of univariate data and symmetric component density.

### Usage

    spEMsymloc(x, mu0, bw = bw.nrd0(x), h=bw, eps = 1e-8, maxiter = 100,
               stochastic = FALSE, verbose = FALSE)

### Arguments

`x` | A vector of length n consisting of the data.
`mu0` | Either a vector specifying the initial centers for the kmeans function, and from which the number of component is obtained, or an integer m specifying the number of initial centers, which are then choosen randomly in kmeans.
`bw` | Bandwidth for density estimation, equal to the standard deviation of the kernel density.
`h` | Alternative way to specify the bandwidth, to provide backward compatibility.
`eps` | Tolerance limit for declaring algorithm convergence. Convergence is declared before `maxiter` iterations whenever the maximum change in any coordinate of the `lambda` (mixing proportion estimates) and `mu` (means) vector does not exceed `eps`.
`maxiter` | The maximum number of iterations allowed, for both stochastic and non-stochastic versions; for non-stochastic algorithms (`stochastic = FALSE`), convergence may be declared before `maxiter` iterations (see `eps` above).
`stochastic` | Flag, if FALSE (the default), runs the non-stochastic version of the algorithm, as in Benaglia et al (2009). Set to TRUE to run a stochastic version which simulates the posteriors at each iteration (as in Bordes et al, 2007), and runs for `maxiter` iterations.
`verbose` | If TRUE, print updates for every iteration of the algorithm as it runs

### Value

`spEMsymloc` returns a list of class `npEM` with the following items:

`data` | The raw data (an n x r matrix).
`posteriors` | An n x m matrix of posterior probabilities for observations. If `stochastic = TRUE`, this matrix is computed from an average over the `maxiter` iterations.
`bandwidth` | Same as the `bw` input argument, returned because this information is needed by any method that produces density estimates from the output.
`lambda` | The sequence of mixing proportions over iterations.
`lambdahat` | The final estimate for mixing proportions if `stochastic = FALSE`, the average over the sequence if `stochastic = TRUE`.
`mu` | the sequence of component means over iterations.
`muhat` | the final estimate of component means if `stochastic = FALSE`, the average over the sequence if `stochastic = TRUE`.
`symmetric` | Flag indicating that the kernel density estimate is using a symmetry assumption.

### References

- Benaglia, T., Chauveau, D., and Hunter, D. R., An EM-like algorithm for semi- and non-parametric estimation in multivariate mixtures, Journal of Computational and Graphical Statistics, 18, 505-526, 2009.

- Benaglia, T., Chauveau, D., Hunter, D. R., and Young, D. mixtools: An R package for analyzing finite mixture models. Journal of Statistical Software, 32(6):1-29, 2009.

- Bordes, L., Chauveau, D., and Vandekerkhove, P. (2007), An EM algorithm for a semiparametric mixture model, Computational Statistics and Data Analysis, 51: 5429-5443.

### See Also

`plot.npEM`, `rnormmix`, `npEM`, `spEMsymlocN01`, `plotseq.npEM`

### Examples

    ## Example from a normal location mixture
    set.seed(100)
    n <- 200
    lambda <- c(1/3,2/3)
    mu <- c(0, 4); sigma<-rep(1, 2)
    x <- rnormmix(n, lambda, mu, sigma)
    out.stoc <- spEMsymloc(x, mu0=c(-1, 2), stochastic=TRUE)
    out.nonstoc <- spEMsymloc(x, mu0=c(-1, 2))

[Package mixtools version 1.2.0 Index]