| Title: | Robust Angle Based Joint and Individual Variation Explained | 
| Version: | 1.0 | 
| Description: | A robust alternative to the aJIVE (angle based Joint and Individual Variation Explained) method (Feng et al 2018: <doi:10.1016/j.jmva.2018.03.008>) for the estimation of joint and individual components in the presence of outliers in multi-source data. It decomposes the multi-source data into joint, individual and residual (noise) contributions. The decomposition is robust to outliers and noise in the data. The method is illustrated in Ponzi et al (2021) <doi:10.48550/arXiv.2101.09110>. | 
| License: | MIT + file LICENSE | 
| Encoding: | UTF-8 | 
| Depends: | R (≥ 3.1.0) | 
| Suggests: | knitr, rmarkdown, testthat (≥ 2.1.0), cowplot, reshape2, dplyr | 
| Imports: | ggplot2, doParallel, foreach | 
| RoxygenNote: | 7.1.1 | 
| NeedsCompilation: | no | 
| Packaged: | 2021-01-28 12:53:49 UTC; ericapo | 
| Author: | Erica Ponzi [aut, cre], Abhik Ghosh [aut] | 
| Maintainer: | Erica Ponzi <erica.ponzi@medisin.uio.no> | 
| Repository: | CRAN | 
| Date/Publication: | 2021-02-04 15:20:05 UTC | 
Robust Angle based Joint and Individual Variation Explained
Description
Computes the robust aJIVE decomposition with parallel computation.
Usage
Rajive(
  blocks,
  initial_signal_ranks,
  full = TRUE,
  n_wedin_samples = 1000,
  n_rand_dir_samples = 1000,
  joint_rank = NA
)
Arguments
blocks | 
 List. A list of the data matrices.  | 
initial_signal_ranks | 
 Vector. The initial signal rank estimates.  | 
full | 
 Boolean. Whether or not to store the full J, I, E matrices or just their SVDs (set to FALSE to save memory).  | 
n_wedin_samples | 
 Integer. Number of wedin bound samples to draw for each data matrix.  | 
n_rand_dir_samples | 
 Integer. Number of random direction bound samples to draw.  | 
joint_rank | 
 Integer or NA. User specified joint_rank. If NA will be estimated from data.  | 
Value
The aJIVE decomposition.
Examples
n <- 50
pks <- c(100, 80, 50)
Y <- ajive.data.sim(K =3, rankJ = 3, rankA = c(7, 6, 4), n = n,
                   pks = pks, dist.type = 1)
initial_signal_ranks <-  c(7, 6, 4)
data.ajive <- list((Y$sim_data[[1]]), (Y$sim_data[[2]]), (Y$sim_data[[3]]))
ajive.results.robust <- Rajive(data.ajive, initial_signal_ranks)
Computes the robust SVD of a matrix
Description
Computes the robust SVD of a matrix
Usage
RobRSVD.all(data, nrank = min(dim(data)), svdinit = svd(data))
Arguments
data | 
 Matrix. X matrix.  | 
nrank | 
 Integer. Rank of SVD decomposition  | 
svdinit | 
 List. The standard SVD.  | 
Value
List. The SVD of X.
Simulation of data blocks
Description
Simulates blocks of data with joint and individual structures
Usage
ajive.data.sim(
  K = 3,
  rankJ = 2,
  rankA = c(20, 15, 10),
  n = 100,
  pks,
  dist.type = 1,
  noise = 1
)
Arguments
K | 
 Integer. Number of data blocks.  | 
rankJ | 
 Integer. Joint rank.  | 
rankA | 
 Vector of Integers. Individual Ranks.  | 
n | 
 Integer. Number of data points.  | 
pks | 
 Vector of Integers. Number of variables in each block.  | 
dist.type | 
 Integer. 1 for normal, 2 for uniform, 3 for exponential  | 
noise | 
 Integer. Standard deviation in dist  | 
Value
Xsim a list of simulated data matrices and true rank values
Examples
n <- 20
p1 <- 10
p2 <- 8
p3 <- 5
JrankTrue <- 2
initial_signal_ranks <- c(5, 2, 2)
 Y <- ajive.data.sim(K =3, rankJ = JrankTrue,
 rankA = initial_signal_ranks,n = n,
 pks = c(p1, p2, p3), dist.type = 1)
Decomposition Heatmaps
Description
Visualization of the RaJIVE decomposition, it shows heatmaps of the decomposition obtained by RaJIVE
Usage
data_heatmap(data, show_color_bar = TRUE, title = "", xlab = "", ylab = "")
Arguments
data | 
 List. The initial data blocks.  | 
show_color_bar | 
 Boolean.  | 
title | 
 Character.  | 
xlab | 
 Character.  | 
ylab | 
 Character  | 
Decomposition Heatmaps
Description
Visualization of the RaJIVE decomposition, it shows heatmaps of the decomposition obtained by RaJIVE
Usage
decomposition_heatmaps_robustH(blocks, jive_results_robust)
Arguments
blocks | 
 List. The initial data blocks.  | 
