optimCoxBoostPenalty {CoxBoost} | R Documentation |
This routine helps in finding a penalty value that leads to an ``optimal'' number of boosting steps for CoxBoost, determined by cross-validation, that is not too small/in a specified range.
optimCoxBoostPenalty(time,status,x,minstepno=50,maxstepno=200, start.penalty=500,iter.max=10,upper.margin=0.05, trace=FALSE,...)
time |
vector of length n specifying the observed times. |
status |
censoring indicator, i.e., vector of length n with entries 0 for censored observations and 1 for uncensored observations. |
x |
n * p matrix of covariates. |
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 maxstepno which is used as an upper margin in which a cross-validation minimum is not taken to be one. This is necessary because of random fluctuations of cross-validated partial log-likelihood. |
trace |
logical value indicating whether information on progress should be printed. |
... |
miscellaneous parameters for cv.CoxBoost . |
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 cross-validation, is larger or equal to 50. With a smaller number of steps, boosting may become too ``greedy'' and show sub-optimal 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@fdm.uni-freiburg.de.
Tutz, G. and Binder, H. (2006) Generalized additive modelling with implicit variable selection by likelihood based boosting. Biometrics, 62:961-971.
## Not run: # Generate some survival data with 10 informative covariates n <- 200; p <- 100 beta <- c(rep(1,10),rep(0,p-10)) 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 cross-validation 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)