continuum.multigroup.iter {JICO} | R Documentation |
The Joint and Individual Component Regression (JICO) algorithm
Description
This function iteratively solves the multi-group regression problem using the JICO algorithm. JICO paper: Wang, P., Wang, H., Li, Q., Shen, D., & Liu, Y. (2022).
Usage
continuum.multigroup.iter(
X.list,
Y.list,
lambda = 0,
gam,
rankJ,
rankA,
maxiter = 1000,
conv = 1e-07,
center.X = TRUE,
scale.X = TRUE,
center.Y = TRUE,
scale.Y = TRUE,
orthIndiv = FALSE,
I.initial = NULL,
sd = 0
)
Arguments
X.list |
The list of feature matrices from multiple groups. |
Y.list |
The list of feature vectors from multiple groups. |
lambda |
Deprecated. Regularization parameter if L2 penalization is used for CR. JICO uses zero as default. |
gam |
The gamma parameter in the CR algorithm. Set gam=0 for OLS model, gam=0.5 for PLS model, gam >= 1e10 for PCR model. |
rankJ |
The rank for the joint component. |
rankA |
The ranks for individual components. |
maxiter |
The maximum number of iterations to conduct before algorithm convergence. |
conv |
The tolerance level for convergence. |
center.X |
Boolean. If X should be preprocessed with centralization. |
scale.X |
Boolean. If X should be preprocessed with scaling. |
center.Y |
Boolean. If Y should be preprocessed with centralization. |
scale.Y |
Boolean. If Y should be preprocessed with scaling. |
orthIndiv |
Boolean. If we impose the orthogonality constraint on individual components. |
I.initial |
The initial values for individual components. |
sd |
The standard deviation used to generate random initial values for individual weight vectors. |
Value
The estimated parameters from JICO.
Examples
set.seed(76)
X1 = MASS::mvrnorm(50, rep(0, 200), diag(200)) # covariates of the first group
X2 = MASS::mvrnorm(50, rep(0, 200), diag(200)) # covariates of the second group
X.list = list(X1, X2)
Y1 = matrix(stats::rnorm(50)) # responses for the first group
Y2 = matrix(stats::rnorm(50)) # responses for the second group
Y.list = list(Y1, Y2)
ml.JICO = continuum.multigroup.iter(
X.list, Y.list, gam=1e10, rankJ=1, rankA=c(1, 1),
maxiter = 300
)