# Automatic grid search

### Description

This function provides an automatic grid search for latent class mixed
models estimated with `hlme`

, `lcmm`

, `multlcmm`

and
`Jointlcmm`

functions.

### Usage

1 | ```
gridsearch(m, rep, maxiter, minit)
``` |

### Arguments

`m` |
a call of |

`rep` |
the number of departures from random initial values |

`maxiter` |
the number of iterations in the optimization algorithm |

`minit` |
an object of class |

### Details

The function permits the estimation of a model from a grid of random initial values to reduce the odds of a convergence towards a local maximum.

The function was inspired by the emEM technique described in Biernacki et al. (2003). It consists in:

1. randomly generating `rep`

sets of initial values for `m`

from
the estimates of `minit`

(this is done internally using option
`B=random(minit)`

`rep`

times)

2. running the optimization algorithm for the model specified in `m`

from the `rep`

sets of initial values with a maximum number of
iterations of `maxit`

each time.

3. retaining the estimates of the random initialization that provides the
best log-likelihood after `maxiter`

iterations.

4. running the optimization algorithm from these estimates for the final estimation.

### Value

an object of class `hlme`

, `lcmm`

, `multlcmm`

or
`Jointlcmm`

corresponding to the call specified in m.

### Author(s)

Cecile Proust-Lima and Viviane Philipps

### References

Biernacki C, Celeux G, Govaert G (2003). Choosing Starting Values for the EM Algorithm for Getting the Highest Likelihood in Multivariate Gaussian Mixture models. Computational Statistics and Data Analysis, 41(3-4), 561-575.

### Examples

1 2 3 4 5 6 7 8 9 10 11 | ```
## Not run:
# initial model with ng=1 for the random initial values
m1 <- hlme(Y ~ Time * X1, random =~ Time, subject = 'ID', ng = 1,
data = data_hlme)
# gridsearch with 10 iterations from 50 random departures
m2d <- searchgrid(rep = 50, maxiter = 10, minit = m1, hlme(Y ~ Time * X1,
mixture =~ Time, random =~ Time, classmb =~ X2 + X3, subject = 'ID',
ng = 2, data = data_hlme))
## End(Not run)
``` |