flexmix (version 2.3-9)

FLXMRlmer: FlexMix Interface to Linear Mixed Models

Description

This is a driver which allows fitting of mixtures of linear models with random effects.

Usage

FLXMRlmm(formula = . ~ ., random, lm.fit = c("lm.wfit",
          "smooth.spline"), varFix = c(Random = FALSE, Residual =
          FALSE), ...)
FLXMRlmer(formula = . ~ ., random, weighted = FALSE,
          control = list(), eps = .Machine$double.eps)

Arguments

formula
A formula which is interpreted relative to the formula specified in the call to flexmix using update.formula. Default is to use the original flexmix model fo
random
A formula for specifying the random effects.
weighted
A logical indicating if the model can estimate weighted ML.
control
A list of control parameters. See lmer for details.
eps
Observations with a component-specific posterior smaller than eps are omitted in the M-step for this component.
lm.fit
A character string indicating if the coefficients should be fitted using either a linear model or the function smooth.spline
varFix
Named logical vector of length 2 indicating if the variance of the random effects and the residuals are fixed over the components.
...
Additional arguments to be passed to smooth.spline.

Value

  • Returns an object of class FLXMRlmer and FLXMRlmm.

Warning

For FLXMRlmer the weighted ML estimation is only correct if the covariate matrix of the random effects is the same for each observation. By default non-weighted ML estimation is made. If this is changed the condition on the covariate matrix of the random effects is checked.

Details

FLXMRlmm allows only one random effect. FLXMRlmer allows an arbitrary number of random effects if weighted=FALSE; a certain structure of the model matrix of the random effects has to be given for weighted ML estimation, i.e. where weighted=TRUE.

Examples

Run this code
id <- rep(1:100, each = 10)
x <- rep(1:10, 100)
sample <- data.frame(y = rep(rnorm(unique(id)/2, 0, c(5, 2)), each = 10) +
                         rnorm(length(id), rep(c(3, 8), each = 10)) +
                         rep(c(0, 3), each = 10) * x,
                     x = x,
                     id = factor(id))
fitted <- flexmix(.~.|id, k = 2, model = FLXMRlmm(y ~ x, random = ~ 1),
                  data = sample)
parameters(fitted)
xyplot(y ~ x | clusters(fitted), groups = id, data = sample, type = "l")

Run the code above in your browser using DataLab