Learn R Programming

MVOPR (version 2.0.0)

MVOPR3: Multi-View Orthogonal Projection Regression for three modalities

Description

Fit Multi-View Orthogonal Projection Regression for three modalities with Lasso, MCP, SCAD. The function is capable for linear, logistic, and poisson regression.

Usage

MVOPR3(
  M1,
  M2,
  M3,
  Y,
  RRR_Control = list(Sparsity = TRUE, nrank = 10, ic.type = "GIC"),
  family = "gaussian",
  penalty = "lasso"
)

Value

A list containing:

fitY

A fitted object from `cv.ncvreg`, containing the penalized regression results for `Y`.

fitM2

The fitted reduced-rank regression (`sofar` or `rrr` object) for `M2` given `M1`.

fitM3

The fitted reduced-rank regression (`sofar` or `rrr` object) for `M3` given `M1` and `M2`.

CoefY

A vector of estimated regression coefficients for `Y`.

coefM2

A matrix of estimated regression coefficients for `M2` given `M1`.

coefM3

A matrix of estimated regression coefficients for `M3` given `M1` and `M2`.

rank1

An integer indicating the estimated rank of the reduced-rank regression for `M2`.

rank2

An integer indicating the estimated rank of the reduced-rank regression for `M3`.

P1

A projection matrix used to extract the orthogonal components of `M1`.

P2

A projection matrix used to extract the orthogonal components of `E2`, which is the error term in the regression for `M2` given `M1`.

M1s

A transformed version of `M1` after projection.

M2s

A transformed version of `M2` after removing the effect of `M1` and projecting to the orthogonal space.

M3s

A transformed version of `M3` after removing the effects of `M1` and `M2`.

#' @references Dai, Z., Huang, Y. J., & Li, G. (2025). Multi-View Orthogonal Projection Regression with Application in Multi-omics Integration. arXiv preprint arXiv:2503.16807. Available at <https://arxiv.org/abs/2503.16807>

Arguments

M1

A numeric matrix (n x p1) for the first modality.

M2

A numeric matrix (n x p2) for the second modality. Assumes `M2` is correlated to `M1` via a low-rank matrix.

M3

A numeric matrix (n x p3) for the third modality. Assumes `M3` is correlated to `M1` and `M2` via a low-rank matrix.

Y

A numeric response vector of length `n`, connected to `M1`, `M2`, and `M3`.

RRR_Control

A list to control the fitting for reduced rank regression.

Sparsity

Logical. If `TRUE`, performs Sparse Orthogonal Factor Regression (SOFAR); otherwise, a reduced-rank regression model is fitted.

nrank

Integer. Maximum rank to be searched for the reduced-rank model.

ic.type

Character. Model selection criterion: `"AIC"`, `"BIC"`, or `"GIC"`.

family

Either "gaussian", "binomial", or "poisson", depending on the response.

penalty

The penalty to be applied in the outcome model Y to M1 and M2. Either "MCP" (the default), "SCAD", or "lasso".

Examples

Run this code

## Simulation: three modalities
p1 = 50; p2 = 50; p3 = 50; n = 200
rank = 2

beta = c(rep(c(rep(1,5),rep(0,45)),3))
M1 = matrix(rnorm(p1*n),n,p1)

U1 = matrix(rnorm(rank*p1),p1,rank)
V1 = matrix(runif(rank*p2,-0.1,0.1),rank,p2)
B1 = U1 %*% V1

U2 = matrix(rnorm(rank*p1),p1,rank)
V2 = matrix(runif(rank*p2,-0.1,0.1),rank,p3)
B2 = U2 %*% V2

U3 = matrix(rnorm(rank*p2),p2,rank)
V3 = matrix(runif(rank*p2,-0.1,0.1),rank,p3)
B3 = U3 %*% V3

E1 = matrix(rnorm(p2*n),n,p2)
E2 = matrix(rnorm(p3*n),n,p3)

M2 = M1 %*% B1 + E1
M3 = M1 %*% B2 + M2 %*% B3 + E2
Y = cbind(M1,M2,M3) %*% matrix(beta,p1+p2+p3,1)

## Fit MVOPR with Lasso
Fit1 = MVOPR3(M1,M2,M3,Y,RRR_Control = list(Sparsity = FALSE),penalty = 'lasso')

## Fit MVOPR with MCP
Fit2 = MVOPR3(M1,M2,M3,Y,RRR_Control = list(Sparsity = FALSE),penalty = 'MCP')

## Fit MVOPR with SCAD
Fit3 = MVOPR3(M1,M2,M3,Y,RRR_Control = list(Sparsity = FALSE),penalty = 'SCAD')

## Compare the variable selection between Lasso, MCP, SCAD
print(data.frame(Lasso = Fit1$CoefY[2:151],MCP = Fit2$CoefY[2:151],SCAD = Fit3$CoefY[2:151],beta))

Run the code above in your browser using DataLab