Compiled date: 2022-07-09

Last edited: 2021-12-12

License: GPL-3

Installation

Run the following code to install the Bioconductor version of package.

# install.packages("BiocManager")
BiocManager::install("POMA")

Load POMA

You can also load some additional packages that will be very useful in this vignette.

The POMA Workflow

POMA functions can be divided in three sequential well separated blocks: Data Preparation, Pre-processing and Statistical Analysis.

Data Preparation

The SummarizedExperiment Bioconductor package provides a well defined computational data structures to represent omics experiment data types (Morgan et al. 2020). Since data structures can mean a marked improvement in data analysis, POMA functions use SummarizedExperiment objects from SummarizedExperiment package, allowing the reusability of existing methods for this class and contributing to the improvement of robust and reproducible workflows.

The first step of workflow will be load or create a SummarizedExperiment object. Often, you will have your data stored in separated matrix and/or data frames and you will want to create your SummarizedExperiment object. The PomaSummarizedExperiment function makes this step fast and easy building this SummarizedExperiment object for you.

# create an SummarizedExperiment object from two separated data frames
target <- readr::read_csv("your_target.csv")
features <- readr::read_csv("your_features.csv")

data <- PomaSummarizedExperiment(target = target, features = features)

Alternatively, if your data is already stored in a SummarizedExperiment object, you can skip this step and go directly to the pre-processing step. In this vignette we will use the sample data provided in POMA.

# load example data
data("st000336")
st000336
> class: SummarizedExperiment 
> dim: 31 57 
> metadata(0):
> assays(1): ''
> rownames(31): x1_methylhistidine x3_methylhistidine ... pyruvate
>   succinate
> rowData names(0):
> colnames(57): DMD004.1.U02 DMD005.1.U02 ... DMD167.5.U02 DMD173.1.U02
> colData names(2): group steroids

Brief Description of Example Data

This example data is composed of 57 samples, 31 metabolites, 1 covariate and 2 experimental groups (Controls and DMD) from a targeted LC/MS study.

Duchenne Muscular Dystrophy (DMD) is an X-linked recessive form of muscular dystrophy that affects males via a mutation in the gene for the muscle protein, dystrophin. Progression of the disease results in severe muscle loss, ultimately leading to paralysis and death. Steroid therapy has been a commonly employed method for reducing the severity of symptoms. This study aims to quantify the urine levels of amino acids and organic acids in patients with DMD both with and without steroid treatment. Track the progression of DMD in patients who have provided multiple urine samples.

This data was collected from here.

Pre Processing

This is a critical point in the workflow because all final statistical results will depend on the decisions made here. Again, this block can be divided in 3 steps: Missing Value Imputation, Normalization and Outlier Detection.

Missing Value Imputation

Often, due to biological and technical reasons, some features can not be identified or quantified in some samples in MS (Armitage et al. 2015). POMA offers 7 different imputation methods to deal with this situation. Just run the following line of code to impute your missings!

imputed <- PomaImpute(st000336, ZerosAsNA = TRUE, RemoveNA = TRUE, cutoff = 20, method = "knn")
imputed
> class: SummarizedExperiment 
> dim: 30 57 
> metadata(0):
> assays(1): ''
> rownames(30): x1_methylhistidine x3_methylhistidine ... pyruvate
>   succinate
> rowData names(0):
> colnames(57): DMD004.1.U02 DMD005.1.U02 ... DMD167.5.U02 DMD173.1.U02
> colData names(2): group steroids

Normalization

The next step of this block is the data normalization. Often, some factors can introduce variability in some types of MS data having a critical influence on the final statistical results, making normalization a key step in the workflow (Berg et al. 2006). Again, POMA offers several methods to normalize the data by running just the following line of code:

normalized <- PomaNorm(imputed, method = "log_pareto")
normalized
> class: SummarizedExperiment 
> dim: 30 57 
> metadata(0):
> assays(1): ''
> rownames(30): x1_methylhistidine x3_methylhistidine ... pyruvate
>   succinate
> rowData names(0):
> colnames(57): DMD004.1.U02 DMD005.1.U02 ... DMD167.5.U02 DMD173.1.U02
> colData names(2): group steroids
Normalization effect

Sometimes, you will be interested in how the normalization process affect your data?