jive_results_robust | 
 List. The RaJIVE decomposition.  | 
Value
The heatmap of the decomposition
Examples
n <- 10
pks <- c(20, 10)
Y <- ajive.data.sim(K =2, rankJ = 2, rankA = c(7, 4), n = n,
                 pks = pks, dist.type = 1)
initial_signal_ranks <-  c(7, 4)
data.ajive <- list((Y$sim_data[[1]]), (Y$sim_data[[2]]))
ajive.results.robust <- Rajive(data.ajive, initial_signal_ranks)
decomposition_heatmaps_robustH(data.ajive, ajive.results.robust)
Block Loadings
Description
Gets the block loadings from the Rajive decomposition
Usage
get_block_loadings(ajive_output, k, type)
Arguments
ajive_output | 
 List. The decomposition from Rajive  | 
k | 
 Integer. The index of the data block  | 
type | 
 Character. Joint or individual  | 
Value
The block loadings
Examples
n <- 10
pks <- c(20, 10)
Y <- ajive.data.sim(K =2, rankJ = 2, rankA = c(7, 4), n = n,
                 pks = pks, dist.type = 1)
initial_signal_ranks <-  c(7, 4)
data.ajive <- list((Y$sim_data[[1]]), (Y$sim_data[[2]]))
ajive.results.robust <- Rajive(data.ajive, initial_signal_ranks)
get_block_loadings(ajive.results.robust, 2, 'joint')
Block Scores
Description
Gets the block scores from the Rajive decomposition
Usage
get_block_scores(ajive_output, k, type)
Arguments
ajive_output | 
 List. The decomposition from Rajive  | 
k | 
 Integer. The index of the data block  | 
type | 
 Character. Joint or individual  | 
Value
The block scores
Examples
n <- 10
pks <- c(20, 10)
Y <- ajive.data.sim(K =2, rankJ = 2, rankA = c(7, 4), n = n,
                 pks = pks, dist.type = 1)
initial_signal_ranks <-  c(7, 4)
data.ajive <- list((Y$sim_data[[1]]), (Y$sim_data[[2]]))
ajive.results.robust <- Rajive(data.ajive, initial_signal_ranks)
get_block_scores(ajive.results.robust, 2, 'joint')
Computes the final JIVE decomposition.
Description
Computes X = J + I + E for a single data block and the respective SVDs.
Usage
get_final_decomposition_robustH(X, joint_scores, sv_threshold, full = TRUE)
Arguments
X | 
 Matrix. The original data matrix.  | 
joint_scores | 
 Matrix. The basis of the joint space (dimension n x joint_rank).  | 
sv_threshold | 
 Numeric vector. The singular value thresholds from the initial signal rank estimates.  | 
full | 
 Boolean. Do we compute the full J, I matrices or just svd  | 
Computes the individual matrix for a data block.
Description
Computes the individual matrix for a data block.
Usage
get_individual_decomposition_robustH(
  X,
  joint_scores,
  sv_threshold,
  full = TRUE
)
Arguments
X | 
 Matrix. The original data matrix.  | 
joint_scores | 
 Matrix. The basis of the joint space (dimension n x joint_rank).  | 
sv_threshold | 
 Numeric vector. The singular value thresholds from the initial signal rank estimates.  | 
full | 
 Boolean. Do we compute the full J, I matrices or just the SVD (set to FALSE to save memory).  | 
Individual Rank
Description
Gets the individual ranks from the Rajive decomposition
Usage
get_individual_rank(ajive_output, k)
Arguments
ajive_output | 
 List. The decomposition from Rajive  | 
k | 
 Integer. The index of the data block.  | 
Value
The individual ranks
Examples
n <- 10
pks <- c(20, 10)
Y <- ajive.data.sim(K =2, rankJ = 2, rankA = c(7, 4), n = n,
                 pks = pks, dist.type = 1)
initial_signal_ranks <-  c(7, 4)
data.ajive <- list((Y$sim_data[[1]]), (Y$sim_data[[2]]))
ajive.results.robust <- Rajive(data.ajive, initial_signal_ranks)
get_individual_rank(ajive.results.robust, 2)
Computes the individual matrix for a data block
Description
Computes the individual matrix for a data block
Usage
get_joint_decomposition_robustH(X, joint_scores, full = TRUE)
Arguments
X | 
 Matrix. The original data matrix.  | 
joint_scores | 
 Matrix. The basis of the joint space (dimension n x joint_rank).  | 
full | 
 Boolean. Do we compute the full J, I matrices or just the SVD (set to FALSE to save memory).  | 
Joint Rank
Description
Gets the joint rank from the Rajive decomposition
Usage
get_joint_rank(ajive_output)
Arguments
ajive_output | 
 List. The decomposition from Rajive  | 
Value
The joint rank
Examples
 
n <- 10
pks <- c(20, 10)
Y <- ajive.data.sim(K =2, rankJ = 2, rankA = c(7, 4), n = n,
                 pks = pks, dist.type = 1)
