Skip to contents

Logistic_FARMM_Path finds the solution path of logistic functional additive regression with log-contrast constrain. It will NOT perform within-group orthonormalization as preprocession of the data.

Usage

Logistic_FARMM_Path(
  y_vec,
  x_mat,
  h,
  kn,
  p,
  rand_eff_df,
  p_type,
  p_param,
  lambda_seq,
  lambda_length,
  min_lambda_ratio = 0.01,
  mu2,
  a = 1,
  bj_vec = 1,
  cj_vec = sqrt(kn),
  rj_vec = 10^(-6),
  weight_vec = 1,
  logit_weight_vec = 1,
  weight_already_combine = FALSE,
  delta_init,
  eta_stack_init,
  mu1_init,
  tol = 10^(-6),
  max_iter = 500,
  verbose = 0,
  svd_thresh = 10^{
-7
 }
)

Arguments

y_vec

response vector, 0 for control, 1 for case. n = length(y_vec) is the number of observations.

x_mat

covariate matrix, consists of two parts. dim(x_mat) = (n, h + p * kn) First h columns are for demographical covariates(can include an intercept term) Rest columns are for p functional covariates, each being represented by a set of basis functions resulting kn covariates.

h, kn, p

dimension information for the dataset(x_mat).

rand_eff_df

data.frame of random effect related data. It must contain at least one column named "subj_vec_fct", which indicates the subject level. If this is the only column in rand_eff_df, then a constant random effect is applied. If there is other column(s), then they will all be additively added to the random effect as the slope term. The number of rows of rand_eff_df is the the same as length(y_vec).

p_type

an character variable indicating different types of the penalty

p_param

numerical vector for the penalty function. p_param[1] store sthe lambda value and will be provided by lambda_seq.

lambda_seq

a non-negative sequence of lambda, along which the solution path is searched. It is RECOMMENED to not supply this parameter and let the function itself determines it from the given data.

lambda_length

length of the lambda sequence when computing lambda_seq. If lambda_seq is provided, then of course lambda_length = length(lambda_seq).

mu2

quadratic term in the ADMM algorithm

a, bj_vec, cj_vec, rj_vec

parameters for the algorithm. See Algorithm_Details.pdf for more information.

weight_vec

weight vector for each subject. The final weight for each subject will be adjusted also by logit_weight_vec. And the summation of the final weight vector is normalized to n, the sample size.

logit_weight_vec

weight vector for each subject when computing the integral in the logit values. Each entry should be positive and no more than 1. This is a naive method for adjusting for early stop during the interval.

weight_already_combine

boolen, indicating whether the weight_vec is already combined with logit_weight_vec for each subject.

delta_init, eta_stack_init, mu1_init

initial values for the algorithm.

tol, max_iter

convergence tolerance and max number of iteration of the algorithm.

verbose

integer, indicating level of information to be printed during computation, currently supports: always: some info if something went wrong, e.g. when no penalty function is matched 1: information about the start and stop of the iteration 2. How the loss value is changed during each iteration

svd_thresh

not used

min_lam_ratio:

min(lambda_seq) / max{lambda_seq}. This function uses this parameter to determine the minimal value of lambda_seq. If p > n, then it is recommended to set this no smaller than 0.01 (sometimes even 0.05), otherwise you can set it to 0.001 or even smaller.

Value

A list containing the solution path of delta, eta_stack, mu1 and some computation information such as convergency, iteration number and the lambda sequence of this solution path.