R: Fitting Generalized Linear Models (using S4)

glm4 {MatrixModels} | R Documentation

## Fitting Generalized Linear Models (using S4)

### Description

`glm4`, very similarly as standard R's `glm()` is used to fit generalized linear models, specified by giving a symbolic description of the linear predictor and a description of the error distribution.

It is more general, as it fits linear, generalized linear, non-linear and generalized nonlinear models.

### Usage

    glm4(formula, family, data, weights, subset, na.action,
         start = NULL, etastart, mustart, offset,
         sparse = FALSE, drop.unused.levels = FALSE, doFit = TRUE,
         control = list(...),
         model = TRUE, x = FALSE, y = TRUE, contrasts = NULL, ...)

### Arguments

`formula` | an object of class `"formula"` (or one that can be coerced to that class): a symbolic description of the model to be fitted. The details of model specification are given under ‘Details’.
`family` | a description of the error distribution and link function to be used in the model. This can be a character string naming a family function, a family function or the result of a call to a family function. (See `family` for details of family functions.)
`data` | an optional data frame, list or environment (or object coercible by `as.data.frame` to a data frame) containing the variables in the model. If not found in `data`, the variables are taken from `environment(formula)`, typically the environment from which `glm` is called.
`weights` | an optional vector of ‘prior weights’ to be used in the fitting process. Should be `NULL` or a numeric vector.
`subset` | an optional vector specifying a subset of observations to be used in the fitting process.
`na.action` | a function which indicates what should happen when the data contain `NA`s. The default is set by the `na.action` setting of `options`, and is `na.fail` if that is unset. The ‘factory-fresh’ default is `na.omit`. Another possible value is `NULL`, no action. Value `na.exclude` can be useful.
`start, etastart, mustart` | starting values for the parameters in the linear predictor, the predictor itself and for the vector of means.
`offset` | this can be used to specify an a priori known component to be included in the linear predictor during fitting. This should be `NULL` or a numeric vector of length equal to the number of cases. One or more `offset` terms can be included in the formula instead or as well, and if more than one is specified their sum is used. See `model.offset`.
`sparse` | logical indicating if the model matrix should be sparse or not.
`drop.unused.levels` | used only when `sparse` is TRUE: Should factors have unused levels dropped? (This used to be true, implicitly in the first versions up to July 2010; the default has been changed for compatibility with R's standard (dense) `model.matrix()`.
`doFit` | logical indicating if the model should be fitted (or just returned unfitted).
`control` | a list with options on fitting; currently passed unchanged to (hidden) function `IRLS()`.
`model, x, y` | currently ignored; here for back compatibility with `glm`.
`contrasts` | currently ignored

`...` | potentially arguments passed on to fitter functions; not used currently.

### Value

an object of class `glpModel`.

### See Also

`glm()` the standard R function;
`lm.fit.sparse()` a sparse least squares fitter.

The resulting class `glpModel` documentation.

### Examples

    ### All the following is very experimental -- and probably will change: -------

    data(CO2, package="datasets")
    ## dense linear model
    str(glm4(uptake ~ 0 + Type*Treatment, data=CO2, doFit = FALSE), 4)
    ## sparse linear model
    str(glm4(uptake ~ 0 + Type*Treatment, data=CO2, doFit = FALSE,
                      sparse = TRUE), 4)

    ## From example(glm): -----------------

    ## Dobson (1990) Page 93: Randomized Controlled Trial :
    str(trial <- data.frame(counts=c(18,17,15,20,10,20,25,13,12),
                            outcome=gl(3,1,9,labels=LETTERS[1:3]),
                            treatment=gl(3,3,labels=letters[1:3])))
    glm.D93 <- glm(counts ~ outcome + treatment, family=poisson, data=trial)
    summary(glm.D93)
    c.glm <- unname(coef(glm.D93))
    glmM  <- glm4(counts ~ outcome + treatment, family = poisson, data=trial)
    glmM2 <- update(glmM, quick = FALSE) # slightly more accurate
    glmM3 <- update(glmM, quick = FALSE, finalUpdate = TRUE)
                     # finalUpdate has no effect on 'coef'
    stopifnot( identical(glmM2@pred@coef, glmM3@pred@coef),
               all.equal(glmM @pred@coef, c.glm, tolerance=1e-7),
               all.equal(glmM2@pred@coef, c.glm, tolerance=1e-12))

    ## Watch the iterations --- and use no intercept --> more sparse X
    ## 1) dense generalized linear model
    glmM <- glm4(counts ~ 0+outcome + treatment, poisson, trial,
                          verbose = TRUE)
    ## 2) sparse generalized linear model
    glmS <- glm4(counts ~ 0+outcome + treatment, poisson, trial,
                          verbose = TRUE, sparse = TRUE)
    str(glmS, max.lev = 4)
    stopifnot( all.equal(glmM@pred@coef, glmS@pred@coef),
               all.equal(glmM@pred@Vtr,  glmS@pred@Vtr) )

    ## A Gamma example, from McCullagh & Nelder (1989, pp. 300-2)
    clotting <- data.frame(u = c(5,10,15,20,30,40,60,80,100),
                           lot1 = c(118,58,42,35,27,25,21,19,18),
                           lot2 = c(69,35,26,21,18,16,13,12,12))
    str(gMN <- glm4(lot1 ~ log(u), data=clotting, family=Gamma, verbose=TRUE))
    glm. <- glm(lot1 ~ log(u), data=clotting, family=Gamma)
    stopifnot( all.equal(gMN@pred@coef, unname(coef(glm.)), tolerance=1e-7) )

[Package MatrixModels version 0.4-1 Index]