To answer this question, POMA offers two exploratory functions, PomaBoxplots and PomaDensity, that can help to understand the normalization process.

PomaBoxplots generates boxplots for all samples or features (depending on the group factor) of a SummarizedExperiment object. Here, we can compare objects before and after normalization step.

PomaBoxplots(imputed, group = "samples", jitter = FALSE) +
  ggtitle("Not Normalized") +
  theme(legend.position = "none") # data before normalization

PomaBoxplots(normalized, group = "samples", jitter = FALSE) +
  ggtitle("Normalized") # data after normalization

On the other hand, PomaDensity shows the distribution of all features before and after the normalization process.

PomaDensity(imputed, group = "features") +
  ggtitle("Not Normalized") +
  theme(legend.position = "none") # data before normalization

PomaDensity(normalized, group = "features") +
  ggtitle("Normalized") # data after normalization

Outlier Detection

Finally, the last step of this block is the Outlier Detection. Outlers are defined as observations that are not concordant with those of the vast majority of the remaining data points. These values can have an enormous influence on the resultant statistical analysis, being a dangerous ground for all required assumptions in the most commonly applied parametric tests in mass spectrometry as well as for all also required assumptions in many regression techniques and predictive modeling approaches. POMA allows the analysis of outliers as well as the possibility to remove them from the analysis using different modulable parameters.

Analyze and remove outliers running the following two lines of code.

PomaOutliers(normalized, do = "analyze")$polygon_plot # to explore

pre_processed <- PomaOutliers(normalized, do = "clean") # to remove outliers
pre_processed
> class: SummarizedExperiment 
> dim: 30 50 
> metadata(0):
> assays(1): ''
> rownames(30): x1_methylhistidine x3_methylhistidine ... pyruvate
>   succinate
> rowData names(0):
> colnames(50): DMD004.1.U02 DMD005.1.U02 ... DMD167.5.U02 DMD173.1.U02
> colData names(2): group steroids

Statistical Analysis

Once the data have been pre-processed, you can start with the statistical analysis step! POMA offers many different statistical methods and possible combinations to compute. However, in this vignette we will comment only some of the most used.

Univariate Analysis

POMA allows you to perform all of the most used univariate statistical methods in MS by using only one function! PomaUnivariate wrap 4 different univariate methods (ttest, ANOVA and ANCOVA, Wilcoxon test and Kruskal-Wallis Rank Sum Test) that you can perform changing only the “method” argument.

