Hi, I'm using natural cubic splines from splines::ns() in survival regression (regressing inter-arrival times of patients to a queue on queue size). The queue size fluctuates between 3600 and 3900. I would like to be able to run predict.survreg() for sizes <3600 and >3900 by assuming that the rate for <3600 is the same as for 3600 and that for >4000 it's the same as for 4000 (i.e., keep the splines cubic within the boundaries but make them constant outside the boundaries). (By default, natural splines will be linear outside the boundaries, which is very bad here because the predictions grow without bound. Setting the boundary knots to extreme values such as (0, 10000) doesn't help, because there are no intermediate knots to constrain the spline and you get a very large cubic curve between these boundaries and the observed sizes.) Any suggestions? Thanks, Gad -- Gad Abraham Department of Mathematics and Statistics The University of Melbourne Parkville 3010, Victoria, Australia email: g.abraham at ms.unimelb.edu.au web: http://www.ms.unimelb.edu.au/~gabraham
Gad Abraham <g.abraham <at> ms.unimelb.edu.au> writes:> > Hi, > > I'm using natural cubic splines from splines::ns() in survival > regression (regressing inter-arrival times of patients to a queue on > queue size). The queue size fluctuates between 3600 and 3900. > > I would like to be able to run predict.survreg() for sizes <3600 and > >3900 by assuming that the rate for <3600 is the same as for 3600 and > that for >4000 it's the same as for 4000 (i.e., keep the splines cubic > within the boundaries but make them constant outside the boundaries). >[snip]> Any suggestions?Here is one.> range(ovarian$age)[1] 38.8932 74.5041> trim <- function(x) pmin(74.5041 ,pmax(38.8932 , x)) > s <- survreg(Surv(futime, fustat) ~ ns(age, knots=c(50,60),Boundary.knots=c(38.8932, 74.5041)),data=ovarian)> s2 <- survreg(Surv(futime, fustat) ~ ns(trim(age), knots=c(50,60),Boundary.knots=c(38.8932, 74.5041)),data=ovarian)> matplot(newage, cbind(predict(s,newdata=newage),predict(s2,newdata=newage))) >HTH, Chuck> > Thanks, > Gad >