Adaptive Elastic-Net Model Selection for High-Dimensional Cox Models

Description

Automatic adaptive elastic-net model selection for high-dimensional Cox models, evaluated by penalized partial-likelihood.

Usage

1
2
3
hdcox.aenet(x, y, nfolds = 5L, alphas = seq(0.05, 0.95, 0.05),
  rule = c("lambda.min", "lambda.1se"), seed = c(1001, 1002),
  parallel = FALSE)

Arguments

x

Data matrix.

y

Response matrix made with Surv.

nfolds

Fold numbers of cross-validation.

alphas

Alphas to tune in cv.glmnet.

rule

Model selection criterion, "lambda.min" or "lambda.1se". See cv.glmnet for details.

seed

Two random seeds for cross-validation fold division in two estimation steps.

parallel

Logical. Enable parallel parameter tuning or not, default is FALSE. To enable parallel tuning, load the doParallel package and run registerDoParallel() with the number of CPU cores before calling this function.

Examples

 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
26
27
28
29
30
31
library("survival")
library("rms")

# Load imputed SMART data
data("smart")
x = as.matrix(smart[, -c(1, 2)])
time = smart$TEVENT
event = smart$EVENT
y = Surv(time, event)

# To enable parallel parameter tuning, first run:
# library("doParallel")
# registerDoParallel(detectCores())
# then set hdcox.aenet(..., parallel = TRUE).

# Fit Cox model by adaptive elastic-net penalization
aenetfit = hdcox.aenet(x, y, nfolds = 3, alphas = c(0.3, 0.7),
                       rule = "lambda.1se", seed = c(5, 7))

# Prepare data for hdnom.nomogram
x.df = as.data.frame(x)
dd = datadist(x.df)
options(datadist = "dd")

# Generate hdnom.nomogram objects and plot nomogram
nom = hdnom.nomogram(aenetfit$aenet_model, model.type = "aenet",
                     x, time, event, x.df,
                     lambda = aenetfit$aenet_best_lambda, pred.at = 365 * 2,
                     funlabel = "2-Year Overall Survival Probability")

plot(nom)

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.