High-Dimensional Methods via Generalised Singular Decomposition

Construct a Canonical Variate Analysis Biplot via the Generalised Singular Value Decomposition, for cases when the number of samples is less than the number of variables. For more information on these biplots, see Ganey, R., & Gardner-Lubbe, S. (2026) .


wideRhino

The goal of wideRhino is to enable the construction of canonical variate analysis (CVA) biplots for high-dimensional data settings, specifically where the number of variables ($p$) exceeds the number of observations ($n$). The package addresses the singularity limitation of the within-group scatter matrix by leveraging the generalised singular value decomposition (GSVD).

Installation

You can install the development version of wideRhino from GitHub with:

library(devtools)
install_github("RaeesaGaney91/wideRhino")

Example

When $p < n$, then the CVA-GSVD biplot will result to the standard CVA biplot. Here is an example using the penguins data:

library(wideRhino)
Penguins <- datasets::penguins[stats::complete.cases(penguins),]
CVAgsvd(X=Penguins[,3:6],group = Penguins[,1]) |> 
  CVAbiplot(group.col=c("blue","purple","forestgreen"))

When $p > n$, then the standard CVA biplot will not work due to the singularity of the within-scatter matrix, and this is when the GSVD becomes useful. Using a simulated data set with 3 groups, 100 observations and 300 variables, a CVA-GSVD biplot can be constructed:

data(sim_data)
CVAgsvd(X=sim_data[,2:301],group = sim_data[,1]) |>
  CVAbiplot(group.col=c("tan1","darkcyan","darkslateblue"),which.var = 1:10)

About the name 🦏

The name wideRhino is inspired by the white rhinoceros, a species distinguished by its wide mouth and short legs. This physical structure reflects the statistical characteristics of the data the package is designed for: wide data with a large number of variables ($p$) and a small number of observations ($n$) - a setting often described as “large $p$, small $n$”.

Just as the white rhino’s wide frame is well-adapted to its environment, wideRhino is purpose-built for the challenges of high-dimensional multivariate analysis. By leveraging the generalised singular value decomposition (GSVD), it allows users to construct canonical variate analysis (CVA) biplots even when classical assumptions break down.

Acknowledgments

The CVA-GSVD methodology and the package as a whole are the author’s own work. One implementation detail is not: wideRhino originally relied on the geigen package for its GSVD computation, and after geigen was archived on CRAN, its internal gsvd() replacement (see R/gsvd.R) was written with the assistance of Claude Code (Anthropic).

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("wideRhino")

1.3.0 by Raeesa Ganey, a month ago


Browse source code at https://github.com/cran/wideRhino


Authors: Raeesa Ganey [aut, cre] (ORCID:


Documentation:   PDF Manual  


MIT + file LICENSE license


Imports Matrix, MASS, ggplot2, dplyr

Suggests knitr, rmarkdown, testthat


See at CRAN