How to create a combined AUROC plot

Hi, I have a multi-omics dataset where I would like to plot the AUROCs for each dataset run by itself and for the combination of the datasets in one figure just like the one attached here. How can I do this in mixomics?
Thank you for such a great tool!
Best wishes,
Stef
Screenshot 2022-09-16 at 14.14.14

If using a supervised model, multiple lines will be plotted corresponding to each class in the response variable:

suppressMessages(library(mixOmics))
data(breast.TCGA)

X.train <- breast.TCGA$data.train$mirna
Y.train <- as.vector(breast.TCGA$data.train$subtype)

X.test <- breast.TCGA$data.train$mirna
Y.test <- as.vector(breast.TCGA$data.train$subtype)

MyResult.splsda.final <- splsda(X.train, Y.train)
auroc(MyResult.splsda.final)

Created on 2022-09-20 with reprex v2.0.2

There isn’t currently a way to plot multiple models on the auroc() plot. I’ll have a look today to see if this can be easily and quickly implemented for you

Hej Max,
Yes, I have been able to make a plot similar to the one you posted. But I typically have only 2 groups, thus one graph and it would be fantastic to be able to plot und thus be able to compare visually several models.
Thank you very much! :pray:
/Stef

G’day Stepra.

Yesterday arvo and this morning I’ve put together a build for you which allows for the combination of AUROC plots. You can see the functionality below:

suppressMessages(devtools::load_all("D:/My Files/Work/mixOmics/mixOmics"))
data(breast.TCGA)
X <- list(miRNA = breast.TCGA$data.train$mirna,
          mRNA = breast.TCGA$data.train$mrna,
          proteomics = breast.TCGA$data.train$protein)
Y <- breast.TCGA$data.train$subtype

model1 <- splsda(X$miRNA, Y, ncomp=3)
model2 <- splsda(X$mRNA, Y, ncomp=3)
model3 <- splsda(X$proteomics, Y, ncomp=3)

models <- list(miRNA.Model=model1,
               mRNA.Model=model2,
               proteomics.Model=model3) 

auroc.out <- auroc(models, print = F, plot=T, roc.comp = 1)


auroc.out <- auroc(models, print = F, plot=T, roc.comp = 3)

Created on 2022-09-23 with reprex v2.0.2

