rcspline.eval {Hmisc} | R Documentation |
Restricted Cubic Spline Design Matrix
Description
Computes matrix that expands a single variable into the terms needed
to fit a restricted cubic spline (natural spline) function using the
truncated power basis. Two normalization options are given for
somewhat reducing problems of ill-conditioning. The antiderivative
function can be optionally created. If knot locations are not given,
they will be estimated from the marginal distribution of x
.
Usage
rcspline.eval(x, knots, nk=5, inclx=FALSE, knots.only=FALSE,
type="ordinary", norm=2, rpm=NULL, pc=FALSE,
fractied=0.05)
Arguments
x |
a vector representing a predictor variable |
knots |
knot locations. If not given, knots will be estimated using default
quantiles of |
nk |
number of knots. Default is 5. The minimum value is 3. |
inclx |
set to |
knots.only |
return the estimated knot locations but not the expanded matrix |
type |
‘"ordinary"’ to fit the function, ‘"integral"’ to fit its anti-derivative. |
norm |
‘0’ to use the terms as originally given by Devlin and
Weeks (1986), ‘1’ to normalize non-linear terms by the cube
of the spacing between the last two knots, ‘2’ to normalize by
the square of the spacing between the first and last knots (the
default). |
rpm |
If given, any |
pc |
Set to |
fractied |
If the fraction of observations tied at the lowest and/or highest
values of |
Value
If knots.only=TRUE
, returns a vector of knot
locations. Otherwise returns a matrix with x
(if
inclx=TRUE
) followed by \code{nk}-2
nonlinear terms. The
matrix has an attribute knots
which is the vector of knots
used. When pc
is TRUE
, an additional attribute is
stored: pcparms
, which contains the center
and
scale
vectors and the rotation
matrix.
References
Devlin TF and Weeks BJ (1986): Spline functions for logistic regression modeling. Proc 11th Annual SAS Users Group Intnl Conf, p. 646–651. Cary NC: SAS Institute, Inc.
See Also
Examples
x <- 1:100
rcspline.eval(x, nk=4, inclx=TRUE)
#lrm.fit(rcspline.eval(age,nk=4,inclx=TRUE), death)
x <- 1:1000
attributes(rcspline.eval(x))
x <- c(rep(0, 744),rep(1,6), rep(2,4), rep(3,10),rep(4,2),rep(6,6),
rep(7,3),rep(8,2),rep(9,4),rep(10,2),rep(11,9),rep(12,10),rep(13,13),
rep(14,5),rep(15,5),rep(16,10),rep(17,6),rep(18,3),rep(19,11),rep(20,16),
rep(21,6),rep(22,16),rep(23,17), 24, rep(25,8), rep(26,6),rep(27,3),
rep(28,7),rep(29,9),rep(30,10),rep(31,4),rep(32,4),rep(33,6),rep(34,6),
rep(35,4), rep(36,5), rep(38,6), 39, 39, 40, 40, 40, 41, 43, 44, 45)
attributes(rcspline.eval(x, nk=3))
attributes(rcspline.eval(x, nk=5))
u <- c(rep(0,30), 1:4, rep(5,30))
attributes(rcspline.eval(u))