Tidy a(n) svd object masquerading as list
Broom tidies a number of lists that are effectively S3
objects without a class attribute. For example, stats::optim()
,
svd() and akima::interp()
produce consistent output, but
because they do not have a class attribute, they cannot be handled by S3
dispatch.
These functions look at the elements of a list and determine if there is
an appropriate tidying method to apply to the list. Those tidiers are
themselves are implemented as functions of the form tidy_<function>
or glance_<function>
and are not exported (but they are documented!).
If no appropriate tidying method is found, throws an error.
tidy_svd(x, matrix = "u", ...)
x |
A list with components |
matrix |
Character specifying which component of the PCA should be tidied.
|
... |
Additional arguments. Not used. Needed to match generic
signature only. Cautionary note: Misspelled arguments will be
absorbed in |
See https://stats.stackexchange.com/questions/134282/relationship-between-svd-and-pca-how-to-use-svd-to-perform-pca for information on how to interpret the various tidied matrices. Note that SVD is only equivalent to PCA on centered data.
A tibble::tibble with columns depending on the component of PCA being tidied.
If matrix
is "u"
, "samples"
, "scores"
, or "x"
each row in the
tidied output corresponds to the original data in PCA space. The columns
are:
|
ID of the original observation (i.e. rowname from original data). |
|
Integer indicating a principal component. |
|
The score of the observation for that particular principal component. That is, the location of the observation in PCA space. |
If matrix
is "v"
, "rotation"
, "loadings"
or "variables"
, each
row in the tidied output corresponds to information about the principle
components in the original space. The columns are:
|
The variable labels (colnames) of the data set on which PCA was performed |
|
An integer vector indicating the principal component |
|
The value of the eigenvector (axis score) on the indicated principal component |
If matrix
is "d"
, "eigenvalues"
or "pcs"
, the columns are:
|
An integer vector indicating the principal component |
|
Standard deviation explained by this PC |
|
Fraction of variation explained by this component (a numeric value between 0 and 1). |
|
Cumulative fraction of variation explained by principle components up to this component (a numeric value between 0 and 1). |
Other svd tidiers:
augment.prcomp()
,
tidy.prcomp()
,
tidy_irlba()
Other list tidiers:
glance_optim()
,
list_tidiers
,
tidy_irlba()
,
tidy_optim()
,
tidy_xyz()
if (requireNamespace("modeldata", quietly = TRUE)) { library(modeldata) data(hpc_data) mat <- scale(as.matrix(hpc_data[, 2:5])) s <- svd(mat) tidy_u <- tidy(s, matrix = "u") tidy_u tidy_d <- tidy(s, matrix = "d") tidy_d tidy_v <- tidy(s, matrix = "v") tidy_v library(ggplot2) library(dplyr) ggplot(tidy_d, aes(PC, percent)) + geom_point() + ylab("% of variance explained") tidy_u %>% mutate(class = hpc_data$class[row]) %>% ggplot(aes(class, value)) + geom_boxplot() + facet_wrap(~PC, scale = "free_y") }
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.