trans_alasso {transmdl} | R Documentation |
Adaptive LASSO for Semiparametric Transformation Models.
Description
Select the important variables in semiparametric transformation models for right censored data using adaptive lasso.
Usage
trans_alasso(Z, Y, delta_i, r, lamb_vec, solu = TRUE)
Arguments
Z |
the baseline covariates |
Y |
observed event times |
delta_i |
censoring indicator. If |
r |
parameter in transformation function |
lamb_vec |
the grad of the tuning parameter |
solu |
determines whether the solution path will be plotted. The default is TRUE. |
Details
The initial value of the coefficient \beta
used as the adapting
weights is EM estimator, which is computed by the function EM_est
.
The tuning parameter \lambda
is data-dependent and we select it using
generalized crossvalidation. There may be some errors for small
\lambda
, in which case the \lambda
and the number of adaptive
lasso iteration are recorded in the skip_para
.
Value
a list containing
beta_res | the estimated \beta with the selected tuning parameter \lambda |
||
GCV_res | the value of GCV with the selected tuning parameter \lambda |
||
lamb_res | the selected tuning parameter \lambda |
||
beta_all | estimated \beta with all tuning parameters |
||
CSV_all | value of GCV with all tuning parameters | ||
skip_para | a list containing the \lambda and the number of adaptive lasso iteration when adaptive lasso doesn't work. |
||
References
Xiaoxi, L. , & Donglin, Z. . (2013). Variable selection in semiparametric transformation models for right-censored data. Biometrika(4), 859-876.
Examples
if(!requireNamespace("MASS", quietly = TRUE))
{stop("package MASS needed for this example. Please install it.")}
gen_lasdat = function(n,r,rho,beta_true,a,b,seed=66,std = FALSE)
{
set.seed(seed)
beta_len = length(beta_true)
beta_len = beta_len
sigm = matrix(0, nrow = beta_len, ncol = beta_len)
for(i in 1:(beta_len-1))
{
diag(sigm[1:(beta_len+1-i),i:beta_len]) = rho^(i-1)
}
sigm[1,beta_len] = rho^(beta_len-1)
sigm[lower.tri(sigm)] = t(sigm)[lower.tri(sigm)]
Z = MASS::mvrnorm(n, mu = rep(0, beta_len), Sigma = sigm)
beta_Z.true = c(Z %*% beta_true)
U = runif(n)
if(r>0)
{
t = ((U^(-r)-1)/(a*r*exp(beta_Z.true)))^(1/b)
}else if(r == 0)
{
t = (-log(U)/(a*exp(beta_Z.true)))^(1/b)
#t = (exp(-log(U)/(0.5 * exp(beta_Z.true))) - 1)
}
C = runif(n,0,8)
Y = pmin(C,t)
delta_i = ifelse( C >= t, 1, 0)
if(std)
{
Z = apply(Z,2,normalize)
}
return(list(Z = Z, Y = Y, delta_i = delta_i,censor = mean(1-delta_i)))
}
now_rep=1
dat = gen_lasdat(100,1,0.5,c(0.3,0.5,0.7,0,0,0,0,0,0,0),2,5,seed= 6+60*now_rep,std = FALSE)
Z = dat$Z
Y = dat$Y
delta_i = dat$delta_i
tra_ala = trans_alasso(Z,Y,delta_i,lamb_vec = c(5,7),r=1)
tra_ala$GCV_res
tra_ala$beta_res
tra_ala$lamb_res