| Type: | Package |
| Title: | Least Squares Sparse Principal Components Analysis |
| Version: | 1.1.1 |
| Date: | 2026-06-03 |
| Description: | Implements least-squares sparse principal component analysis (LS-SPCA). The approach follows Merola (2015) <doi:10.1111/anzs.12128> and Merola and Chen (2019) <doi:10.1016/j.jmva.2019.04.001>. |
| Maintainer: | Giovanni Maria Merola <merolagio@gmail.com> |
| URL: | https://github.com/merolagio/spca |
| BugReports: | https://github.com/merolagio/spca/issues |
| License: | AGPL-3 |
| Encoding: | UTF-8 |
| Depends: | R (≥ 4.3) |
| Imports: | Rcpp (≥ 1.0.14), ggplot2 (≥ 4.0.0), RMTstat (≥ 0.3.1), scales, rlang |
| Suggests: | testthat (≥ 3.0.0), peakRAM (≥ 1.0.2), knitr, rmarkdown, bench, R.rsp |
| VignetteBuilder: | knitr |
| Config/testthat/edition: | 3 |
| LinkingTo: | Rcpp, RcppEigen |
| RoxygenNote: | 7.3.2 |
| LazyData: | true |
| NeedsCompilation: | yes |
| Packaged: | 2026-07-03 08:51:11 UTC; merol |
| Author: | Giovanni Maria Merola [aut, cre] |
| Repository: | CRAN |
| Date/Publication: | 2026-07-10 20:10:02 UTC |
Least Squares Sparse Principal Components Analysis
Description
The package provides functions to compute LS-SPCA solutions, where sparsity is imposed to Pearson's PCA's least-squares reconstruction objective.
Details
LS-SPCA is different for other SPCA methods that compute sparse PCs with maximal variance. Details about LS-SPCA can be found in the articles cited below and in the extended vignette.
This release accompanies the related article and is intended to support full reproduction of the results reported therein.
Computation relies on efficient C++ routines and includes multiple options for variable selection and sparse loading estimation.
Fitting functions
-
spca()Computes LS-SPCA solutions from a data or covariance/correlation matrix. Returns an spca_object of classspca. -
pca()Computes PCA solutions from a data or covariance/correlation matrix. Returns an spca_object of classspca.
S3 methods for objects of class spca include:
pca() returns PCA results as an spca object.
methods
Utilities
-
is.spca()Verifies if an object inherits from classspca. -
compare_spca()Compares two or more LS-SPCA solutions numerically and visually. -
new_spca()Creates anspcaobject from a set of loadings. -
aggregate_by_group()Sums loadings or contributions wrt an index vector. -
show_contributions_spca()Prints the nonzero contributions separately for each sPC. -
change_loadings_sign_spca()Changes the sign of the loadings and all related elements in an 'spcaobject. -
spca_screeplot()andwachter_qqplot()Diagnostic plots usefull to determine the number of components to retain in PCA.
Author(s)
Maintainer: Giovanni Maria Merola merolagio@gmail.com
References
Merola, G. M. (2015). Least Squares Sparse Principal Component Analysis: a Backward Elimination approach to attain large loadings. Australia & New Zealand Journal of Statistics, 57, 391–429. doi:10.1111/anzs.12128
Merola, G. M. and Chen, G. (2019). Projection sparse principal component analysis: An efficient least squares method. Journal of Multivariate Analysis, 173, 366–382. doi:10.1016/j.jmva.2019.04.001
See Also
Useful links:
Aggregate loadings or contributions by group
Description
Compute group-level sums from a vector, matrix, data frame, or spca
object according to a grouping variable.
Usage
aggregate_by_group(
X,
groups,
only_nonzero = TRUE,
contributions = TRUE,
digits = ifelse(contributions, 1, 3),
print_table = TRUE,
return_table = FALSE
)
Arguments
X |
An |
groups |
A vector or factor with one group label per variable. Its
length must equal |
only_nonzero |
A logical value (default |
contributions |
A logical value (default |
digits |
An integer scalar (default |
print_table |
A logical value (default |
return_table |
A logical value (default |
Details
If contributions = TRUE but the input values do not sum to
one in absolute value, contributions is set to FALSE and
digits is set to 3. Aggregated sums are not expected to retain the
unit-norm property of the original loadings or contributions.
Value
Invisibly returns the aggregated numeric vector or matrix by default.
If return_table = TRUE, returns the same object visibly. Rows
correspond to groups and columns correspond to components when X is a
matrix, data frame, or spca object.
Examples
data(holzinger)
data(holzinger_scales)
ho_cspca = spca(holzinger, n_comps = 2)
aggregate_by_group(ho_cspca, groups = holzinger_scales)
Change the sign of selected loadings in an spca object
Description
Flip the sign of selected sparse principal components in an spca
object.
Usage
change_loadings_sign_spca(spca_obj, index_to_change)
Arguments
spca_obj |
An object of class |
index_to_change |
An integer vector of component indices whose signs should be flipped. |
Details
The function multiplies by -1 the selected columns of
loadings and contributions. It also updates
loadings_list, scores, and the corresponding rows and columns
of spc_cor when these elements are present. This is useful because
principal components and sparse principal components are defined only up to
sign.
Value
The modified spca_obj, with the selected components
sign-flipped.
See Also
Other spca:
compare_spca(),
is.spca(),
new_spca(),
plot.spca(),
print.spca(),
show_contributions_spca(),
spca(),
spca_object,
summary.spca()
Compare two or more spca solutions
Description
Plot loadings and print summary statistics for two or more spca
objects side by side. For the meaning of each summary statistic, see
summary.spca. Tables and plots can optionally be returned.
Usage
compare_spca(
obj_list,
n_comps = NULL,
contributions = TRUE,
only_nonzero = TRUE,
variable_groups = NULL,
plot_loadings = TRUE,
plot_type = c("bars", "points"),
methods_names = NULL,
x_axis_var_names = TRUE,
col_grouplines = "red",
color_scale = c("ggplot", "cbb", "printsafe", "bw"),
col_short_names = TRUE,
print_tables = TRUE,
print_loadings = TRUE,
show_plot = TRUE,
return_tables = FALSE,
return_plot = FALSE
)
Arguments
obj_list |
A list of two or more |
n_comps |
An integer scalar or |
contributions |
A logical value (default |
only_nonzero |
A logical value (default |
variable_groups |
Optional variable grouping (default |
plot_loadings |
A logical value (default |
plot_type |
A character vector (default first element |
methods_names |
An optional character vector (default |
x_axis_var_names |
A logical value (default |
col_grouplines |
A character scalar (default |
color_scale |
A character vector (default first element
|
col_short_names |
A logical value (default |
print_tables |
A logical value (default |
print_loadings |
A logical value (default |
show_plot |
A logical value (default |
return_tables |
A logical value (default |
return_plot |
A logical value (default |
Value
Invisibly returns NULL by default. If
return_tables = TRUE, returns a list containing the comparison
matrix and summary matrix. If return_plot = TRUE, the returned
object also includes the loadings or contributions plot.
See Also
Other spca:
change_loadings_sign_spca(),
is.spca(),
new_spca(),
plot.spca(),
print.spca(),
show_contributions_spca(),
spca(),
spca_object,
summary.spca()
Examples
data(holzinger)
ho_uspca = spca(holzinger, n_comps = 4, method = "u")
ho_cspca = spca(holzinger, n_comps = 4, method = "c")
compare_spca(list(ho_uspca, ho_cspca))
Holzinger–Swineford Student Ability data
Description
This dataset is based on the classic Holzinger and Swineford (1939) Student Ability dataset.
We use the version distributed with the psychTools package. For
comparability with previous analyses, we select 12 items and only students
from the Grant–White School (see also Ferrara, Martella, and Vichi, 2019).
Usage
holzinger
Format
- holzinger
A numeric data frame with 145 rows and 12 variables. The variables are:
- visual
Visual perception test (SPL).
- cubes
Cubes test (SPL).
- flags
Lozenges test (SPL).
- paragraph
Paragraph comprehension test (VBL).
- sentence
Sentence completion test (VBL).
- wordm
Word meaning test (VBL).
- addition
Addition test (SPD).
- counting
Counting groups of dots test (SPD).
- straight
Straight and curved capitals test (SPD).
- deduct
Deduction test (MTH).
- numeric
Numerical puzzles test (MTH).
- series
Series completion test (MTH).
Details
The 12 items correspond to four ability scales:
spatial (SPL), verbal (VBL), speed (SPD), and mathematical (MTH).
The data provided with this package are scaled to mean zero and unit
variance. The scales are available as a factor called holzinger_scales
References
Holzinger, K. J., and Swineford, F. (1939). A study in factor analysis: The stability of a bi-factor solution. Supplementary Educational Monographs, No. 48.
Ferrara, C., Martella, F., and Vichi, M. (2019). Probabilistic disjoint principal component analysis. Multivariate Behavioral Research, 54(1), 47–61.
Holzinger–Swineford Student Ability scales
Description
Holzinger–Swineford Student Ability scales
Usage
holzinger_scales
Format
- holzinger_scales
A factor listing the 4 scales: SPL, VBL, SPD and MTH, for each variable.
Test for spca objects
Description
Check whether an object has class spca and contains the core elements
required by the package.
Usage
is.spca(x)
Arguments
x |
An object to test. |
Details
The function checks for class spca and for the presence of
the core elements used by the package, including loadings, contributions,
explained-variance summaries, component counts, cardinalities, loading lists,
and active indices. It performs a lightweight structural check; use
validate_spca() for a more detailed internal validation.
Value
A logical value. Returns TRUE if x has class
spca and contains the required core elements, and FALSE
otherwise.
See Also
Other spca:
change_loadings_sign_spca(),
compare_spca(),
new_spca(),
plot.spca(),
print.spca(),
show_contributions_spca(),
spca(),
spca_object,
summary.spca()
Examples
data(holzinger)
ho_cspca = spca(holzinger, n_comps = 2)
is.spca(ho_cspca)
Construct an spca object from a set of loadings
Description
Build an object of class spca from a loadings matrix and either a
covariance or correlation matrix, a data matrix, or both.
Usage
new_spca(A, S = NULL, X = NULL, method_name = NULL)
Arguments
A |
A numeric matrix of loadings. |
S |
A numeric covariance or correlation matrix (default |
X |
A numeric data matrix or data frame (default |
method_name |
A character scalar or |
Value
An spca object.
See Also
Other spca:
change_loadings_sign_spca(),
compare_spca(),
is.spca(),
plot.spca(),
print.spca(),
show_contributions_spca(),
spca(),
spca_object,
summary.spca()
Examples
set.seed(1)
A = round(matrix(runif(24, -1, 1), 12))
A[abs(A) < 0.4] = 0 #no need to scale to unit norm
data(holzinger)
spca_new = new_spca(A, X = holzinger)
is.spca(spca_new)
summary(spca_new)
Compute principal components
Description
Compute a principal component analysis (PCA) and return the result as an
spca object, so that it can be used with spca methods.
Usage
pca(
M,
n_comps = NULL,
center_data = FALSE,
scale_data = FALSE,
fat_matrix = NULL,
screeplot = FALSE,
qq_plot = TRUE,
nrow_data = NULL,
neigen_toplot = NULL,
cor = TRUE,
common_var = 1,
pm = FALSE,
eps_pm = 1e-04,
maxiter_pm = 1000
)
Arguments
M |
A data matrix, correlation matrix, or covariance matrix. |
n_comps |
An integer scalar or |
center_data |
A logical value (default |
scale_data |
A logical value (default |
fat_matrix |
A logical value or |
screeplot |
A logical value (default |
qq_plot |
A logical value (default |
nrow_data |
An integer scalar or |
neigen_toplot |
An integer scalar or |
cor |
A logical value (default |
common_var |
A numeric scalar (default |
pm |
A logical value (default |
eps_pm |
A positive numeric scalar (default |
maxiter_pm |
A positive integer scalar (default |
Details
n_comps controls how many components are retained in the
returned object. The tall backend computes PCA from the covariance or
correlation matrix. The fat backend computes PCA in row space and converts
the retained eigenvectors back to variable loadings.
Value
An spca_object with an additional
eigenvalues vector containing the eigenvalues up to the rank used by
the selected backend.
See Also
Other pca:
spca_screeplot(),
wachter_qqplot()
Examples
data(holzinger)
ho_pca = pca(holzinger, n_comps = 4, screeplot = TRUE,
nrow_data = 144, qq_plot = TRUE)
summary(ho_pca)
Plot an spca object
Description
Plot the sparse loadings, or the corresponding percentage contributions, from
an spca object. The plot can be shown as a bar plot, circular bar
plot, or heatmap.
Usage
## S3 method for class 'spca'
plot(
x,
n_plot = NULL,
plot_type = c("bars", "circular", "heatmap"),
contributions = TRUE,
only_nonzero = TRUE,
pc_loadings = NULL,
variable_groups = NULL,
plot_title = NULL,
return_plot = FALSE,
show_plot = TRUE,
controls = list(color_scale = c("ggplot", "cbb", "printsafe", "bw"), variable_names =
NULL, legend_position = c("none", "bottom", "right", "top", "left"), grid_type =
c("horizontal", "full", "none"), facet_labels = NULL, legend_title = NULL, x_axis_lab
= "variables", adjust_labels_circ = NULL, flip_heatmap = FALSE, heatmap_color_range =
c("values", "unit")),
...
)
Arguments
x |
An object of class |
n_plot |
An integer scalar or |
plot_type |
A character vector (default first element |
contributions |
A logical value (default |
only_nonzero |
A logical value (default |
pc_loadings |
A numeric matrix, data frame, or |
variable_groups |
A vector, factor, or |
plot_title |
A character scalar or |
return_plot |
A logical value (default |
show_plot |
A logical value (default |
controls |
A list of graphical controls (default described below).
Supported entries are |
... |
Further arguments. These are currently unused and trigger an error if supplied. |
Details
If pc_loadings is supplied, SPCA and PCA values are plotted side by
side for comparison. Circular bar plots are not implemented for this
comparison, so a standard bar plot is used instead. In this case all
variables are plotted, regardless of only_nonzero.
For character arguments defined by a default vector of accepted values, the first element is the default and the first character of the supplied string is used for matching.
The entries in controls are:
-
color_scale: a character vector (default first element"ggplot"). Accepted values are"ggplot","cbb","printsafe", and"bw"."cbb"is colorblind-friendly with black,"printsafe"is colorblind- and printer-friendly,"bw"uses gray tones, and"ggplot"uses the default ggplot2 scale. -
variable_names: a character vector orNULL(defaultNULL). IfNULL, row names of the loading matrix are used, orV1, ...,Vpif row names are missing. If set to"none", variable names are not shown. If a character vector of lengthpis supplied, it is used as the variable names. -
legend_position: a character vector (default first element"none"). Accepted values are"none","bottom","right","top", and"left". -
grid_type: a character vector (default first element"horizontal"). Accepted values are"horizontal","full", and"none". -
facet_labels: a character vector orNULL(defaultNULL). Optional facet labels for components. -
legend_title: a character scalar orNULL(defaultNULL). Optional legend title. -
x_axis_lab: a character scalar (default"variables"). Label for the x axis. -
adjust_labels_circ: a numeric vector orNULL(defaultNULL). Optional angular adjustments for circular plot labels. -
flip_heatmap: a logical value (defaultFALSE). IfTRUE, flip the heatmap axes. -
heatmap_color_range: a character vector (default first element"values"). Accepted values are"values"and"unit".
When variable groups are supplied, a legend is needed to identify the groups; if the legend is missing or suppressed, it is moved to the bottom. For circular plots, the legend is moved to the right unless it is suppressed.
Value
If return_plot = TRUE, returns the ggplot2 object. Otherwise,
returns NULL invisibly.
References
The printsafe palette corresponds to OrRd from
https://colorbrewer2.org/.
See Also
Other spca:
change_loadings_sign_spca(),
compare_spca(),
is.spca(),
new_spca(),
print.spca(),
show_contributions_spca(),
spca(),
spca_object,
summary.spca()
Examples
data(holzinger)
ho_cspca = spca(holzinger, n_comps = 4)
ho_plot = plot(ho_cspca, return_plot = TRUE)
# Change faceting and legend position.
ho_plot + ggplot2::facet_wrap(
facets = ggplot2::vars(component),
ncol = 4,
nrow = 1
) + ggplot2::theme(legend.position = "right")
Print an spca object
Description
Print sparse loadings, or the corresponding percentage contributions, from an
spca object. By default, variables with only zero entries are omitted,
and cumulative explained variance is shown at the bottom of the table.
Usage
## S3 method for class 'spca'
print(
x,
cols = NULL,
only_nonzero = TRUE,
contributions = TRUE,
digits = 3,
thresh_card = 1e-07,
return_table = FALSE,
component_names = NULL,
...
)
Arguments
x |
An object of class |
cols |
An integer vector or |
only_nonzero |
A logical value (default |
contributions |
A logical value (default |
digits |
An integer scalar (default |
thresh_card |
A numeric scalar (default |
return_table |
A logical value (default |
component_names |
A character vector or |
... |
Further arguments. These are currently unused and trigger an error if supplied. |
Value
If return_table = TRUE, returns the formatted character
matrix. Otherwise, returns NULL invisibly.
See Also
Other spca:
change_loadings_sign_spca(),
compare_spca(),
is.spca(),
new_spca(),
plot.spca(),
show_contributions_spca(),
spca(),
spca_object,
summary.spca()
Examples
data(holzinger)
ho_cspca = spca(holzinger, n_comps = 4)
ho_cspca
print(ho_cspca, contributions = FALSE, digits = 4)
Show nonzero contributions by component
Description
Convert the nonzero loadings stored in an spca object into percentage
contributions for selected components.
Usage
show_contributions_spca(
spca_obj,
cols = NULL,
print_list = TRUE,
return_list = FALSE
)
Arguments
spca_obj |
An object of class |
cols |
An integer vector or |
print_list |
A logical value (default |
return_list |
A logical value (default |
Value
If return_list = TRUE, returns the selected contributions.
Otherwise, returns NULL invisibly.
See Also
Other spca:
change_loadings_sign_spca(),
compare_spca(),
is.spca(),
new_spca(),
plot.spca(),
print.spca(),
spca(),
spca_object,
summary.spca()
Examples
data(holzinger)
ho_cspca = spca(holzinger, n_comps = 2)
show_contributions_spca(ho_cspca)
Compute LS-SPCA components
Description
Compute least squares sparse principal components (LS-SPCA) from a data matrix or from a covariance/correlation matrix.
Usage
spca(
M,
n_comps = NULL,
alpha = 0.95,
ncomp_by_cvexp = NULL,
method = c("cspca", "uspca", "pspca"),
var_selection = c("fwd", "bkw", "step"),
objective = c("r2", "cvexp"),
intensive = FALSE,
fat_matrix = NULL,
fixed_index_list = NULL,
center_data = FALSE,
scale_data = FALSE,
pm_loading = FALSE,
eps_pm_loading = 1e-04,
maxiter_pm_loading = 1000,
pm_varsel = FALSE,
eps_pm_varsel = 1e-04,
maxiter_pm_varsel = 500
)
Arguments
M |
A numeric matrix or data frame. If |
n_comps |
A nonnegative integer scalar or |
alpha |
A numeric scalar in |
ncomp_by_cvexp |
A numeric scalar in |
method |
A character vector (default first element |
var_selection |
A character vector (default first element
|
objective |
A character vector (default first element |
intensive |
A logical value (default |
fat_matrix |
A logical value or |
fixed_index_list |
A list of integer-valued vectors, a factor, or
|
center_data |
A logical value (default |
scale_data |
A logical value (default |
pm_loading |
A logical value (default |
eps_pm_loading |
A positive numeric scalar (default |
maxiter_pm_loading |
A positive integer scalar (default |
pm_varsel |
A logical value (default |
eps_pm_varsel |
A positive numeric scalar (default |
maxiter_pm_varsel |
A positive integer scalar (default |
Details
Data matrices are routed to the tall or fat C++ backend. Square matrices are treated as covariance/correlation matrices and use the tall backend.
Variable selection is controlled by var_selection, objective,
and intensive.
var_selection | objective | Algorithm |
"fwd" | "r2" | Forward selection with squared-correlation stopping |
"bkw" | "r2" | Backward elimination with squared-correlation stopping |
"step" | "r2" | Forward-stepwise selection with squared-correlation stopping |
"fwd" | "cvexp" | Forward selection with CVEXP stopping |
"bkw" | "cvexp" | Backward elimination with CVEXP stopping |
"step" | "cvexp" | Forward-stepwise selection with CVEXP stopping |
intensive = TRUE requires "fwd" | "cvexp" | Intensive forward CVEXP selection |
The fat backend currently supports regression-based forward variable
selection only: var_selection = "f" and intensive = FALSE.
Other combinations generate an error.
The returned object is documented in spca_object.
Value
An object of class spca.
See Also
Other spca:
change_loadings_sign_spca(),
compare_spca(),
is.spca(),
new_spca(),
plot.spca(),
print.spca(),
show_contributions_spca(),
spca_object,
summary.spca()
Examples
data(holzinger)
#default
ho_cspca = spca(holzinger, n_comps = 4)
#uncorrelated components and subsets determined using CVEXP as stopping rule
ho_uspca = spca(holzinger, n_comps = 4, method = "uspca",
objective = "cvexp")
Sparse principal component analysis object
Description
Objects of class spca are returned by the fitting functions
spca(), pca() and by new_spca()..
Components
An object of class spca is a list with the following elements:
- loadings
p \times rmatrix of sparse loadings.- contributions
p \times rmatrix of loadings scaled to unitL_1norm within each sPC.- n_comps
Number of sPCs.
- cardinality
Number of nonzero loadings in each sPC.
- vexp
Variance explained by each sPC.
- vexp_pc
Variance explained by the corresponding PCs.
- cvexp
Cumulative variance explained by the sPCs.
- rvexp
Ratio of
vexpto the variance explained by the corresponding PC.- rcvexp
Ratio of
cvexpto the cumulative variance explained by the corresponding PCs.- cor_with_pc
Correlation between each sPC and the corresponding PC.
- tot_var
Total variance of the data.
- loadings_list
List of nonzero loading vectors, one per sPC.
- spc_cor
n_comps \times n_compscorrelation matrix of the sPC scores.- indices
List of variable indices with nonzero loadings, one per sPC.
- scores
Optional matrix of sPC scores, returned only when a data matrix is supplied.
- parameters
List of parameters used to compute the fit.
- call
Matched call used to compute the fit.
See Also
Other spca:
change_loadings_sign_spca(),
compare_spca(),
is.spca(),
new_spca(),
plot.spca(),
print.spca(),
show_contributions_spca(),
spca(),
summary.spca()
Plot eigenvalues in a scree plot
Description
Plot the first nplot eigenvalues against component order.
Usage
spca_screeplot(
eigenvalues,
nplot = NULL,
ylab = "eigenvalues",
addtitle = TRUE,
show_plot = TRUE,
return_plot = FALSE
)
Arguments
eigenvalues |
A numeric vector of eigenvalues. |
nplot |
An integer scalar or |
ylab |
A character scalar (default |
addtitle |
A logical value (default |
show_plot |
A logical value (default |
return_plot |
A logical value (default |
Value
If return_plot = TRUE, returns a ggplot object;
otherwise, returns NULL invisibly.
See Also
Other pca:
pca(),
wachter_qqplot()
Examples
data(holzinger)
ho_pca = pca(holzinger, qq_plot = FALSE)
spca_screeplot(ho_pca$eigenvalues)
Summarize an spca object
Description
Print and optionally return summary statistics for evaluating an spca
object and comparing it with the corresponding PCA solution.
Usage
## S3 method for class 'spca'
summary(
object,
cols,
contributions = TRUE,
variance_metrics = c("both", "cumulative_relative", "relative", "none"),
min_load = FALSE,
cor_with_pc = FALSE,
return_table = FALSE,
print_table = TRUE,
thresh_card = 1e-08,
...
)
Arguments
object |
An object of class |
cols |
An integer vector of component indices. If missing, all
available components are included. If a single integer is supplied,
components |
contributions |
A logical value (default |
variance_metrics |
A character vector (default first element
|
min_load |
A logical value (default |
cor_with_pc |
A logical value (default |
return_table |
A logical value (default |
print_table |
A logical value (default |
thresh_card |
A numeric scalar (default |
... |
Further arguments. These are currently unused and trigger an error if supplied. |
Details
For each component, the following summaries can be computed:
| Vexp | The percentage variance explained. |
| Cvexp | The percentage cumulative variance explained. |
| Rvexp | The variance explained relative to the corresponding PC. |
| Rcvexp | The cumulative variance explained relative to the corresponding PCs. |
| Card | The cardinality, that is the number of non zero loadings. |
| Min load/Min cont | The minimum absolute value of the nonzero loadings or contributions, if requested. |
| r | The correlation between sPCs and the corresponding PCs, if requested. |
Value
If return_table = TRUE, returns a numeric matrix with the
selected summary statistics. Otherwise, returns NULL invisibly.
See Also
Examples in aggregate_by_group.
Other spca:
change_loadings_sign_spca(),
compare_spca(),
is.spca(),
new_spca(),
plot.spca(),
print.spca(),
show_contributions_spca(),
spca(),
spca_object
Examples
data(holzinger)
ho_cspca = spca(holzinger, n_comps = 2)
summary(ho_cspca)
Wachter QQ plot for eigenvalues
Description
Produce a QQ plot comparing observed eigenvalues with Marchenko–Pastur (Wachter) theoretical quantiles.
Usage
wachter_qqplot(
eigenvalues,
p = NULL,
n,
gamma,
cor = TRUE,
common_var = 1,
nplot = NULL,
n_fitline = NULL,
addtitle = TRUE,
show_plot = TRUE,
return_plot = FALSE
)
Arguments
eigenvalues |
A numeric vector of eigenvalues, assumed to be sorted in decreasing order. |
p |
An integer scalar or |
n |
An integer scalar. Sample size. |
gamma |
A numeric scalar. Aspect ratio. If missing, |
cor |
A logical value (default |
common_var |
A positive numeric scalar (default |
nplot |
An integer scalar or |
n_fitline |
An integer scalar or |
addtitle |
A logical value (default |
show_plot |
A logical value (default |
return_plot |
A logical value (default |
Details
The QQ plot is based on the Marchenko–Pastur distribution of the eigenvalues of a random covariance matrix generated from variables with a common variance. If the data set or covariance matrix comes from variables with different variances, the QQ plot is not valid. A simple introduction to the QQ plot can be found at https://brainder.org/tag/wachter-test/; see the extended vignette for references.
Value
If return_plot = TRUE, returns a ggplot object.
Otherwise, returns NULL invisibly.
See Also
Other pca:
pca(),
spca_screeplot()
Examples
data(holzinger)
ho_pca = pca(holzinger, qq_plot = FALSE)
wachter_qqplot(ho_pca$eigenvalues, p = ncol(holzinger), n = nrow(holzinger),
cor = TRUE, n_fitline = -3)