bridge_aft.Rdbridge_aft fits an accelerated failure time (AFT) model using an iterative reweighted LASSO scheme to approximate a bridge (\(L_\gamma\)) penalty on the regression coefficients.
bridge_aft(y, X, gamma = 0.5, alpha = 1, max_iter = 100, tol = 1e-05)Predictor matrix. Can be a base matrix or something as.matrix() can coerce. No missing values are allowed.
Bridge penalty exponent \(\gamma\) (default 0.5). Values in \((0,1]\) approximate nonconvex penalties; \(\gamma=1\) reduces to LASSO-like weighting.
Elastic-net mixing parameter passed to glmnet::cv.glmnet (default 1 for LASSO; 0 is ridge; (0,1) is elastic net).
A list with components:
Numeric vector of estimated coefficients of length \(p\).
The bridge exponent used in the fit.
Number of outer reweighting iterations performed.
Jian Huang and Shuangge Ma. Variable selection in the accelerated failure time model via the bridge method. Lifetime Data Analysis, 16(2):176-195, 2010.
set.seed(1)
n <- 50
p <- 10
X <- matrix(rnorm(n * p), n, p)
beta_true <- c(runif(10, -1.5, 1.5), rep(0, p - 10))
linpred <- as.vector(X %*% beta_true)
## Generate log-normal AFT survival times (no censoring in this simple example)
sigma <- 0.6
logT <- linpred + rnorm(n, sd = sigma)
time <- exp(logT)
delta <- rep(1, n) # all events (censoring ignored by current implementation)
y_surv <- list(time = time, status = delta)
fit <- bridge_aft(y_surv, X, gamma = 0.5, alpha = 1, max_iter = 50, tol = 1e-5)
str(fit)
#> List of 3
#> $ beta : num [1:10] 0.00 4.77e-07 -7.21e-07 5.56e+05 -6.74e+01 ...
#> $ gamma : num 0.5
#> $ iterations: int 50
fit$beta[1:10]
#> [1] 0.000000e+00 4.774684e-07 -7.211057e-07 5.555622e+05 -6.737057e+01
#> [6] -1.759694e+05 0.000000e+00 2.790805e-08 1.239355e-04 9.026533e-07