T-test
PomaUnivariate(pre_processed, method = "ttest")
> 
[38;5;246m# A tibble: 30 × 9
[39m
>    feature                FC diff_means  pvalue pvalueAdj mean_Controls mean_DMD
>    
[3m
[38;5;246m<chr>
[39m
[23m               
[3m
[38;5;246m<dbl>
[39m
[23m      
[3m
[38;5;246m<dbl>
[39m
[23m   
[3m
[38;5;246m<dbl>
[39m
[23m     
[3m
[38;5;246m<dbl>
[39m
[23m         
[3m
[38;5;246m<dbl>
[39m
[23m    
[3m
[38;5;246m<dbl>
[39m
[23m
> 
[38;5;250m 1
[39m x1_methylhistidine -
[31m0
[39m
[31m.
[39m
[31m401
[39m      0.563 9.30
[38;5;246me
[39m
[31m-8
[39m   3.10
[38;5;246me
[39m
[31m-7
[39m        -
[31m0
[39m
[31m.
[39m
[31m402
[39m   0.161 
> 
[38;5;250m 2
[39m x3_methylhistidine -
[31m0
[39m
[31m.
[39m
[31m46
[39m       0.613 7.82
[38;5;246me
[39m
[31m-3
[39m   9.03
[38;5;246me
[39m
[31m-3
[39m        -
[31m0
[39m
[31m.
[39m
[31m420
[39m   0.193 
> 
[38;5;250m 3
[39m alanine            -
[31m0
[39m
[31m.
[39m
[31m346
[39m      0.426 6.62
[38;5;246me
[39m
[31m-4
[39m   8.63
[38;5;246me
[39m
[31m-4
[39m        -
[31m0
[39m
[31m.
[39m
[31m317
[39m   0.109 
> 
[38;5;250m 4
[39m arginine           -
[31m0
[39m
[31m.
[39m
[31m558
[39m      0.179 4.80
[38;5;246me
[39m
[31m-1
[39m   4.80
[38;5;246me
[39m
[31m-1
[39m        -
[31m0
[39m
[31m.
[39m
[31m115
[39m   0.064
[4m1
[24m
> 
[38;5;250m 5
[39m asparagine         -
[31m0
[39m
[31m.
[39m
[31m367
[39m      0.475 1.28
[38;5;246me
[39m
[31m-5
[39m   2.40
[38;5;246me
[39m
[31m-5
[39m        -
[31m0
[39m
[31m.
[39m
[31m348
[39m   0.128 
> 
[38;5;250m 6
[39m aspartic_acid      -
[31m0
[39m
[31m.
[39m
[31m35
[39m       0.343 3.30
[38;5;246me
[39m
[31m-2
[39m   3.54
[38;5;246me
[39m
[31m-2
[39m        -
[31m0
[39m
[31m.
[39m
[31m254
[39m   0.088
[4m9
[24m
> 
[38;5;250m 7
[39m glutamic_acid      -
[31m0
[39m
[31m.
[39m
[31m274
[39m      0.587 1.15
[38;5;246me
[39m
[31m-4
[39m   1.82
[38;5;246me
[39m
[31m-4
[39m        -
[31m0
[39m
[31m.
[39m
[31m461
[39m   0.126 
> 
[38;5;250m 8
[39m glutamine          -
[31m0
[39m
[31m.
[39m
[31m477
[39m      0.438 5.72
[38;5;246me
[39m
[31m-4
[39m   7.80
[38;5;246me
[39m
[31m-4
[39m        -
[31m0
[39m
[31m.
[39m
[31m297
[39m   0.141 
> 
[38;5;250m 9
[39m glycine            -
[31m0
[39m
[31m.
[39m
[31m589
[39m      0.412 3.98
[38;5;246me
[39m
[31m-3
[39m   4.97
[38;5;246me
[39m
[31m-3
[39m        -
[31m0
[39m
[31m.
[39m
[31m259
[39m   0.153 
> 
[38;5;250m10
[39m histidine          -
[31m0
[39m
[31m.
[39m
[31m544
[39m      0.383 4.13
[38;5;246me
[39m
[31m-4
[39m   5.90
[38;5;246me
[39m
[31m-4
[39m        -
[31m0
[39m
[31m.
[39m
[31m248
[39m   0.135 
> 
[38;5;246m# … with 20 more rows, and 2 more variables: sd_Controls <dbl>, sd_DMD <dbl>
[39m

You can also compute a volcano plot using the T-test results. Note that we’re using the non-normalized object to avoid negative values in our data.

PomaVolcano(imputed, pval = "adjusted")

Wilcoxon Test
PomaUnivariate(pre_processed, method = "mann")
> 
[38;5;246m# A tibble: 30 × 9
[39m
>    feature                FC diff_means  pvalue pvalueAdj mean_Controls mean_DMD
>    
[3m
[38;5;246m<chr>
[39m
[23m               
[3m
[38;5;246m<dbl>
[39m
[23m      
[3m
[38;5;246m<dbl>
[39m
[23m   
[3m
[38;5;246m<dbl>
[39m
[23m     
[3m
[38;5;246m<dbl>
[39m
[23m         
[3m
[38;5;246m<dbl>
[39m
[23m    
[3m
[38;5;246m<dbl>
[39m
[23m
> 
[38;5;250m 1
[39m x1_methylhistidine -
[31m0
[39m
[31m.
[39m
[31m401
[39m      0.563 6.21
[38;5;246me
[39m
[31m-5
[39m  0.000
[4m1
[24m
[4m4
[24m
[4m3
[24m        -
[31m0
[39m
[31m.
[39m
[31m402
[39m   0.161 
> 
[38;5;250m 2
[39m x3_methylhistidine -
[31m0
[39m
[31m.
[39m
[31m46
[39m       0.613 9.99
[38;5;246me
[39m
[31m-3
[39m  0.011
[4m5
[24m          -
[31m0
[39m
[31m.
[39m
[31m420
[39m   0.193 
> 
[38;5;250m 3
[39m alanine            -
[31m0
[39m
[31m.
[39m
[31m346
[39m      0.426 2.15
[38;5;246me
[39m
[31m-4
[39m  0.000
[4m4
[24m
[4m0
[24m
[4m4
[24m        -
[31m0
[39m
[31m.
[39m
[31m317
[39m   0.109 
> 
[38;5;250m 4
[39m arginine           -
[31m0
[39m
[31m.
[39m
[31m558
[39m      0.179 1.40
[38;5;246me
[39m
[31m-1
[39m  0.145           -
[31m0
[39m
[31m.
[39m
[31m115
[39m   0.064
[4m1
[24m
> 
[38;5;250m 5
[39m asparagine         -
[31m0
[39m
[31m.
[39m
[31m367
[39m      0.475 2.47
[38;5;246me
[39m
[31m-4
[39m  0.000
[4m4
[24m
[4m3
[24m
[4m6
[24m        -
[31m0
[39m
[31m.
[39m
[31m348
[39m   0.128 
> 
[38;5;250m 6
[39m aspartic_acid      -
[31m0
[39m
[31m.
[39m
[31m35
[39m       0.343 5.71
[38;5;246me
[39m
[31m-3
[39m  0.006
[4m8
[24m
[4m5
[24m         -
[31m0
[39m
[31m.
[39m
[31m254
[39m   0.088
[4m9
[24m
> 
[38;5;250m 7
[39m glutamic_acid      -
[31m0
[39m
[31m.
[39m
[31m274
[39m      0.587 6.01
[38;5;246me
[39m
[31m-4
[39m  0.000
[4m8
[24m
[4m5
[24m
[4m9
[24m        -
[31m0
[39m
[31m.
[39m
[31m461
[39m   0.126 
> 
[38;5;250m 8
[39m glutamine          -
[31m0
[39m
[31m.
[39m
[31m477
[39m      0.438 2.94
[38;5;246me
[39m
[31m-3
[39m  0.003
[4m8
[24m
[4m3
[24m         -
[31m0
[39m
[31m.
[39m
[31m297
[39m   0.141 
> 
[38;5;250m 9
[39m glycine            -
[31m0
[39m
[31m.
[39m
[31m589
[39m      0.412 4.20
[38;5;246me
[39m
[31m-3
[39m  0.005
[4m2
[24m
[4m5
[24m         -
[31m0
[39m
[31m.
[39m
[31m259
[39m   0.153 
> 
[38;5;250m10
[39m histidine          -
[31m0
[39m
[31m.
[39m
[31m544
[39m      0.383 2.51
[38;5;246me
[39m
[31m-3
[39m  0.003
[4m4
[24m
[4m2
[24m         -
[31m0
[39m
[31m.
[39m
[31m248
[39m   0.135 
> 
[38;5;246m# … with 20 more rows, and 2 more variables: sd_Controls <dbl>, sd_DMD <dbl>
[39m

Limma

Other of the wide used statistical methods in many different omics, such as epigenomics or transcriptomics, is limma (Ritchie et al. 2015). POMA provides an easy use implementation of limma you only have to specify the desired contrast to compute.

PomaLimma(pre_processed, contrast = "Controls-DMD", adjust = "fdr")
> 
[38;5;246m# A tibble: 30 × 7
[39m
>    feature             logFC AveExpr     t       P.Value    adj.P.Val     B
>    
[3m
[38;5;246m<chr>
[39m
[23m               
[3m
[38;5;246m<dbl>
[39m
[23m   
[3m
[38;5;246m<dbl>
[39m
[23m 
[3m
[38;5;246m<dbl>
[39m
[23m         
[3m
[38;5;246m<dbl>
[39m
[23m        
[3m
[38;5;246m<dbl>
[39m
[23m 
[3m
[38;5;246m<dbl>
[39m
[23m
> 
[38;5;250m 1
[39m tryptophan         -
[31m0
[39m
[31m.
[39m
[31m775
[39m 0.008
[4m6
[24m
[4m2
[24m -
[31m7
[39m
[31m.
[39m
[31m0
[39m
[31m1
[39m 0.000
[4m0
[24m
[4m0
[24m
[4m0
[24m002
[4m6
[24m
[4m9
[24m 0.000
[4m0
[24m
[4m0
[24m
[4m0
[24m080
[4m7
[24m 11.0 
> 
[38;5;250m 2
[39m valine             -
[31m0
[39m
[31m.
[39m
[31m701
[39m 0.012
[4m7
[24m  -
[31m6
[39m
[31m.
[39m
[31m63
[39m 0.000
[4m0
[24m
[4m0
[24m
[4m0
[24m011
[4m6
[24m  0.000
[4m0
[24m
[4m0
[24m
[4m0
[24m173   9.55
> 
[38;5;250m 3
[39m ornithine          -
[31m0
[39m
[31m.
[39m
[31m633
[39m 0.033
[4m7
[24m  -
[31m6
[39m
[31m.
[39m
[31m26
[39m 0.000
[4m0
[24m
[4m0
[24m
[4m0
[24m047
[4m9
[24m  0.000
[4m0
[24m
[4m0
[24m
[4m0
[24m479   8.16
> 
[38;5;250m 4
[39m isoleucine         -
[31m0
[39m
[31m.
[39m
[31m606
[39m 0.004
[4m3
[24m
[4m8
[24m -
[31m5
[39m
[31m.
[39m
[31m95
[39m 0.000
[4m0
[24m
[4m0
[24m
[4m0
[24m159   0.000
[4m0
[24m
[4m0
[24m
[4m1
[24m19    6.99
> 
[38;5;250m 5
[39m lactate            -
[31m0
[39m
[31m.
[39m
[31m785
[39m 0.018
[4m4
[24m  -
[31m5
[39m
[31m.
[39m
[31m69
[39m 0.000
[4m0
[24m
[4m0
[24m
[4m0
[24m430   0.000
[4m0
[24m
[4m0
[24m
[4m2
[24m58    6.02
> 
[38;5;250m 6
[39m pyruvate           -
[31m0
[39m
[31m.
[39m
[31m624
[39m 0.012
[4m1
[24m  -
[31m5
[39m
[31m.
[39m
[31m43
[39m 0.000
[4m0
[24m
[4m0
[24m
[4m1
[24m12    0.000
[4m0
[24m
[4m0
[24m
[4m5
[24m14    5.09
> 
[38;5;250m 7
[39m leucine            -
[31m0
[39m
[31m.
[39m
[31m616
[39m 0.015
[4m3
[24m  -
[31m5
[39m
[31m.
[39m
[31m41
[39m 0.000
[4m0
[24m
[4m0
[24m
[4m1
[24m20    0.000
[4m0
[24m
[4m0
[24m
[4m5
[24m14    5.02
> 
[38;5;250m 8
[39m methionine         -
[31m0
[39m
[31m.
[39m
[31m552
[39m 0.019
[4m7
[24m  -
[31m4
[39m
[31m.
[39m
[31m91
[39m 0.000
[4m0
[24m
[4m0
[24m
[4m7
[24m64    0.000
[4m0
[24m
[4m2
[24m
[4m8
[24m7     3.22
> 
[38;5;250m 9
[39m serine             -
[31m0
[39m
[31m.
[39m
[31m536
[39m 0.044
[4m8
[24m  -
[31m4
[39m
[31m.
[39m
[31m76
[39m 0.000
[4m0
[24m
[4m1
[24m
[4m3
[24m2     0.000
[4m0
[24m
[4m4
[24m
[4m4
[24m0     2.69
> 
[38;5;250m10
[39m x1_methylhistidine -
[31m0
[39m
[31m.
[39m
[31m563
[39m 0.037
[4m3
[24m  -
[31m4
[39m
[31m.
[39m
[31m73
[39m 0.000
[4m0
[24m
[4m1
[24m
[4m4
[24m7     0.000
[4m0
[24m
[4m4
[24m
[4m4
[24m0     2.59
> 
[38;5;246m# … with 20 more rows
[39m

Multivariate Analysis

On the other hand, multivariate analysis implemented in POMA is quite similar to the univariate approaches. PomaMultivariate allows users to compute a PCA, PLS-DA or sPLS-DA by changing only the “method” parameter. This function is based on mixOmics package (Rohart et al. 2017).

Principal Component Analysis
poma_pca <- PomaMultivariate(pre_processed, method = "pca")
poma_pca$scoresplot +
  ggtitle("Scores Plot")

PLS-DA
poma_plsda <- PomaMultivariate(pre_processed, method = "plsda")
poma_plsda$scoresplot +
  ggtitle("Scores Plot")

poma_plsda$errors_plsda_plot +
  ggtitle("Error Plot")

Correlation Analysis

Often, correlation analysis is used to explore and discover relationships and patterns within our data. PomaCorr provides a flexible and easy way to do that providing a table with all pairwise coorelations in the data, a correlogram and a correlation graph.

poma_cor <- PomaCorr(pre_processed, label_size = 8, coeff = 0.6)
poma_cor$correlations
> 
[38;5;246m# A tibble: 435 × 5
[39m
>    feature1      feature2          R   pvalue      FDR
>    
[3m
[38;5;246m<chr>
[39m
[23m         
[3m
[38;5;246m<chr>
[39m
[23m         
[3m
[38;5;246m<dbl>
[39m
[23m    
[3m
[38;5;246m<dbl>
[39m
[23m    
[3m
[38;5;246m<dbl>
[39m
[23m
> 
[38;5;250m 1
[39m isoleucine    leucine       0.963 5.03
[38;5;246me
[39m
[31m-29
[39m 2.19
[38;5;246me
[39m
[31m-26
[39m
> 
[38;5;250m 2
[39m leucine       valine        0.941 3.77
[38;5;246me
[39m
[31m-24
[39m 7.11
[38;5;246me
[39m
[31m-22
[39m
> 
[38;5;250m 3
[39m fumarate      malate        0.940 4.90
[38;5;246me
[39m
[31m-24
[39m 7.11
[38;5;246me
[39m
[31m-22
[39m
> 
[38;5;250m 4
[39m isoleucine    valine        0.938 1.07
[38;5;246me
[39m
[31m-23
[39m 1.17
[38;5;246me
[39m
[31m-21
[39m
> 
[38;5;250m 5
[39m asparagine    threonine     0.907 1.25
[38;5;246me
[39m
[31m-19
[39m 1.09
[38;5;246me
[39m
[31m-17
[39m
> 
[38;5;250m 6
[39m serine        threonine     0.893 2.83
[38;5;246me
[39m
[31m-18
[39m 1.81
[38;5;246me
[39m
[31m-16
[39m
> 
[38;5;250m 7
[39m phenylalanine tyrosine      0.893 2.91
[38;5;246me
[39m
[31m-18
[39m 1.81
[38;5;246me
[39m
[31m-16
[39m
> 
[38;5;250m 8
[39m tryptophan    tyrosine      0.887 9.64
[38;5;246me
[39m
[31m-18
[39m 5.24
[38;5;246me
[39m
[31m-16
[39m
> 
[38;5;250m 9
[39m leucine       phenylalanine 0.876 8.53
[38;5;246me
[39m
[31m-17
[39m 4.13
[38;5;246me
[39m
[31m-15
[39m
> 
[38;5;250m10
[39m asparagine    serine        0.871 2.09
[38;5;246me
[39m
[31m-16
[39m 9.07
[38;5;246me
[39m
[31m-15
[39m
> 
[38;5;246m# … with 425 more rows
[39m
poma_cor$corrplot

poma_cor$graph

Alternatively, if you switch the “corr_type” parameter to “glasso”, this function will compute a Gaussian Graphical Model using the glmnet package (Friedman, Hastie, and Tibshirani 2019).

PomaCorr(pre_processed, corr_type = "glasso", coeff = 0.6)$graph

Lasso, Ridge and Elasticnet

POMA also provides a function to perform a Lasso, Ridge and Elasticnet regression for binary outcomes in a very intuitive and easy way. PomaLasso is based on glmnet package (Friedman, Hastie, and Tibshirani 2010). This function allows you to create a test subset in your data, evaluate the prediction of your models and export the model computed (it could be useful to perform prediction models with MS data). If “ntest” parameter is set to NULL, PomaLasso will use all observations to create the model (useful for feature selection).

# alpha = 1 for Lasso
PomaLasso(pre_processed, alpha = 1, labels = TRUE)$coefficientPlot

Random Forest

Finally, the random forest algorithm is also implemented in POMA. PomaRandForest uses the randomForest package (Liaw and Wiener 2002) to facilitate the implementation of the algorithm and creates automatically both test and train sets to compute and evaluate the resultant models.

poma_rf <- PomaRandForest(pre_processed, ntest = 10, nvar = 10)
poma_rf$error_tree

Resultant random forest model confusion matrix for test set:

poma_rf$confusionMatrix$table
>           Reference
> Prediction 1 2
>          1 2 1
>          2 0 2

Gini index plot for the top 10 predictors:

poma_rf$MeanDecreaseGini_plot

Session Information

sessionInfo()
> R version 4.0.2 (2020-06-22)
> Platform: x86_64-apple-darwin17.0 (64-bit)
> Running under: macOS  10.16
> 
> Matrix products: default
> BLAS:   /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRblas.dylib
> LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib
> 
> locale:
> [1] es_ES.UTF-8/es_ES.UTF-8/es_ES.UTF-8/C/es_ES.UTF-8/es_ES.UTF-8
> 
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base     
> 
> other attached packages:
> [1] plotly_4.10.0    ggraph_2.0.5     ggplot2_3.3.6    POMA_1.5.13     
> [5] BiocStyle_2.18.1
> 
> loaded via a namespace (and not attached):
>   [1] backports_1.4.1             circlize_0.4.15            
>   [3] systemfonts_1.0.4           plyr_1.8.7                 
>   [5] igraph_1.3.0                lazyeval_0.2.2             
>   [7] splines_4.0.2               gmp_0.6-5                  
>   [9] BiocParallel_1.24.1         listenv_0.8.0              
>  [11] GenomeInfoDb_1.26.7         digest_0.6.29              
>  [13] foreach_1.5.2               htmltools_0.5.2            
>  [15] viridis_0.6.2               fansi_1.0.3                
>  [17] magrittr_2.0.3              memoise_2.0.1              
>  [19] cluster_2.1.3               limma_3.46.0               
>  [21] graphlayouts_0.8.0          recipes_0.2.0              
>  [23] ComplexHeatmap_2.6.2        globals_0.15.1             
>  [25] gower_1.0.0                 matrixStats_0.62.0         
>  [27] rARPACK_0.11-0              hardhat_1.2.0              
>  [29] pkgdown_2.0.3               colorspace_2.0-3           
>  [31] ggrepel_0.9.1               textshaping_0.3.6          
>  [33] xfun_0.31                   dplyr_1.0.9                
>  [35] crayon_1.5.1                RCurl_1.98-1.7             
>  [37] jsonlite_1.8.0              impute_1.64.0              
>  [39] survival_3.3-1              iterators_1.0.14           
>  [41] glue_1.6.2                  polyclip_1.10-0            
>  [43] gtable_0.3.0                ipred_0.9-13               
>  [45] zlibbioc_1.36.0             XVector_0.30.0             
>  [47] GetoptLong_1.0.5            DelayedArray_0.16.3        
>  [49] RankProd_3.16.0             future.apply_1.9.0         
>  [51] shape_1.4.6                 Rmpfr_0.8-9                
>  [53] BiocGenerics_0.36.1         scales_1.2.0               
>  [55] DBI_1.1.3                   Rcpp_1.0.8.3               
>  [57] viridisLite_0.4.0           clue_0.3-61                
>  [59] proxy_0.4-27                stats4_4.0.2               
>  [61] lava_1.6.10                 prodlim_2019.11.13         
>  [63] glmnet_4.1-3                httr_1.4.3                 
>  [65] htmlwidgets_1.5.4           RColorBrewer_1.1-3         
>  [67] ellipsis_0.3.2              farver_2.1.1               
>  [69] pkgconfig_2.0.3             nnet_7.3-17                
>  [71] sass_0.4.1                  utf8_1.2.2                 
>  [73] caret_6.0-92                labeling_0.4.2             
>  [75] tidyselect_1.1.2            rlang_1.0.3                
>  [77] reshape2_1.4.4              munsell_0.5.0              
>  [79] tools_4.0.2                 cachem_1.0.6               
>  [81] cli_3.3.0                   generics_0.1.3             
>  [83] broom_1.0.0                 evaluate_0.15              
>  [85] stringr_1.4.0               fastmap_1.1.0              
>  [87] yaml_2.3.5                  ragg_1.2.2                 
>  [89] ModelMetrics_1.2.2.2        knitr_1.39                 
>  [91] fs_1.5.2                    tidygraph_1.2.1            
>  [93] randomForest_4.6-14         purrr_0.3.4                
>  [95] glasso_1.11                 future_1.26.1              
>  [97] nlme_3.1-157                compiler_4.0.2             
>  [99] rstudioapi_0.13             png_0.1-7                  
> [101] e1071_1.7-11                tweenr_1.0.2               
> [103] tibble_3.1.7                bslib_0.3.1                
> [105] stringi_1.7.6               highr_0.9                  
> [107] RSpectra_0.16-0             desc_1.4.1                 
> [109] lattice_0.20-45             Matrix_1.4-1               
> [111] permute_0.9-7               vegan_2.5-7                
> [113] vctrs_0.4.1                 pillar_1.7.0               
> [115] lifecycle_1.0.1             BiocManager_1.30.18        
> [117] jquerylib_0.1.4             GlobalOptions_0.1.2        
> [119] data.table_1.14.2           bitops_1.0-7               
> [121] corpcor_1.6.10              GenomicRanges_1.42.0       
> [123] R6_2.5.1                    bookdown_0.26              
> [125] gridExtra_2.3               IRanges_2.24.1             
> [127] parallelly_1.32.0           codetools_0.2-18           
> [129] MASS_7.3-57                 assertthat_0.2.1           
> [131] SummarizedExperiment_1.20.0 rprojroot_2.0.3            
> [133] rjson_0.2.21                withr_2.5.0                
> [135] S4Vectors_0.28.1            GenomeInfoDbData_1.2.4     
> [137] mgcv_1.8-40                 parallel_4.0.2             
> [139] mixOmics_6.14.1             grid_4.0.2                 
> [141] rpart_4.1.16                timeDate_3043.102          
> [143] tidyr_1.2.0                 class_7.3-20               
> [145] rmarkdown_2.14              MatrixGenerics_1.2.1       
> [147] Cairo_1.6-0                 ggforce_0.3.3              
> [149] pROC_1.18.0                 Biobase_2.50.0             
> [151] lubridate_1.8.0             ellipse_0.4.3

References

Armitage, Emily Grace, Joanna Godzien, Vanesa Alonso-Herranz, Ángeles López-Gonzálvez, and Coral Barbas. 2015. “Missing Value Imputation Strategies for Metabolomics Data.” Electrophoresis 36 (24): 3050–60.
Berg, Robert A van den, Huub CJ Hoefsloot, Johan A Westerhuis, Age K Smilde, and Mariët J van der Werf. 2006. “Centering, Scaling, and Transformations: Improving the Biological Information Content of Metabolomics Data.” BMC Genomics 7 (1): 142.
Friedman, Jerome, Trevor Hastie, and Rob Tibshirani. 2019. : Graphical Lasso: Estimation of Gaussian Graphical Models. https://CRAN.R-project.org/package=glasso.
Friedman, Jerome, Trevor Hastie, and Robert Tibshirani. 2010. “Regularization Paths for Generalized Linear Models via Coordinate Descent.” Journal of Statistical Software 33 (1): 1–22. http://www.jstatsoft.org/v33/i01/.
Liaw, Andy, and Matthew Wiener. 2002. “Classification and Regression by randomForest.” R News 2 (3): 18–22. https://CRAN.R-project.org/doc/Rnews/.
Morgan, Martin, Valerie Obenchain, Jim Hester, and Hervé Pagès. 2020. SummarizedExperiment: SummarizedExperiment Container. https://bioconductor.org/packages/SummarizedExperiment.
Ritchie, Matthew E, Belinda Phipson, Di Wu, Yifang Hu, Charity W Law, Wei Shi, and Gordon K Smyth. 2015. limma Powers Differential Expression Analyses for RNA-Sequencing and Microarray Studies.” Nucleic Acids Research 43 (7): e47. https://doi.org/10.1093/nar/gkv007.
Rohart, Florian, Benoît Gautier, Amrit Singh, and Kim-Anh Lê Cao. 2017. “mixOmics: An r Package for ’Omics Feature Selection and Multiple Data Integration.” PLoS Computational Biology 13 (11): e1005752. http://www.mixOmics.org.