gam
can deal with simple independent random effects, by exploiting the link
between smooths and random effects to treat random effects as smooths. s(x,bs="re")
implements
this. Such terms can can have any number of predictors, which can be any mixture of numeric or factor
variables. The terms produce a parametric interaction of the predictors, and penalize the corresponding
coefficients with a multiple of the identity matrix, corresponding to an assumption of i.i.d. normality.
See details.## S3 method for class 're.smooth.spec':
smooth.construct(object, data, knots)
## S3 method for class 'random.effect':
Predict.matrix(object, data)
smooth.construct
method a smooth specification object,
usually generated by a term s(x,...,bs="re",)
. For the predict.Matrix
method
an object of class "random.effect"
produced by the smoo
by
variable) required by this term,
with names corresponding to object$term
(and object$by
). The by
variable
is the last element."random.effect"
or a matrix mapping the coefficients of the random effect to the random effects themselves.s(x,z,bs="re")
. This will result in the model matrix component corresponding to ~x:z-1
being added to the model matrix for the whole model. The coefficients associated with the model matrix
component are assumed i.i.d. normal, with unknown variance (to be estimated). This assumption is
equivalent to an identity penalty matrix (i.e. a ridge penalty) on the coefficients. Because such a
penalty is full rank, random effects terms do not require centering constraints. If the nature of the random effect specification is not clear, consider a couple more examples:
s(x,bs="re")
results in model.matrix(~x-1)
being appended to the overall model matrix,
while s(x,v,w,bs="re")
would result in model.matrix(~x:v:w-1)
being appended to the model
matrix. In both cases the corresponding model coefficients are assumed i.i.d. normal, and are hence
subject to ridge penalties.
Note that smooth id
s are not supported for random effect terms, and that "re"
terms are
not suitable for use as marginal smooths in a tensor product smooth.
Random effects implemented in this way do not exploit the sparse structure of many random effects, and
may therefore be relatively inefficient for models with large numbers of random effects, when gamm4
or gamm
may be better alternatives. Note also that gam
will not support
models with more coefficients than data.
gam.vcomp
, gamm