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
)

[Package JICO version 0.0 Index]