o2m: Perform O2-PLS with two-way orthogonal corrections

Description Usage Arguments Details Value See Also Examples

View source: R/O2PLS_o2m.R

Description

NOTE THAT THIS FUNCTION DOES NOT CENTER NOR SCALES THE MATRICES! Any normalization you will have to do yourself. It is best practice to at least center the variables though.

Usage

1
2
o2m(X, Y, n, nx, ny, stripped = FALSE, p_thresh = 3000,
  q_thresh = p_thresh, tol = 1e-10, max_iterations = 100)

Arguments

X

Numeric matrix. Vectors will be coerced to matrix with as.matrix (if this is possible)

Y

Numeric matrix. Vectors will be coerced to matrix with as.matrix (if this is possible)

n

Integer. Number of joint PLS components. Must be positive!

nx

Integer. Number of orthogonal components in X. Negative values are interpreted as 0

ny

Integer. Number of orthogonal components in Y. Negative values are interpreted as 0

stripped

Logical. Use the stripped version of o2m (usually when cross-validating)?

p_thresh

Integer. If X has more than p_thresh columns, a power method optimization is used, see o2m2

q_thresh

Integer. If Y has more than q_thresh columns, a power method optimization is used, see o2m2

tol

double. Threshold for power method iteration

max_iterations

Integer, Maximum number of iterations for power method

Details

If both nx and ny are zero, o2m is equivalent to PLS2 with orthonormal loadings. This is a ‘slower’ (in terms of memory) implementation of O2PLS, and is using svd, use stripped=T for a stripped version with less output. If either ncol(X) > p_thresh or ncol(Y) > q_thresh, an alternative method is used (NIPALS) which does not store the entire covariance matrix. The squared error between iterands in the NIPALS approach can be adjusted with tol. The maximum number of iterations in the NIPALS approach is tuned by max_iterations.

Value

A list containing

Tt

Joint X scores

W.

Joint X loadings

U

Joint Y scores

C.

Joint Y loadings

E

Residuals in X

Ff

Residuals in Y

T_Yosc

Orthogonal X scores

P_Yosc.

Orthogonal X loadings

W_Yosc

Orthogonal X weights

U_Xosc

Orthogonal Y scores

P_Xosc.

Orthogonal Y loadings

C_Xosc

Orthogonal Y weights

B_U

Regression coefficient in Tt ~ U

B_T.

Regression coefficient in U ~ Tt

H_TU

Residuals in Tt in Tt ~ U

H_UT

Residuals in U in U ~ Tt

X_hat

Prediction of X with Y

Y_hat

Prediction of Y with X

R2X

Variation (measured with ssq) of the modeled part in X (defined by joint + orthogonal variation) as proportion of variation in X

R2Y

Variation (measured with ssq) of the modeled part in Y (defined by joint + orthogonal variation) as proportion of variation in Y

R2Xcorr

Variation (measured with ssq) of the joint part in X as proportion of variation in X

R2Ycorr

Variation (measured with ssq) of the joint part in Y as proportion of variation in Y

R2X_YO

Variation (measured with ssq) of the orthogonal part in X as proportion of variation in X

R2Y_XO

Variation (measured with ssq) of the orthogonal part in Y as proportion of variation in Y

R2Xhat

Variation (measured with ssq) of the predicted X as proportion of variation in X

R2Yhat

Variation (measured with ssq) of the predicted Y as proportion of variation in Y

See Also

ssq, summary.o2m, plot.o2m, crossval_o2m

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
test.data <- scale(matrix(rnorm(100)))
hist(replicate(1000,
         o2m(test.data,scale(matrix(rnorm(100))),1,0,0)$B_T.
     ),main='No joint variation',xlab='B_T',xlim=c(0,0.6));
hist(replicate(1000,
         o2m(test.data,scale(test.data+rnorm(100))/2,1,0,0)$B_T.
    ),main='B_T = 0.5 \n 25% joint variation',xlab='B_T',xlim=c(0,0.6));
hist(replicate(1000,
         o2m(test.data,scale(test.data+rnorm(100,0,0.1))/2,1,0,0)$B_T.
    ),main='B_T = 0.5 \n 90% joint variation',xlab='B_T',xlim=c(0,0.6));

selbouhaddani/O2PLS documentation built on May 29, 2019, 5:53 p.m.