initial_signal_ranks <-  c(7, 4)
data.ajive <- list((Y$sim_data[[1]]), (Y$sim_data[[2]]))
ajive.results.robust <- Rajive(data.ajive, initial_signal_ranks)
get_joint_rank(ajive.results.robust)
Computes the joint scores.
Description
Estimate the joint rank with the wedin bound, compute the signal scores SVD, double check each joint component.
Usage
get_joint_scores_robustH(
  blocks,
  block_svd,
  initial_signal_ranks,
  sv_thresholds,
  n_wedin_samples = 1000,
  n_rand_dir_samples = 1000,
  joint_rank = NA
)
Arguments
blocks | 
 List. A list of the data matrices.  | 
block_svd | 
 List. The SVD of the data blocks.  | 
initial_signal_ranks | 
 Numeric vector. Initial signal ranks estimates.  | 
sv_thresholds | 
 Numeric vector. The singular value thresholds from the initial signal rank estimates.  | 
n_wedin_samples | 
 Integer. Number of wedin bound samples to draw for each data matrix.  | 
n_rand_dir_samples | 
 Integer. Number of random direction bound samples to draw.  | 
joint_rank | 
 Integer or NA. User specified joint_rank. If NA will be estimated from data.  | 
Estimate the wedin bound for a data matrix.
Description
Samples from the random direction bound. Returns on the scale of squared singular value.
Usage
get_random_direction_bound_robustH(n_obs, dims, num_samples = 1000)
Arguments
n_obs | 
 The number of observations.  | 
dims | 
 The number of features in each data matrix  | 
num_samples | 
 Integer. Number of vectors selected for resampling procedure.  | 
Value
rand_dir_samples
The singular value threshold.
Description
Computes the singular value threshold for the data matrix (half way between the rank and rank + 1 singluar value).
Usage
get_sv_threshold(singular_values, rank)
Arguments
singular_values | 
 Numeric. The singular values.  | 
rank | 
 Integer. The rank of the approximation.  | 
Computes the robust SVD of a matrix Using robRsvd
Description
Computes the robust SVD of a matrix Using robRsvd
Usage
get_svd_robustH(X, rank = NULL)
Arguments
X | 
 Matrix. X matrix.  | 
rank | 
 Integer. Rank of SVD decomposition  | 
Value
List. The SVD of X.
Gets the wedin bounds
Description
Gets the wedin bounds
Usage
get_wedin_bound_samples(X, SVD, signal_rank, num_samples = 1000)
Arguments
X | 
 Matrix. The data matrix.  | 
SVD | 
 List. The SVD decomposition of the matrix. List with entries 'u', 'd', and 'v'from the svd function.  | 
signal_rank | 
 Integer.  | 
num_samples | 
 Integer. Number of vectors selected for resampling procedure.  | 
Proportions of variance explained
Description
Gets the variance explained by each component of the Rajive decomposition
Usage
showVarExplained_robust(ajiveResults, blocks)
Arguments
ajiveResults | 
 List. The decomposition from Rajive  | 
blocks | 
 List. The initial data blocks  | 
Value
The proportion of variance explained by each component
Examples
n <- 10
pks <- c(20, 10)
Y <- ajive.data.sim(K =2, rankJ = 2, rankA = c(7, 4), n = n,
                 pks = pks, dist.type = 1)
initial_signal_ranks <-  c(7, 4)
data.ajive <- list((Y$sim_data[[1]]), (Y$sim_data[[2]]))
ajive.results.robust <- Rajive(data.ajive, initial_signal_ranks)
showVarExplained_robust(ajive.results.robust, data.ajive)
Simulation of single data block from distribution
Description
Simulation of single data block from distribution
Usage
sim_dist(num, n, p)
Arguments
num | 
 Integer. Type of distribution. 1 for normal, 2 for uniform, 3 for exponential  | 
n | 
 Integer. Number of data points.  | 
p | 
 Integers. Number of variables in block.  | 
Reconstruces the original matrix from its robust SVD.
Description
Computes UDV^T to get the approximate (or full) X matrix.
Usage
svd_reconstruction(decomposition)
Arguments
decomposition | 
 List. List with entries 'u', 'd', and 'v'from the svd function.  | 
Value
Matrix. The original matrix.
Truncates a robust SVD.
Description
Removes columns from the U, D, V matrix computed form an SVD.
Usage
truncate_svd(decomposition, rank)
Arguments
decomposition | 
 List. List with entries 'u', 'd', and 'v'from the svd function.  | 
rank | 
 List. List with entries 'u', 'd', and 'v'from the svd function.  | 
Value
The trucated robust SVD of X.
Resampling procedure for the wedin bound
Description
Resampling procedure for the wedin bound
Usage
wedin_bound_resampling(X, perp_basis, right_vectors, num_samples = 1000)
Arguments
X | 
 Matrix. The data matrix.  | 
perp_basis | 
 Matrix. Either U_perp or V_perp: the remaining left/right singluar vectors of X after estimating the signal rank.  | 
right_vectors | 
 Boolean. Right multiplication or left multiplication.  | 
num_samples | 
 Integer. Number of vectors selected for resampling procedure.  |