Session info
sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.2.1 (2022-06-23 ucrt)
#>  os       Windows 10 x64 (build 19044)
#>  system   x86_64, mingw32
#>  ui       RTerm
#>  language (EN)
#>  collate  English_United States.utf8
#>  ctype    English_United States.utf8
#>  tz       Australia/Sydney
#>  date     2022-09-23
#>  pandoc   2.18 @ D:/Programs/Work Programs/RStudio/bin/quarto/bin/tools/ (via rmarkdown)
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  !  package      * version  date (UTC) lib source
#>     assertthat     0.2.1    2019-03-21 [1] CRAN (R 4.2.1)
#>     BiocParallel   1.30.3   2022-06-07 [1] Bioconductor
#>     brio           1.1.3    2021-11-30 [1] CRAN (R 4.2.1)
#>     cachem         1.0.6    2021-08-19 [1] CRAN (R 4.2.1)
#>     callr          3.7.2    2022-08-22 [1] CRAN (R 4.2.1)
#>     cli            3.3.0    2022-04-25 [1] CRAN (R 4.2.1)
#>     codetools      0.2-18   2020-11-04 [1] CRAN (R 4.2.1)
#>     colorspace     2.0-3    2022-02-21 [1] CRAN (R 4.2.1)
#>     corpcor        1.6.10   2021-09-16 [1] CRAN (R 4.2.0)
#>     crayon         1.5.1    2022-03-26 [1] CRAN (R 4.2.1)
#>     curl           4.3.2    2021-06-23 [1] CRAN (R 4.2.1)
#>     DBI            1.1.3    2022-06-18 [1] CRAN (R 4.2.1)
#>     desc           1.4.2    2022-09-08 [1] CRAN (R 4.2.1)
#>     devtools       2.4.4    2022-07-20 [1] CRAN (R 4.2.1)
#>     digest         0.6.29   2021-12-01 [1] CRAN (R 4.2.1)
#>     dplyr          1.0.9    2022-04-28 [1] CRAN (R 4.2.1)
#>     ellipse        0.4.3    2022-05-31 [1] CRAN (R 4.2.1)
#>     ellipsis       0.3.2    2021-04-29 [1] CRAN (R 4.2.1)
#>     evaluate       0.16     2022-08-09 [1] CRAN (R 4.2.1)
#>     fansi          1.0.3    2022-03-24 [1] CRAN (R 4.2.1)
#>     farver         2.1.1    2022-07-06 [1] CRAN (R 4.2.1)
#>     fastmap        1.1.0    2021-01-25 [1] CRAN (R 4.2.1)
#>     fs             1.5.2    2021-12-08 [1] CRAN (R 4.2.1)
#>     generics       0.1.3    2022-07-05 [1] CRAN (R 4.2.1)
#>     ggplot2      * 3.3.6    2022-05-03 [1] CRAN (R 4.2.1)
#>     ggrepel        0.9.1    2021-01-15 [1] CRAN (R 4.2.1)
#>     glue           1.6.2    2022-02-24 [1] CRAN (R 4.2.1)
#>     gridExtra      2.3      2017-09-09 [1] CRAN (R 4.2.1)
#>     gtable         0.3.1    2022-09-01 [1] CRAN (R 4.2.1)
#>     highr          0.9      2021-04-16 [1] CRAN (R 4.2.1)
#>     htmltools      0.5.3    2022-07-18 [1] CRAN (R 4.2.1)
#>     htmlwidgets    1.5.4    2021-09-08 [1] CRAN (R 4.2.1)
#>     httpuv         1.6.5    2022-01-05 [1] CRAN (R 4.2.1)
#>     httr           1.4.4    2022-08-17 [1] CRAN (R 4.2.1)
#>     igraph         1.3.4    2022-07-19 [1] CRAN (R 4.2.1)
#>     knitr          1.40     2022-08-24 [1] CRAN (R 4.2.1)
#>     later          1.3.0    2021-08-18 [1] CRAN (R 4.2.1)
#>     lattice      * 0.20-45  2021-09-22 [1] CRAN (R 4.2.1)
#>     lifecycle      1.0.2    2022-09-09 [1] CRAN (R 4.2.1)
#>     magrittr       2.0.3    2022-03-30 [1] CRAN (R 4.2.1)
#>     MASS         * 7.3-58.1 2022-08-03 [1] CRAN (R 4.2.1)
#>     Matrix         1.4-1    2022-03-23 [1] CRAN (R 4.2.1)
#>     matrixStats    0.62.0   2022-04-19 [1] CRAN (R 4.2.1)
#>     memoise        2.0.1    2021-11-26 [1] CRAN (R 4.2.1)
#>     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.1)
#>  VP mixOmics     * 6.21.0   2022-04-26 [?] Bioconductor (R 4.2.0) (on disk 6.20.0)
#>     munsell        0.5.0    2018-06-12 [1] CRAN (R 4.2.1)
#>     pillar         1.8.1    2022-08-19 [1] CRAN (R 4.2.1)
#>     pkgbuild       1.3.1    2021-12-20 [1] CRAN (R 4.2.1)
#>     pkgconfig      2.0.3    2019-09-22 [1] CRAN (R 4.2.1)
#>     pkgload        1.3.0    2022-06-27 [1] CRAN (R 4.2.1)
#>     plyr           1.8.7    2022-03-24 [1] CRAN (R 4.2.1)
#>     prettyunits    1.1.1    2020-01-24 [1] CRAN (R 4.2.1)
#>     processx       3.7.0    2022-07-07 [1] CRAN (R 4.2.1)
#>     profvis        0.3.7    2020-11-02 [1] CRAN (R 4.2.1)
#>     promises       1.2.0.1  2021-02-11 [1] CRAN (R 4.2.1)
#>     ps             1.7.1    2022-06-18 [1] CRAN (R 4.2.1)
#>     purrr          0.3.4    2020-04-17 [1] CRAN (R 4.2.1)
#>     R.cache        0.16.0   2022-07-21 [1] CRAN (R 4.2.1)
#>     R.methodsS3    1.8.2    2022-06-13 [1] CRAN (R 4.2.0)
#>     R.oo           1.25.0   2022-06-12 [1] CRAN (R 4.2.0)
#>     R.utils        2.12.0   2022-06-28 [1] CRAN (R 4.2.1)
#>     R6             2.5.1    2021-08-19 [1] CRAN (R 4.2.1)
#>     rARPACK        0.11-0   2016-03-10 [1] CRAN (R 4.2.1)
#>     RColorBrewer   1.1-3    2022-04-03 [1] CRAN (R 4.2.0)
#>     Rcpp           1.0.9    2022-07-08 [1] CRAN (R 4.2.1)
#>     remotes        2.4.2    2021-11-30 [1] CRAN (R 4.2.1)
#>     reprex         2.0.2    2022-08-17 [1] CRAN (R 4.2.1)
#>     reshape2       1.4.4    2020-04-09 [1] CRAN (R 4.2.1)
#>     rlang          1.0.5    2022-08-31 [1] CRAN (R 4.2.1)
#>     rmarkdown      2.16     2022-08-24 [1] CRAN (R 4.2.1)
#>     rprojroot      2.0.3    2022-04-02 [1] CRAN (R 4.2.1)
#>     RSpectra       0.16-1   2022-04-24 [1] CRAN (R 4.2.1)
#>     rstudioapi     0.14     2022-08-22 [1] CRAN (R 4.2.1)
#>     scales         1.2.1    2022-08-20 [1] CRAN (R 4.2.1)
#>     sessioninfo    1.2.2    2021-12-06 [1] CRAN (R 4.2.1)
#>     shiny          1.7.2    2022-07-19 [1] CRAN (R 4.2.1)
#>     stringi        1.7.8    2022-07-11 [1] CRAN (R 4.2.1)
#>     stringr        1.4.1    2022-08-20 [1] CRAN (R 4.2.1)
#>     styler         1.7.0    2022-03-13 [1] CRAN (R 4.2.1)
#>     testthat     * 3.1.4    2022-04-26 [1] CRAN (R 4.2.1)
#>     tibble         3.1.8    2022-07-22 [1] CRAN (R 4.2.1)
#>     tidyr          1.2.0    2022-02-01 [1] CRAN (R 4.2.1)
#>     tidyselect     1.1.2    2022-02-21 [1] CRAN (R 4.2.1)
#>     urlchecker     1.0.1    2021-11-30 [1] CRAN (R 4.2.1)
#>     usethis        2.1.6    2022-05-25 [1] CRAN (R 4.2.1)
#>     utf8           1.2.2    2021-07-24 [1] CRAN (R 4.2.1)
#>     vctrs          0.4.1    2022-04-13 [1] CRAN (R 4.2.1)
#>     withr          2.5.0    2022-03-03 [1] CRAN (R 4.2.1)
#>     xfun           0.32     2022-08-10 [1] CRAN (R 4.2.1)
#>     xml2           1.3.3    2021-11-30 [1] CRAN (R 4.2.1)
#>     xtable         1.8-4    2019-04-21 [1] CRAN (R 4.2.1)
#>     yaml           2.3.5    2022-02-21 [1] CRAN (R 4.2.0)
#> 
#>  [1] D:/Programs/Work Programs/R-4.2.1/library
#> 
#>  V ── Loaded and on-disk version mismatch.
#>  P ── Loaded and on-disk path mismatch.
#> 
#> ──────────────────────────────────────────────────────────────────────────────

