當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。