Learn R Programming

SIS (version 0.4)

scadcox: SCAD regularized loglikelihood for Cox proportional hazards regression models

Description

These functions solve SCAD regularized loglikelihood for Cox proportional hazards regression models; scadcox does the one-step SCAD while fullscadcox solves the SCAD in a fully iterative method.

Usage

scadcox(x, time, status,  method="efron", wt.initsoln=NULL, lambda, 
    initsoln=NULL, weight = NULL, function.precision=1e-10,
    nopenalty.subset=NULL)
    
fullscadcox(x, time, status,  method="efron", lambda, 
    initsoln=NULL, weight = NULL, function.precision=1e-10,
    nopenalty.subset=NULL, eps0=1e-5, maxloop=10)

Arguments

x
an (n * p) matrix of features.
time
an (n) vector of the follow up time for right censored data.
status
an (n) vector of the status indicator, normally 0=alive, 1=dead.
method
indicates how to handle observations that have tied (i.e., identical) survival times. The default "efron" method is generally preferred to the once-popular "breslow" method.
wt.initsoln
a (p) vector of initial solution for one-step SCAD.
lambda
the regularization parameter.
initsoln
a (p) vector of initial solution.
weight
an optional (n) vector of weights to be used in the fitting process.
function.precision
function.precision parameter used in the internal solver. Default is 1e-10.
nopenalty.subset
a set of indices for the predictors that are not subject to the L1 penalty.
eps0
an effecitve zero.
maxloop
the maximum number of loops for the SCAD iteration.

Value

  • They return a (p) vector of estimated coefficients.

References

Jianqing Fan and Runze Li (2002) Variable Selection for Cox's Proportional Hazards Model and Frailty Model. The Annals of Statistics, 30, 74-99. Hui Zou and Runze Li (2008) One-step Sparse Estimates in Nonconcave Penalized Likelihood Models (with discussion). The Annals of Statistics, 36, 1509-1533

See Also

wtlassocox

Examples

Run this code
set.seed(0)
n=400
p=1000
truerho=0.5
beta <- c(4,4,4,-6*sqrt(2),4/3, rep(0,p-5))

corrmat=diag(rep(1-truerho, p))+matrix(truerho, p, p)
corrmat[,4]=sqrt(truerho)
corrmat[4, ]=sqrt(truerho)
corrmat[4,4]=1
corrmat[,5]=0
corrmat[5,]=0
corrmat[5,5]=1
cholmat=chol(corrmat)

x=matrix(rnorm(p*n, mean=0, sd=1), n, p)
x=x%*%cholmat

myrates <- exp(x%*%beta)

ytrue <- rexp(n, rate = myrates) 
cen <- rexp(n, rate = 0.1 )
time <- pmin(ytrue, cen)
status <- as.numeric(ytrue <= cen)

w1 <- scadcox(x[,1:100],time,status,lambda=0.003)
w2 <- coxph(Surv(time,status)~x[,1:100])$coef

Run the code above in your browser using DataLab