# [R] help on pspline in coxph

Terry Therneau therneau at mayo.edu
Thu Apr 7 15:44:37 CEST 2011

```> Hi there,

> I have a question on how to extract the linear term in the penalized
> spline in coxph. Here is a sample code:

Here is a slightly more general example:
fit <- coxph(Surv(time, status) ~ ph.ecog + pspline(age) + sex, lung)
(The lung data set is part of the survival package.)
There are 14 coefficients, of which 2-13 are the for the spline.

The slope logic is subtle. Luckily I left comments on this in the source
code for pspline, because I remember it taking a long time for me to
figure it out.
slope = (X'VX)^{-1} X'V c
A weighted regression on the coefficients where c= spline coefficients =
fit\$coef[2:13] in this case, V= fit\$var[2:13,2:13], and X is a two
column matrix with column 1=1 (intercept) and column 2 = centers of the
pspline basis functions.  These centers are saved away in the print
function:
get("cbase", environment(fit\$printfun[]))
If there were multiple psline terms in the fit use [], [] etc as
appropriate.  No, you won't find this without reading the source code.

Note that this is the linear slope from a fit with only a linear term,
i.e., what would have resulted from a fit with "age" instead of
pspline(age).  I thought it quite interesting that this quantity could
be derived at all.  I leave the details as a homework exercise for the