This function is inspired by the tuning function of PMACCA. The code can be found in: tuning-c1-for-sgcca

1 Load library

library(RGCCA)
library(MASS)
library(tidyverse)
source("~/Dropbox (Personal)/project/mrf/code/others/sgcca_tune.R")

2 Simulation of a linear function

\[ \begin{aligned} X&=\sum^{p_l}_{j = 1} u_j w_1^{T}+\epsilon_1, \\ Y&=\sum^{p_l}_{j = 1} u_j w_2^{T}+\epsilon_2 \end{aligned} \]

sim.dat <- sim.linear2(n = 100, p = 200, psel = 30)$X

We selected the first 30 features us non-zero features.

3 Tuning function

tune.sgcca <- sgcca_tune(sim.dat, scheme = "centroid", nperms = 10)
print(tune.sgcca)
## $best_l1
## [1] 0.3707107
## 
## $cor
## [1] 0.9413736
## 
## $zs
##  [1] 4.509493 7.857243 7.525372 6.693648 6.153391 8.118610 7.906373 5.352481
##  [9] 4.000499 3.904107 4.991021 3.934371 4.349971 4.858852
## 
## $pval
##  [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0
sgcca.m <- sgcca(sim.dat, c1 = rep(tune.sgcca$best_l1))
get_corr(sgcca.m$Y, scheme = "centroid")
##           comp1
## comp1 0.9413736

Here we calculated the first canonical correlations with the tuned penalized parameter c1.

par(mfrow = c(1,2))
plot(sgcca.m$a$X1, ylab = "loading for X1", pch = 20, col = c(rep("red",30), rep("black",170)))
plot(sgcca.m$a$X2, ylab = "loading for X1", pch = 20, col = c(rep("red",30), rep("black",170)))

4 Without tuning c1

sgcca.m2 <- sgcca(sim.dat)
get_corr(sgcca.m2$Y, scheme = "centroid")
##           comp1
## comp1 0.9461632
par(mfrow = c(1,2))
plot(sgcca.m2$a$X1, ylab = "loading for X1", pch = 20, col = c(rep("red",30), rep("black",170)))
plot(sgcca.m2$a$X2, ylab = "loading for X1", pch = 20, col = c(rep("red",30), rep("black",170)))

5 Randomly choose c1

sgcca.m3 <- sgcca(sim.dat, c1 = c(0.3,0.5))
get_corr(sgcca.m3$Y, scheme = "centroid")
##           comp1
## comp1 0.9434877
par(mfrow = c(1,2))
plot(sgcca.m3$a$X1, ylab = "loading for X1", pch = 20, col = c(rep("red",30), rep("black",170)))
plot(sgcca.m3$a$X2, ylab = "loading for X1", pch = 20, col = c(rep("red",30), rep("black",170)))

6 Session Information

