Last chance! 50% off unlimited learning
Sale ends in
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.rms
, summary.rms
, Predict
,
survplot
, fastbw
, validate
, specs
,
which.influence
, nomogram
and latex.rms
use these
attributes to automate certain analyses (e.g., automatic tests of linearity
for each predictor are done by anova.rms
). 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, the
presence of system option rcspc
causes rcspline.eval
to be
invoked with pc=TRUE
, and the presence of system option fractied
causes this value to be passed to rcspline.eval
as the fractied
argument), 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(...)
matrx(...)
pol(...)
lsp(...)
rcs(...)
catg(...)
scored(...)
strat(...)
x1 %ia% x2
rcspline.eval
, rcspline.restate
, rms
, cph
, lrm
, ols
, datadist
options(knots=4, poly.degree=2)
# To get the old behavior of rcspline.eval knot placement (which didnt' handle
# clumping at the lowest or highest value of the predictor very well):
# options(fractied = 1.0) # see rcspline.eval for details
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 an rms 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
Run the code above in your browser using DataLab