如何重建 tidy.prcomp 输出,使其显示观察/样本和载荷/旋转之间的联系?

问题描述

我想问一下您如何显示 broom::tidy(PCA,matrix="loadings") 输出的行列?

broom::tidy(PCA) 的第一列显示了我希望在 broom::tidy(PCA,matrix = "loadings") 的第一列中显示的列。

这可能并且正确吗?

# Sample dataset

library(tidyverse)
library(phyloseq)

data("GlobalPatterns") # from phyloseq package
ps <- GlobalPatterns
ps <- transform_sample_counts(ps,function(x)
  x / sum(x))

ps_otu <- otu_table(ps) %>% t() %>% as.data.frame() 
sample_data <- sample_data(ps) %>% data.frame()
PCA <- prcomp(ps_otu,center = T)

# Code to force produce the expected output below
broom::tidy(PCA) %>% 
  slice(1:25) %>% 
  mutate(value = pull(slice(broom::tidy(PCA,matrix = "loadings")[,"value"],1:25)))

# Expected output sample
# A tibble: 25 x 3
   row      PC        value
   <chr> <dbl>        <dbl>
 1 CL3       1  0.0000954  
 2 CL3       2 -0.00000256 
 3 CL3       3  0.00000124 
 4 CL3       4 -0.00000739 
 5 CL3       5  0.000000362
 6 CL3       6 -0.00000139 
 7 CL3       7  0.00000215 
 8 CL3       8  0.00000154 
 9 CL3       9 -0.000000883
10 CL3      10 -0.000000477
# ... with 15 more rows

非生物信息学的替代方案:

大家好, 有没有办法制作一个矩阵来显示观察/样本与特征载荷的关系? 例如,我期待类似以下捏造的数据。

library(tidyverse)
data("USArrests")

PCA <- prcomp(USArrests,scale. = T)

broom::tidy(PCA) %>% #from this matrix.
  slice(1:10) %>% #pick the first 10 vector
  mutate(value = pull(slice(broom::tidy(PCA,1:10))) #and then use it to replace this matrix's first column

这可能并且正确吗?

谢谢

非常感谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)