asis
,
pol
,
lsp
,
rcs
,
catg
,
scored
,
strat
,
matrx
, and
%ia%
) that set up special attributes
(such as
knots and nonlinear term indicators) that are carried through to fits
(using for example
lrm
,
cph
,
ols
,
psm
).
anova.Design
,
summary.Design
,
plot.Design
,
survplot
,
fastbw
,
validate
,
specs
,
which.influence
,
nomogram.Design
and
latex.Design
use these
attributes to automate certain analyses (e.g., automatic tests of linearity
for each predictor are done by
anova.Design
). Many of the functions
are called implicitly. Some S functions such as
ns
derive data-dependent
transformations that are not "remembered" when predicted values are
later computed, so the predictions will be incorrect. The functions listed
here solve that problem.
asis
is the identity transformation,
pol
is an ordinary (non-orthogonal) polynomial,
rcs
is
a linear tail-restricted cubic spline function (natural spline, for which the
rcspline.eval
function generates the design matrix),
catg
is for a categorical
variable,
scored
is for an ordered categorical
variable,
strat
is for a stratification factor
in a Cox model,
matrx
is for a matrix predictor, and
%ia%
represents
restricted interactions in which products involving nonlinear effects on both
variables are not included in the model.
asis, catg, scored, matrx
are seldom invoked
explicitly by the user (only to specify
label
or
name
, usually).
In the list below, functions
asis
through
strat
can have
arguments
x, parms, label, name
except that
parms
does not
apply to
asis, matrx, strat
.
asis(x, parms, label, name) matrx(x, label, name) pol(x, parms, label, name) lsp(x, parms, label, name) rcs(x, parms, label, name) catg(x, parms, label, name) scored(x, parms, label, name) strat(x, label, name) %ia%(x1, x2)
pol(pmin(age,10),3)
, a cubic polynomial will be fitted in
pmin(age,10)
(
pmin
is the S vector element–by–element function).
The predictor will be labeled
age
in the output, and plots with have
age
in its original units on the axes. If you use a function such as
pmin
, the predictor is taken as the first argument, and other arguments
must be defined in the frame in effect when predicted values, etc., are
computed.
pol
the argument is the order of the polynomial,
e.g.
2
for quadratic (the usual default). For
lsp
it is a
vector of knot locations (
lsp
will not estimate knot locations).
For
rcs
it is the
number of knots (if scalar), or vector of knot locations (if
>2
elements).
The default number is the
nknots
system option if
parms
is not given.
If the number of knots is given,
locations are computed for that number of knots.
For
catg
,
parms
is the
category labels (not needed if variable is an S category or factor variable). If
omitted,
catg
will use
unique(x)
, or
levels(x)
if
x
is a
category
or a
factor
.
For
scored
,
parms
is a
vector of unique values of variable (uses
unique(x)
by default).
This is not needed if
x
is an S
ordered
variable.
For
strat
,
parms
is the category labels (not needed if variable is an S category variable). If
omitted, will use
unique(x)
, or
levels(x)
if
x
is
category
or
factor
.
parms
is not used for
matrix
.
"label"
attribute or variable
name)
Frank Harrell
Department of Biostatistics, Vanderbilt University
f.harrell@vanderbilt.edu
## Not run: options(knots=4, poly.degree=2) country <- factor(country.codes) blood.pressure <- cbind(sbp=systolic.bp, dbp=diastolic.bp) fit <- lrm(Y ~ sqrt(x1)*rcs(x2) + rcs(x3,c(5,10,15)) + lsp(x4,c(10,20)) + country + blood.pressure + poly(age,2)) # sqrt(x1) is an implicit asis variable, but limits of x1, not sqrt(x1) # are used for later plotting and effect estimation # x2 fitted with restricted cubic spline with 4 default knots # x3 fitted with r.c.s. with 3 specified knots # x4 fitted with linear spline with 2 specified knots # country is an implied catg variable # blood.pressure is an implied matrx variable # since poly is not a Design function (pol is), it creates a # matrx type variable with no automatic linearity testing # or plotting f1 <- lrm(y ~ rcs(x1) + rcs(x2) + rcs(x1) %ia% rcs(x2)) # %ia% restricts interactions. Here it removes terms nonlinear in # both x1 and x2 f2 <- lrm(y ~ rcs(x1) + rcs(x2) + x1 %ia% rcs(x2)) # interaction linear in x1 f3 <- lrm(y ~ rcs(x1) + rcs(x2) + x1 %ia% x2) # simple product interaction (doubly linear) # Use x1 %ia% x2 instead of x1:x2 because x1 %ia% x2 triggers # anova to pool x1*x2 term into x1 terms to test total effect # of x1 ## End(Not run)