devtools::session_info()
## ─ Session info ───────────────────────────────────────────────────────────────
##  setting  value
##  version  R version 4.2.1 (2022-06-23)
##  os       macOS Big Sur ... 10.16
##  system   x86_64, darwin17.0
##  ui       X11
##  language (EN)
##  collate  en_US.UTF-8
##  ctype    en_US.UTF-8
##  tz       America/New_York
##  date     2022-11-20
##  pandoc   2.19.2 @ /Applications/RStudio.app/Contents/MacOS/quarto/bin/tools/ (via rmarkdown)
## 
## ─ Packages ───────────────────────────────────────────────────────────────────
##  package       * version  date (UTC) lib source
##  assertthat      0.2.1    2019-03-21 [1] CRAN (R 4.2.0)
##  backports       1.4.1    2021-12-13 [1] CRAN (R 4.2.0)
##  broom           1.0.1    2022-08-29 [1] CRAN (R 4.2.0)
##  bslib           0.4.1    2022-11-02 [1] CRAN (R 4.2.0)
##  cachem          1.0.6    2021-08-19 [1] CRAN (R 4.2.0)
##  callr           3.7.3    2022-11-02 [1] CRAN (R 4.2.0)
##  cellranger      1.1.0    2016-07-27 [1] CRAN (R 4.2.0)
##  cli             3.4.1    2022-09-23 [1] CRAN (R 4.2.0)
##  colorspace      2.0-3    2022-02-21 [1] CRAN (R 4.2.0)
##  crayon          1.5.2    2022-09-29 [1] CRAN (R 4.2.0)
##  DBI             1.1.3    2022-06-18 [1] CRAN (R 4.2.0)
##  dbplyr          2.2.1    2022-06-27 [1] CRAN (R 4.2.0)
##  devtools        2.4.5    2022-10-11 [1] CRAN (R 4.2.0)
##  digest          0.6.30   2022-10-18 [1] CRAN (R 4.2.0)
##  dplyr         * 1.0.10   2022-09-01 [1] CRAN (R 4.2.0)
##  ellipsis        0.3.2    2021-04-29 [1] CRAN (R 4.2.0)
##  evaluate        0.18     2022-11-07 [1] CRAN (R 4.2.1)
##  fansi           1.0.3    2022-03-24 [1] CRAN (R 4.2.0)
##  fastmap         1.1.0    2021-01-25 [1] CRAN (R 4.2.0)
##  forcats       * 0.5.2    2022-08-19 [1] CRAN (R 4.2.0)
##  fs              1.5.2    2021-12-08 [1] CRAN (R 4.2.0)
##  gargle          1.2.1    2022-09-08 [1] CRAN (R 4.2.0)
##  generics        0.1.3    2022-07-05 [1] CRAN (R 4.2.0)
##  ggplot2       * 3.4.0    2022-11-04 [1] CRAN (R 4.2.0)
##  glue            1.6.2    2022-02-24 [1] CRAN (R 4.2.0)
##  googledrive     2.0.0    2021-07-08 [1] CRAN (R 4.2.0)
##  googlesheets4   1.0.1    2022-08-13 [1] CRAN (R 4.2.0)
##  gtable          0.3.1    2022-09-01 [1] CRAN (R 4.2.0)
##  haven           2.5.1    2022-08-22 [1] CRAN (R 4.2.0)
##  highr           0.9      2021-04-16 [1] CRAN (R 4.2.0)
##  hms             1.1.2    2022-08-19 [1] CRAN (R 4.2.0)
##  htmltools       0.5.3    2022-07-18 [1] CRAN (R 4.2.0)
##  htmlwidgets     1.5.4    2021-09-08 [1] CRAN (R 4.2.0)
##  httpuv          1.6.6    2022-09-08 [1] CRAN (R 4.2.0)
##  httr            1.4.4    2022-08-17 [1] CRAN (R 4.2.0)
##  jquerylib       0.1.4    2021-04-26 [1] CRAN (R 4.2.0)
##  jsonlite        1.8.3    2022-10-21 [1] CRAN (R 4.2.0)
##  knitr           1.40     2022-08-24 [1] CRAN (R 4.2.0)
##  later           1.3.0    2021-08-18 [1] CRAN (R 4.2.0)
##  lifecycle       1.0.3    2022-10-07 [1] CRAN (R 4.2.0)
##  lubridate       1.9.0    2022-11-06 [1] CRAN (R 4.2.0)
##  magrittr        2.0.3    2022-03-30 [1] CRAN (R 4.2.0)
##  MASS          * 7.3-58.1 2022-08-03 [1] CRAN (R 4.2.0)
##  memoise         2.0.1    2021-11-26 [1] CRAN (R 4.2.0)
##  mime            0.12     2021-09-28 [1] CRAN (R 4.2.0)
##  miniUI          0.1.1.1  2018-05-18 [1] CRAN (R 4.2.0)
##  modelr          0.1.10   2022-11-11 [1] CRAN (R 4.2.0)
##  munsell         0.5.0    2018-06-12 [1] CRAN (R 4.2.0)
##  pillar          1.8.1    2022-08-19 [1] CRAN (R 4.2.0)
##  pkgbuild        1.3.1    2021-12-20 [1] CRAN (R 4.2.0)
##  pkgconfig       2.0.3    2019-09-22 [1] CRAN (R 4.2.0)
##  pkgload         1.3.2    2022-11-16 [1] CRAN (R 4.2.1)
##  prettyunits     1.1.1    2020-01-24 [1] CRAN (R 4.2.0)
##  processx        3.8.0    2022-10-26 [1] CRAN (R 4.2.0)
##  profvis         0.3.7    2020-11-02 [1] CRAN (R 4.2.0)
##  promises        1.2.0.1  2021-02-11 [1] CRAN (R 4.2.0)
##  ps              1.7.2    2022-10-26 [1] CRAN (R 4.2.0)
##  purrr         * 0.3.5    2022-10-06 [1] CRAN (R 4.2.0)
##  R6              2.5.1    2021-08-19 [1] CRAN (R 4.2.0)
##  Rcpp            1.0.9    2022-07-08 [1] CRAN (R 4.2.0)
##  readr         * 2.1.3    2022-10-01 [1] CRAN (R 4.2.0)
##  readxl          1.4.1    2022-08-17 [1] CRAN (R 4.2.0)
##  remotes         2.4.2    2021-11-30 [1] CRAN (R 4.2.0)
##  reprex          2.0.2    2022-08-17 [1] CRAN (R 4.2.0)
##  RGCCA         * 2.1.2    2017-05-11 [1] CRAN (R 4.2.0)
##  rlang           1.0.6    2022-09-24 [1] CRAN (R 4.2.0)
##  rmarkdown       2.18     2022-11-09 [1] CRAN (R 4.2.0)
##  rstudioapi      0.14     2022-08-22 [1] CRAN (R 4.2.0)
##  rvest           1.0.3    2022-08-19 [1] CRAN (R 4.2.0)
##  sass            0.4.2    2022-07-16 [1] CRAN (R 4.2.0)
##  scales          1.2.1    2022-08-20 [1] CRAN (R 4.2.0)
##  sessioninfo     1.2.2    2021-12-06 [1] CRAN (R 4.2.0)
##  shiny           1.7.3    2022-10-25 [1] CRAN (R 4.2.0)
##  stringi         1.7.8    2022-07-11 [1] CRAN (R 4.2.0)
##  stringr       * 1.4.1    2022-08-20 [1] CRAN (R 4.2.0)
##  tibble        * 3.1.8    2022-07-22 [1] CRAN (R 4.2.0)
##  tidyr         * 1.2.1    2022-09-08 [1] CRAN (R 4.2.0)
##  tidyselect      1.2.0    2022-10-10 [1] CRAN (R 4.2.0)
##  tidyverse     * 1.3.2    2022-07-18 [1] CRAN (R 4.2.0)
##  timechange      0.1.1    2022-11-04 [1] CRAN (R 4.2.0)
##  tzdb            0.3.0    2022-03-28 [1] CRAN (R 4.2.0)
##  urlchecker      1.0.1    2021-11-30 [1] CRAN (R 4.2.0)
##  usethis         2.1.6    2022-05-25 [1] CRAN (R 4.2.0)
##  utf8            1.2.2    2021-07-24 [1] CRAN (R 4.2.0)
##  vctrs           0.5.0    2022-10-22 [1] CRAN (R 4.2.0)
##  withr           2.5.0    2022-03-03 [1] CRAN (R 4.2.0)
##  xfun            0.34     2022-10-18 [1] CRAN (R 4.2.0)
##  xml2            1.3.3    2021-11-30 [1] CRAN (R 4.2.0)
##  xtable          1.8-4    2019-04-21 [1] CRAN (R 4.2.0)
##  yaml            2.3.6    2022-10-18 [1] CRAN (R 4.2.0)
## 
##  [1] /Library/Frameworks/R.framework/Versions/4.2/Resources/library
## 
## ──────────────────────────────────────────────────────────────────────────────