R: FlexMix Interface to Linear Mixed Models

FLXMRlmer {flexmix} | R Documentation

## 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 = TRUE,
              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 formula.
`random` | A formula for specifying the random effects.
`weighted` | A logical indicating if the model should be estimated with 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`.

### 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`.

### 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 weighted ML estimation is made and the condition on the covariate matrix of the random effects is checked. If this fails, only estimation with `weighted = FALSE` is possible which will maximize the classification likelihood.

### Author(s)

Bettina Gruen

### Examples

    id <- rep(1:50, each = 10)
    x <- rep(1:10, 50)
    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, control = list(tolerance = 10^-3),
                      cluster = rep(rep(1:2, each = 10), 25))
    parameters(fitted)

[Package flexmix version 2.3-14 Index]