This routine helps in finding a penalty value that leads to an “optimal” number of boosting steps for CoxBoost, determined by crossvalidation, that is not too small/in a specified range.
1 2 3 4 
time 
vector of length 
status 
censoring indicator, i.e., vector of length 
x 

minstepno, maxstepno 
range of boosting steps in which the “optimal” number of boosting steps is wanted to be. 
start.penalty 
start value for the search for the appropriate penalty. 
iter.max 
maximum number of search iterations. 
upper.margin 
specifies the fraction of 
parallel 
logical value indicating whether computations in the crossvalidation folds should be performed in parallel on a compute cluster. Parallelization is performed via the package 
trace 
logical value indicating whether information on progress should be printed. 
... 
miscellaneous parameters for 
The penalty parameter for CoxBoost
has to be chosen only very coarsely. In Tutz and Binder (2006) it is suggested for likelihood based boosting just to make sure, that the optimal number of boosting steps, according to some criterion such as crossvalidation, is larger or equal to 50. With a smaller number of steps, boosting may become too “greedy” and show suboptimal performance. This procedure uses a very coarse line search and so one should specify a rather large range of boosting steps.
List with element penalty
containing the “optimal” penalty and cv.res
containing the corresponding result of cv.CoxBoost
.
Written by Harald Binder binderh@unimainz.de.
Tutz, G. and Binder, H. (2006) Generalized additive modelling with implicit variable selection by likelihood based boosting. Biometrics, 62:961971.
CoxBoost
, cv.CoxBoost
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25  ## Not run:
# Generate some survival data with 10 informative covariates
n < 200; p < 100
beta < c(rep(1,10),rep(0,p10))
x < matrix(rnorm(n*p),n,p)
real.time < (log(runif(n)))/(10*exp(drop(x %*% beta)))
cens.time < rexp(n,rate=1/10)
status < ifelse(real.time <= cens.time,1,0)
obs.time < ifelse(real.time <= cens.time,real.time,cens.time)
# determine penalty parameter
optim.res < optimCoxBoostPenalty(time=obs.time,status=status,x=x,
trace=TRUE,start.penalty=500)
# Fit with obtained penalty parameter and optimal number of boosting
# steps obtained by crossvalidation
cbfit < CoxBoost(time=obs.time,status=status,x=x,
stepno=optim.res$cv.res$optimal.step,
penalty=optim.res$penalty)
summary(cbfit)
## End(Not run)

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.
All documentation is copyright its authors; we didn't write any of that.