This function provides an automatic grid search for latent class mixed
models estimated with hlme, lcmm, multlcmm and
Jointlcmm functions.
Arguments
- m
a call of
hlme,lcmm,multlcmm,Jointlcmmormpjlcmmcorresponding to the model to estimate- rep
the number of departures from random initial values
- maxiter
the number of iterations in the optimization algorithm
- minit
an object of class
hlme,lcmm,multlcmm,Jointlcmmormpjlcmmcorresponding to the same model as specified in m except for the number of classes (it should be one). This object is used to generate random initial values- cl
a cluster created by makeCluster from package parallel or an integer specifying the number of cores to use for parallel computation
Value
an object of class hlme, lcmm, multlcmm,
Jointlcmm or mpjlcmm corresponding to the call specified in m.
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.
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
if (FALSE) { # \dontrun{
# 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 <- gridsearch(rep = 50, maxiter = 10, minit = m1, hlme(Y ~ Time * X1,
mixture =~ Time, random =~ Time, classmb =~ X2 + X3, subject = 'ID',
ng = 2, data = data_hlme))
} # }