| Title: | Least Squares Sparse Principal Components Analysis |
|---|---|
| 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>. |
| Authors: | Giovanni Maria Merola [aut, cre] |
| Maintainer: | Giovanni Maria Merola <[email protected]> |
| License: | AGPL-3 |
| Version: | 1.1.1 |
| Built: | 2026-07-11 08:07:22 UTC |
| Source: | https://github.com/merolagio/spca |
The package provides functions to compute LS-SPCA solutions, where sparsity is imposed to Pearson's PCA's least-squares reconstruction objective.
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 class spca.
pca() Computes PCA solutions from a data or covariance/correlation
matrix. Returns an spca_object of class spca.
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 class spca.
compare_spca() Compares two or more LS-SPCA solutions numerically
and visually.
new_spca() Creates an spca object 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 'spca object.
spca_screeplot() and wachter_qqplot() Diagnostic plots usefull to
determine the number of components to retain in PCA.
Maintainer: Giovanni Maria Merola [email protected]
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
Useful links:
Compute group-level sums from a vector, matrix, data frame, or spca
object according to a grouping variable.
aggregate_by_group( X, groups, only_nonzero = TRUE, contributions = TRUE, digits = ifelse(contributions, 1, 3), print_table = TRUE, return_table = FALSE )aggregate_by_group( X, groups, only_nonzero = TRUE, contributions = TRUE, digits = ifelse(contributions, 1, 3), print_table = TRUE, return_table = FALSE )
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 |
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.
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.
data(holzinger) data(holzinger_scales) ho_cspca = spca(holzinger, n_comps = 2) aggregate_by_group(ho_cspca, groups = holzinger_scales)data(holzinger) data(holzinger_scales) ho_cspca = spca(holzinger, n_comps = 2) aggregate_by_group(ho_cspca, groups = holzinger_scales)
Flip the sign of selected sparse principal components in an spca
object.
change_loadings_sign_spca(spca_obj, index_to_change)change_loadings_sign_spca(spca_obj, index_to_change)
spca_obj |
An object of class |
index_to_change |
An integer vector of component indices whose signs should be flipped. |
The function multiplies by 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.
The modified spca_obj, with the selected components
sign-flipped.
Other spca:
compare_spca(),
is.spca(),
new_spca(),
plot.spca(),
print.spca(),
show_contributions_spca(),
spca(),
spca_object,
summary.spca()
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.
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 )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 )
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 |
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.
Other spca:
change_loadings_sign_spca(),
is.spca(),
new_spca(),
plot.spca(),
print.spca(),
show_contributions_spca(),
spca(),
spca_object,
summary.spca()
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))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))
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).
holzingerholzinger
A numeric data frame with 145 rows and 12 variables. The variables are:
Visual perception test (SPL).
Cubes test (SPL).
Lozenges test (SPL).
Paragraph comprehension test (VBL).
Sentence completion test (VBL).
Word meaning test (VBL).
Addition test (SPD).
Counting groups of dots test (SPD).
Straight and curved capitals test (SPD).
Deduction test (MTH).
Numerical puzzles test (MTH).
Series completion test (MTH).
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
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
holzinger_scalesholzinger_scales
A factor listing the 4 scales: SPL, VBL, SPD and MTH, for each variable.
Check whether an object has class spca and contains the core elements
required by the package.
is.spca(x)is.spca(x)
x |
An object to test. |
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.
A logical value. Returns TRUE if x has class
spca and contains the required core elements, and FALSE
otherwise.
Other spca:
change_loadings_sign_spca(),
compare_spca(),
new_spca(),
plot.spca(),
print.spca(),
show_contributions_spca(),
spca(),
spca_object,
summary.spca()
data(holzinger) ho_cspca = spca(holzinger, n_comps = 2) is.spca(ho_cspca)data(holzinger) ho_cspca = spca(holzinger, n_comps = 2) is.spca(ho_cspca)
Build an object of class spca from a loadings matrix and either a
covariance or correlation matrix, a data matrix, or both.
new_spca(A, S = NULL, X = NULL, method_name = NULL)new_spca(A, S = NULL, X = NULL, method_name = NULL)
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 |
An spca object.
Other spca:
change_loadings_sign_spca(),
compare_spca(),
is.spca(),
plot.spca(),
print.spca(),
show_contributions_spca(),
spca(),
spca_object,
summary.spca()
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)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 a principal component analysis (PCA) and return the result as an
spca object, so that it can be used with spca methods.
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 )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 )
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 |
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.
An spca_object with an additional
eigenvalues vector containing the eigenvalues up to the rank used by
the selected backend.
Other pca:
spca_screeplot(),
wachter_qqplot()
data(holzinger) ho_pca = pca(holzinger, n_comps = 4, screeplot = TRUE, nrow_data = 144, qq_plot = TRUE) summary(ho_pca)data(holzinger) ho_pca = pca(holzinger, n_comps = 4, screeplot = TRUE, nrow_data = 144, qq_plot = TRUE) summary(ho_pca)
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.
## 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")), ... )## 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")), ... )
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. |
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 or NULL (default
NULL). If NULL, row names of the loading matrix are used, or
V1, ..., Vp if row names are missing. If set to
"none", variable names are not shown. If a character vector of
length is 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 or NULL (default
NULL). Optional facet labels for components.
legend_title: a character scalar or NULL (default
NULL). Optional legend title.
x_axis_lab: a character scalar (default "variables").
Label for the x axis.
adjust_labels_circ: a numeric vector or NULL (default
NULL). Optional angular adjustments for circular plot labels.
flip_heatmap: a logical value (default FALSE). If
TRUE, 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.
If return_plot = TRUE, returns the ggplot2 object. Otherwise,
returns NULL invisibly.
The printsafe palette corresponds to OrRd from
https://colorbrewer2.org/.
Other spca:
change_loadings_sign_spca(),
compare_spca(),
is.spca(),
new_spca(),
print.spca(),
show_contributions_spca(),
spca(),
spca_object,
summary.spca()
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")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 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.
## 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, ... )## 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, ... )
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. |
If return_table = TRUE, returns the formatted character
matrix. Otherwise, returns NULL invisibly.
Other spca:
change_loadings_sign_spca(),
compare_spca(),
is.spca(),
new_spca(),
plot.spca(),
show_contributions_spca(),
spca(),
spca_object,
summary.spca()
data(holzinger) ho_cspca = spca(holzinger, n_comps = 4) ho_cspca print(ho_cspca, contributions = FALSE, digits = 4)data(holzinger) ho_cspca = spca(holzinger, n_comps = 4) ho_cspca print(ho_cspca, contributions = FALSE, digits = 4)
Convert the nonzero loadings stored in an spca object into percentage
contributions for selected components.
show_contributions_spca( spca_obj, cols = NULL, print_list = TRUE, return_list = FALSE )show_contributions_spca( spca_obj, cols = NULL, print_list = TRUE, return_list = FALSE )
spca_obj |
An object of class |
cols |
An integer vector or |
print_list |
A logical value (default |
return_list |
A logical value (default |
If return_list = TRUE, returns the selected contributions.
Otherwise, returns NULL invisibly.
Other spca:
change_loadings_sign_spca(),
compare_spca(),
is.spca(),
new_spca(),
plot.spca(),
print.spca(),
spca(),
spca_object,
summary.spca()
data(holzinger) ho_cspca = spca(holzinger, n_comps = 2) show_contributions_spca(ho_cspca)data(holzinger) ho_cspca = spca(holzinger, n_comps = 2) show_contributions_spca(ho_cspca)
Compute least squares sparse principal components (LS-SPCA) from a data matrix or from a covariance/correlation matrix.
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 )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 )
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 |
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.
An object of class spca.
Other spca:
change_loadings_sign_spca(),
compare_spca(),
is.spca(),
new_spca(),
plot.spca(),
print.spca(),
show_contributions_spca(),
spca_object,
summary.spca()
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")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")
Objects of class spca are returned by the fitting functions
spca(), pca() and by new_spca()..
An object of class spca is a list with the following elements:
matrix of sparse loadings.
matrix of loadings scaled to unit
norm within each sPC.
Number of sPCs.
Number of nonzero loadings in each sPC.
Variance explained by each sPC.
Variance explained by the corresponding PCs.
Cumulative variance explained by the sPCs.
Ratio of vexp to the variance explained by the
corresponding PC.
Ratio of cvexp to the cumulative variance explained by
the corresponding PCs.
Correlation between each sPC and the corresponding PC.
Total variance of the data.
List of nonzero loading vectors, one per sPC.
correlation matrix of the
sPC scores.
List of variable indices with nonzero loadings, one per sPC.
Optional matrix of sPC scores, returned only when a data matrix is supplied.
List of parameters used to compute the fit.
Matched call used to compute the fit.
Other spca:
change_loadings_sign_spca(),
compare_spca(),
is.spca(),
new_spca(),
plot.spca(),
print.spca(),
show_contributions_spca(),
spca(),
summary.spca()
Plot the first nplot eigenvalues against component order.
spca_screeplot( eigenvalues, nplot = NULL, ylab = "eigenvalues", addtitle = TRUE, show_plot = TRUE, return_plot = FALSE )spca_screeplot( eigenvalues, nplot = NULL, ylab = "eigenvalues", addtitle = TRUE, show_plot = TRUE, return_plot = FALSE )
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 |
If return_plot = TRUE, returns a ggplot object;
otherwise, returns NULL invisibly.
Other pca:
pca(),
wachter_qqplot()
data(holzinger) ho_pca = pca(holzinger, qq_plot = FALSE) spca_screeplot(ho_pca$eigenvalues)data(holzinger) ho_pca = pca(holzinger, qq_plot = FALSE) spca_screeplot(ho_pca$eigenvalues)
Print and optionally return summary statistics for evaluating an spca
object and comparing it with the corresponding PCA solution.
## 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, ... )## 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, ... )
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. |
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. |
If return_table = TRUE, returns a numeric matrix with the
selected summary statistics. Otherwise, returns NULL invisibly.
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
data(holzinger) ho_cspca = spca(holzinger, n_comps = 2) summary(ho_cspca)data(holzinger) ho_cspca = spca(holzinger, n_comps = 2) summary(ho_cspca)
Produce a QQ plot comparing observed eigenvalues with Marchenko–Pastur (Wachter) theoretical quantiles.
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 )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 )
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 |
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.
If return_plot = TRUE, returns a ggplot object.
Otherwise, returns NULL invisibly.
Other pca:
pca(),
spca_screeplot()
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)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)