RaJIVE (Robust Angle based Joint and Individual Variation Explained) is a robust alternative to the aJIVE method 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 with respect to outliers and other types of noises present in the data.
You can install the released version of RaJIVE from CRAN with:
install.packages("RaJIVE")
And the development version from GitHub with:
# install.packages("devtools")
::install_github("ericaponzi/RaJIVE") devtools
This is a basic example which shows how to use RaJIVE on simple simulated data:
library(RaJIVE)
## basic example code
<- 50
n <- c(100, 80, 50)
pks <- ajive.data.sim(K =3, rankJ = 3, rankA = c(7, 6, 4), n = n,
Y pks = pks, dist.type = 1)
<- c(7, 6, 4)
initial_signal_ranks <- list((Y$sim_data[[1]]), (Y$sim_data[[2]]), (Y$sim_data[[3]]))
data.ajive <- Rajive(data.ajive, initial_signal_ranks) ajive.results.robust
The function returns a list containing the aJIVE decomposition, with the joint component (shared across data sources), individual component (data source specific) and residual component for each data source.
get_joint_rank(ajive.results.robust)
#> [1] 3
get_individual_rank(ajive.results.robust, 1)
#> [1] 5
get_individual_rank(ajive.results.robust, 2)
#> [1] 3
get_individual_rank(ajive.results.robust, 3)
#> [1] 1
decomposition_heatmaps_robustH(data.ajive, ajive.results.robust)
showVarExplained_robust(ajive.results.robust, data.ajive)
#> $Joint
#> [1] 0.3148569 0.3349692 0.4197429
#>
#> $Indiv
#> [1] 0.5499653 0.4156423 0.1522468
#>
#> $Resid
#> [1] 0.1351778 0.2493886 0.4280103