smooth2random {mgcv} | R Documentation

## Convert a smooth to a form suitable for estimating as random effect

### Description

A generic function for converting `mgcv` smooth objects to forms suitable for estimation as random effects by e.g. `lme`. Exported mostly for use by other package developers.

### Usage

    smooth2random(object,vnames,type=1)

### Arguments

`object` | an `mgcv` smooth object.
`vnames` | a vector of names to avoid as dummy variable names in the random effects form.
`type` | `1` for `lme`, otherwise `lmer`.

### Details

There is a duality between smooths and random effects which means that smooths can be estimated using mixed modelling software. This function converts standard `mgcv` smooth objects to forms suitable for estimation by `lme`, for example. A service routine for `gamm` exported for use by package developers.

### Value

A list.

`rand` | a list of random effects, including grouping factors, and a fixed effects matrix. Grouping factors, model matrix and model matrix name attached as attributes, to each element.
`trans.D` | A vector, trans.D, that transforms coefs, in order [rand1, rand2,... fix] back to original parameterization. If null, then taken as vector of ones. `b.original = trans.U %*% (trans.D*b.fit)`.
`trans.U` | A matrix, trans.U, that transforms coefs, in order [rand1, rand2,... fix] back to original parameterization. If null, then not needed. If null then taken as identity.
`Xf` | A matrix for the fixed effects, if any.
`fixed` | `TRUE/FALSE`, indicating if term was unpenalized or not. If unpenalized then other stuff may not be returned (it's not a random effect).
`rind` | an index vector such that if br is the vector of random coefficients for the term, br[rind] is the coefs in order for this term.
`pen.ind` | index of which penalty penalizes each coefficient: 0 for unpenalized.

### Author(s)

Simon N. Wood simon.wood@r-project.org.

### References

Wood S.N. (2006) Generalized Additive Models: An Introduction with R. Chapman and Hall/CRC Press.

### See Also

`gamm`

### Examples

    library(mgcv)
    x <- runif(30)
    sm <- smoothCon(s(x),data.frame(x=x))[[1]]
    smooth2random(sm,"")

[Package mgcv version 1.8-16 Index]