当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R broom tidy_svd 整理伪装成列表的 a(n) svd 对象


Broom 整理了许多列表,这些列表实际上是没有类属性的 S3 对象。例如, stats::optim()svd()interp::interp() 产生一致的输出,但由于它们没有类属性,因此无法由 S3 调度处理。

这些函数查看列表的元素并确定是否有适当的整理方法可应用于该列表。这些整理器作为 tidy_<function>glance_<function> 形式的函数实现,并且不会导出(但它们已记录在案!)。

如果找不到合适的整理方法,它们会抛出错误。

用法

tidy_svd(x, matrix = "u", ...)

参数

x

base::svd() 返回的组件 udv 的列表。

matrix

指定应整理 PCA 的哪个组件的字符。

  • "u""samples""scores""x" :返回有关从原始空间到主成分空间的映射的信息。

  • "v""rotation""loadings""variables" :将有关从主成分空间映射回原始空间的信息返回。

  • "d""eigenvalues""pcs" :返回有关特征值的信息。

...

附加参数。不曾用过。仅需要匹配通用签名。注意:拼写错误的参数将被吸收到 ... 中,并被忽略。如果拼写错误的参数有默认值,则将使用默认值。例如,如果您传递 conf.lvel = 0.9 ,所有计算将使用 conf.level = 0.95 进行。这里有两个异常:

  • tidy() 方法在提供 exponentiate 参数时会发出警告(如果该参数将被忽略)。

  • augment() 方法在提供 newdata 参数时会发出警告(如果该参数将被忽略)。

tibble::tibble,其列取决于正在整理的 PCA 的组件。

如果 matrix"u""samples""scores""x" ,整理输出中的每一行对应于 PCA 空间中的原始数据。这些列是:

row

原始观察的 ID(即原始数据中的行名称)。

PC

表示主成分的整数。

value

该特定主成分的观察分数。即 PCA 空间中观测的位置。

如果 matrix"v""rotation""loadings""variables" ,则整理输出中的每一行对应于原始空间中主成分的信息。这些列是:

row

执行 PCA 的数据集的变量标签(列名)。

PC

指示主成分的整数向量。

value

指定主成分上的特征向量(轴得分)值。

如果 matrix"d""eigenvalues""pcs" ,则列为:

PC

指示主成分的整数向量。

std.dev

此 PC 解释的标准偏差。

percent

该分量解释的变异分数(0 到 1 之间的数值)。

cumulative

由主要成分解释的累积变异分数,直至该成分(0 到 1 之间的数值)。

细节

有关如何解释各种整理矩阵的信息,请参阅 https://stats.stackexchange.com/questions/134282/relationship-between-svd-and-pca-how-to-use-svd-to-perform-pca。请注意,SVD 仅相当于中心数据上的 PCA。

也可以看看

base::svd()

其他 svd 整理器:augment.prcomp()tidy.prcomp()tidy_irlba()

其他列表整理器: glance_optim()list_tidierstidy_irlba()tidy_optim()tidy_xyz()

例子


library(modeldata)
data(hpc_data)

mat <- scale(as.matrix(hpc_data[, 2:5]))
s <- svd(mat)

tidy_u <- tidy(s, matrix = "u")
#> New names:
#> • `` -> `...1`
#> • `` -> `...2`
#> • `` -> `...3`
#> • `` -> `...4`
tidy_u
#> # A tibble: 17,324 × 3
#>      row    PC    value
#>    <int> <dbl>    <dbl>
#>  1     1     1  0.00403
#>  2     2     1 -0.00436
#>  3     3     1 -0.00196
#>  4     4     1 -0.00444
#>  5     5     1 -0.00437
#>  6     6     1 -0.00437
#>  7     7     1 -0.00431
#>  8     8     1 -0.00436
#>  9     9     1 -0.00434
#> 10    10     1 -0.00440
#> # ℹ 17,314 more rows

tidy_d <- tidy(s, matrix = "d")
tidy_d
#> # A tibble: 4 × 4
#>      PC std.dev percent cumulative
#>   <int>   <dbl>   <dbl>      <dbl>
#> 1     1    69.5   0.279      0.279
#> 2     2    67.0   0.259      0.538
#> 3     3    63.9   0.235      0.774
#> 4     4    62.6   0.226      1    

tidy_v <- tidy(s, matrix = "v")
#> New names:
#> • `` -> `...1`
#> • `` -> `...2`
#> • `` -> `...3`
#> • `` -> `...4`
tidy_v
#> # A tibble: 16 × 3
#>    column    PC   value
#>     <int> <dbl>   <dbl>
#>  1      1     1  0.657 
#>  2      2     1  0.409 
#>  3      3     1 -0.577 
#>  4      4     1  0.262 
#>  5      1     2 -0.0142
#>  6      2     2 -0.650 
#>  7      3     2 -0.137 
#>  8      4     2  0.747 
#>  9      1     3 -0.302 
#> 10      2     3 -0.332 
#> 11      3     3 -0.779 
#> 12      4     3 -0.438 
#> 13      1     4 -0.690 
#> 14      2     4  0.548 
#> 15      3     4 -0.205 
#> 16      4     4  0.426 

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")

相关用法


注:本文由纯净天空筛选整理自大神的英文原创作品 Tidy a(n) svd object masquerading as list。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。