RSAVS_Path | R Documentation |
This function carries out robust subgroup analysis and variable selection simultaneously. It utilizes the cpp core solver and supports different types of loss functions and penalties.
RSAVS_Path(
y_vec,
x_mat,
l_type = "L1",
l_param = NULL,
p1_type = "S",
p1_param = c(2, 3.7),
p2_type = "S",
p2_param = c(2, 3.7),
lam1_vec = NULL,
lam2_vec = NULL,
lam1_sort = TRUE,
lam2_sort = TRUE,
min_lam1_ratio = 0.03,
min_lam2_ratio = 0.03,
lam1_max_ncvguard = 100,
lam1_len = 50,
lam2_len = 40,
const_r123 = NULL,
const_abc = rep(1, 3),
initial_values = NULL,
phi = 1,
tol = 0.001,
max_iter = 10,
cd_max_iter = 1,
cd_tol = 0.001,
subgroup_benchmark = FALSE,
update_mu = NULL,
loss_track = FALSE,
diff_update = TRUE,
omp_zsw = c(1, 4, 1),
eigen_pnum = 4,
s_v2 = TRUE,
dry_run = FALSE
)
y_vec |
numerical vector of response. n = length(y_vec) is the number of observations. |
x_mat |
numerical matrix of covariates. Each row for one observation and
|
l_type |
character string, type of loss function.
Default value is "L1". |
l_param |
numeric vector containing necessary parameters of the corresponding loss function.
The default value is |
p1_type , p2_type |
a character indicating the penalty types for subgroup identification and variable selection.
Default values for both parameters are "S". |
p1_param , p2_param |
numerical vectors providing necessary parameters for the corresponding penalties.
Default values for both parameters are |
lam1_vec , lam2_vec |
numerical vectors of customized lambda vectors.
For |
lam1_sort , lam2_sort |
boolen, whether to force sorting the provided |
min_lam1_ratio , min_lam2_ratio |
the ratio between the minimal and maximal lambda, equals to (minimal lambda) / (maximal lambda). The default value is 0.03. |
lam1_max_ncvguard |
a safe guard constant for |
lam1_len , lam2_len |
integers, lengths of the auto-generated lambda vectors. |
const_r123 |
a length-3 numerical vector, providing the scalars needed in the augmented lagrangian part of the ADMM algorithm |
const_abc |
a length-3 numeric vector, providing the scalars to adjust weight
of regression function, penalty for subgroup identification and penalty for
variable selection in the overall objective function. Defaults to |
initial_values |
list of vector, providing initial values for the algorithm. |
phi |
numerical variable. A parameter needed for mBIC. |
tol |
numerical, convergence tolerance for the algorithm. |
max_iter |
integer, max number of iteration during the algorithm. |
cd_max_iter |
integer, max number of iteration during the coordinate descent
update of |
cd_tol |
numerical, convergence tolerance for the coordinate descent part
when updating |
subgroup_benchmark |
bool. Whether this call should be taken as a benchmark of subgroup identification.
If |
update_mu |
list of parameters for updating
Please refer to |
loss_track |
boolen, whether to track the value of objective function(loss value) during each iteration. |
diff_update |
boolen, whether to update the difference between each iteration. If set to |
omp_zsw |
a length-three integer vector, defaults to |
eigen_pnum |
integer number, representing the number of Eigen threads for matrix computation, defaults to 4. |
s_v2 |
boolen, whether to use the updated and faster version during the computation of
|
dry_run |
boolen, whether this is a so-called 'dry-run'. A dry-run will not carry out the real core solver, but only prepares and return the necessary initial values, additional values and solution plane for the core solver. |
RSAVS_Solver
, RSAVS_Path_PureR
, RSAVS_LargeN
# a toy example
# first we generate data
n <- 200 # number of observations
q <- 5 # number of active covariates
p <- 50 # number of total covariates
k <- 2 # number of subgroups
# k subgroup effect, centered at 0
group_center <- seq(from = 0, to = 2 * (k - 1), by = 2) - (k - 1)
# covariate effect vector
beta_true <- c(rep(1, q), rep(0, p - q))
# subgroup effect vector
alpha_true <- sample(group_center, size = n, replace = TRUE)
x_mat <- matrix(rnorm(n * p), nrow = n, ncol = p) # covariate matrix
err_vec <- rnorm(n, sd = 0.1) # error term
y_vec <- alpha_true + x_mat %*% beta_true + err_vec # response vector
# a simple analysis using default loss and penalties
res <- RSAVS_Path(y_vec = y_vec, x_mat = x_mat,
lam1_len = 50, lam2_len = 40,
phi = 5)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.