As this is not yet deployed, feel free to install this branch from the Github using the following steps:

  1. Navigate to the R directory on your computer. Ensure the folder is titled like β€œR-X.X.X” (in my case, R-4.2.1). This can be found using the following command in RStudio:
> file.path(R.home())
[1] "D:/Programs/Work Programs/R-4.2.1"
  1. Go into this folder, then to library and look for mixOmics. Select the mixOmics folder and delete it.

  2. Load the devtools package (ensure you have it installed):

install.packages("devtools")
library(devtools)
  1. Download the package on the β€œissue-242” branch or via the specific pull request:
install_github("mixOmicsTeam/mixOmics",
               ref = github_pull("243")) 
               
# OR

install_github("mixOmicsTeam/mixOmics", 
               branch = "issue-242") 
  1. Load the mixOmics library, and voilΓ !
library(mixOmics)

Thank you, @MaxBladen! This looks awesome! I will try it!
/Stef

Hej @MaxBladen. The code works very well! I have 4 models I want to compare and overlay all with one outcome and several curves are similar. Please, see figure below. How can I draw the curves in different colors instead?
Thanks a lot for your help!
/Stef

hi @stepra

Glad to know it is working. @MaxBladen has left the team now.
Looking at the auroc() function, we have β€˜β€¦β€™ arguments stating external optional arguments for plotting - line.col for custom colors and legend.title for custom legend title which means that you could either try β€˜col=’ or any ggplot2 argument for color. It may work, it may not!

Kim-Anh

Thank you for the advice! Unfortunately, I could not get it to work.
/Stef

hi @stepra,

Ah that is a shame, I will be in the process of training a new maintainer, but it may take up to end of October to actually give you a code. If you have any R specialist around you, they will be able to help.

Kim-Anh

1 Like