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
,Jointlcmm
ormpjlcmm
corresponding 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
,Jointlcmm
ormpjlcmm
corresponding 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
# \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))
# }