R: Create a Model List Object

glmlist {vcdExtra} | R Documentation

## Create a Model List Object

### Description

`glmlist` creates a `glmlist` object containing a list of fitted `glm` objects with their names. `loglmlist` does the same for `loglm` objects.

The intention is to provide object classes to facilitate model comparison, extraction, summary and plotting of model components, etc., perhaps using `lapply` or similar.

There exists a `anova.glm` method for `glmlist` objects. Here, a `coef` method is also defined, collecting the coefficients from all models in a single object of type determined by `result`.

### Usage

    glmlist(...)
    loglmlist(...)

    ## S3 method for class 'glmlist'
    coef(object, result=c("list", "matrix", "data.frame"), ...)

### Arguments

`...` | One or more model objects, as appropriate to the function, optionally assigned names as in `list`.
`object` | a `glmlist` object
`result` | type of the result to be returned

### Details

The arguments to `glmlist` or `loglmlist` are of the form `value` or `name=value`.

Any objects which do not inherit the appropriate class `glm` or `loglm` are excluded, with a warning.

In the `coef` method, coefficients from the different models are matched by name in the list of unique names across all models.

### Value

An object of class `glmlist` `loglmlist`, just like a `list`, except that each model is given a `name` attribute.

### Author(s)

Michael Friendly; `coef` method by John Fox

### See Also

The function `llist` in package `Hmisc` is similar, but perplexingly more general.

The function `anova.glm` also handles `glmlist objects`

`LRstats` gives LR statistics and tests for a `glmlist` object.

### Examples

    data(Mental)
    indep <- glm(Freq ~ mental+ses,
                    family = poisson, data = Mental)
    Cscore <- as.numeric(Mental$ses)
    Rscore <- as.numeric(Mental$mental)

    coleff <- glm(Freq ~ mental + ses + Rscore:ses,
                    family = poisson, data = Mental)
    roweff <- glm(Freq ~ mental + ses + mental:Cscore,
                    family = poisson, data = Mental)
    linlin <- glm(Freq ~ mental + ses + Rscore:Cscore,
                    family = poisson, data = Mental)

    # use object names
    mods <- glmlist(indep, coleff, roweff, linlin)
    names(mods)

    # assign new names
    mods <- glmlist(Indep=indep, Col=coleff, Row=roweff, LinxLin=linlin)
    names(mods)

    LRstats(mods)

    coef(mods, result='data.frame')

    #extract model components
    unlist(lapply(mods, deviance))

    res <- lapply(mods, residuals)
    boxplot(as.data.frame(res), main="Residuals from various models")

[Package vcdExtra version 0.7-1 Index]