gamm
and gamm4
from the gamm4
package operate in this way.The second method represents the conventional random effects in a GAM in the same way that the smooths are represented --- as penalized
regression terms. This method can be used with gam
by making use of s(...,bs="re")
terms in a model: see
smooth.construct.re.smooth.spec
, for full details. The basic idea is that, e.g., s(x,z,g,bs="re")
generates an i.i.d. Gaussian
random effect with model matrix given by model.matrix(~x:z:g-1)
--- in principle such terms can take any number of arguments. This simple
approach is sufficient for implementing a wide range of commonly used random effect structures. For example if g
is a factor then
s(g,bs="re")
produces a random coefficient for each level of g
, with the radndom coefficients all modelled as i.i.d. normal. If g
is a factor and x
is numeric, then s(x,g,bs="re")
produces an i.i.d. normal random slope relating the response to x
for each level of g
. If h
is another factor then s(h,g,bs="re")
produces the usual i.i.d. normal g
- h
interaction. Note that a rather useful approximate
test for zero random effect is also implemented for tsuch terms based on Wood (2013).
Alternatively, but less straightforwardly, the paraPen
argument to gam
can be used:
see gam.models
. If smoothing parameter estimation is by ML or REML (e.g. gam(...,method="REML")
) then this approach is
a completely conventional likelihood based treatment of random effects.
gam
can be slow for fitting models with large numbers of random effects, because it does not exploit the sparcity that is often a feature
of parametric random effects. It can not be used for models with more coefficients than data. However gam
is often faster and more relaiable
than gamm
or gamm4
, when the number of random effects is modest.
To facilitate the use of random effects with gam
, gam.vcomp
is a utility routine for converting
smoothing parameters to variance components. It also provides confidence intervals, if smoothness estimation is by ML or REML.
Note that treating random effects as smooths does not remove the usual problems associated with testing variance components for equality to zero: see summary.gam
and anova.gam
.
Wood, S.N. (2011) Fast stable restricted maximum likelihood and marginal likelihood estimation of semiparametric generalized linear models. Journal of the Royal Statistical Society (B) 73(1):3-36
Wood, S.N. (2008) Fast stable direct fitting and smoothness selection for generalized additive models. Journal of the Royal Statistical Society (B) 70(3):495-518
Wood, S.N. (2006) Low rank scale invariant tensor product smooths for generalized additive mixed models. Biometrics 62(4):1025-1036
gam.vcomp
, gam.models
, smooth.terms
,
smooth.construct.re.smooth.spec
,
gamm
## see also examples for gam.models, gam.vcomp and gamm
## simple comparison of lme and gam
require(mgcv)
require(nlme)
b0 <- lme(travel~1,data=Rail,~1|Rail,method="REML")
b <- gam(travel~s(Rail,bs="re"),data=Rail,method="REML")
intervals(b0)
gam.vcomp(b)
anova(b)
Run the code above in your browser using DataLab