terms.object
Class of Objects for Terms in a Model
Description
Objects of class c("terms", "formula") contain a modelling
formula along with information gained by analyzing the formula.
Other modelling functions can then use this extra information instead
of analyzing the formula themselves.
Details
These objects are used by almost all formula-based model-fitting functions
and are returned as a component of the fitted object by the fitting
functions lm, etc.
They are mainly of interest to people writing new modelling functions,
not to users of modelling functions.
Generation
These objects are primarily generated by the terms function,
but other functions like delete.response take a terms object
and return a modified one and model.frame may add information
to a terms object before attaching it to a model.frame object.
(Functions that use a terms object should use the terms-specific
attributes, not the formula itself, as the functions that alter
a terms object may not alter the formula.)
Methods
Generic functions that have methods for "terms" objects include:
formula, labels.
Structure
The object is a
formula object with added attributes that
describe the formula.
The following attributes should be present in all terms objects.
variables
a call to the list function (not a list!) whose arguments are
expressions (generally names or calls) specifying the main
(non-interaction) effects in the model. If there is a response
term, it will be the the first argument in this call.
To get the n-th variable use as.list(variables)[[n+1]].
factors
a numeric matrix with a row for each variable and a column for
each expanded term (of the form v1:v2:...:vn)
showing which variables occur in which terms.
The entries are 0 if the variable does not occur in a term, 1 if it
appears and should be coded by contrasts, and 2 if it appears
and should be coded by dummy variables for all levels.
The row labels are character versions of the expressions
in the variables attribute and the column labels are identical
to the "term.labels" attribute.
term.labels
a character vector with an entry for each expanded term
in the formula for the form "v1:v2:...:vn" (indicating
it is the n-th order interaction between variables v1, v2, ..., vn).
order
an integer vector with an entry for each expanded term
giving the order of the terms (1 for main effects, 2 for
two-way interactions, etc.)
intercept
1 if there is an intercept, 0 otherwise.
response
the variable number corresponding to the response (the expression
on the left side of the formula) or 0 if there is no response in
the formula. In practice, it is either 1 or 0.
.Environment
Copied from the formula that the terms object was derived from,
it gives the environment in which the formula was created.
Names in the formula, hence in the variables attribute of
the terms object, should refer to objects in that environment or
its ancestral environments.
The following attributes may or may not be present in a terms object.
specials
A list which is only present when the specials argument to
the terms function is is used to name functions in the
formula to flag.
There will be one named entry in the list for each element of
specials and that entry will contain the indices of the
entries in the variables attribute that are calls to
that special function. If there are no such calls the entry
is set to NULL.
offset
A integer vector present only if there are calls to offset
in the formula. It there are, this gives the indices of the entries
in the variables attribute that are calls to offset.
predvars
This attribute is added by model.frame (via makepredictcall)
before it attaches the terms attribute to the data.frame
that it produces.
It is usually a copy of the variables attribute but if an
entry in that is a call to a function known to use data-dependent
default values it will add to the call explicit arguments specifying the values
of those default values based on the data argument to
model.frame. E.g., poly's argument coefs depends
on the range and norm of its main argument so those will be in the
calls in the predvars attribute. Prediction code should
use predvars instead of variables when evaluating
the calls with new data.
dataClasses
This attribute is added by model.frame (via .MFclass)
before it attaches the terms attribute to the data.frame
that it produces.
It gives a coded description of each entry in the variables attribute
so that prediction code can check (via .checkMFClasses)
that the variables in the newdata argument are compatible
with the data argument used to fit the model.
See Also
Examples
terms(Yield ~ Temp * Conc + Error(blocks), specials="Error")
Data <- data.frame(X1=sin(1:20),
X2=1:20,
X3=cos(1:20),
X4=rep(c("Small","Medium","Large"),c(6,6,8)))
terms(aov(X1 ~ poly(X2,2) + offset(0.1*X3) + X4, Data))