如何在R中执行三向PCA [英] How to perform a three-way PCA in R

查看:0
本文介绍了如何在R中执行三向PCA的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在R中执行三向主成分分析,虽然我找到了几篇解释它的工作原理和如何解释结果的文章,但我在网上找不到任何关于如何在R中执行此操作的有用指南。

我的数据由230个样本、250,000个变量和50个注释组成。通常,人们只对以下类型的数据只使用一个注释进行标准的主成分分析:

标准数据:

        var1 var2 var3 var4
Sample1  1/1  0/0  1/1  1/0
Sample2  1/0  1/1  1/1  1/0
Sample3  0/0  1/1  1/1  1/1
Sample4  0/0  0/0  1/1  0/0
Sample5  1/0  1/0  0/0  1/1
但是,我希望将所有注释信息实现到分析中,这样我就可以组合使用所有50个矩阵进行分析。以这种方式,注释的组合可以比单个注释单独解释更多样本之间的差异,例如,注释1和4一起解释的差异比单独注释1更多。

注释1:

         var1 var2 var3 var4
Sample1  1/1  0/0  1/1  1/0
Sample2  1/0  1/1  1/1  1/0
Sample3  0/0  1/1  1/1  1/1
Sample4  0/0  0/0  1/1  0/0
Sample5  1/0  1/0  0/0  1/1

注释2:

         var1      var2      var3  var4
Sample1  missense  none      STOP  synonymous
Sample2  missense  missense  STOP  synonymous
Sample3  none      missense  STOP  synonymous
Sample4  none      none      STOP  none
Sample5  missense  missense  none  synonymous

注释3:

         var1  var2   var3  var4
Sample1  0.30   0.00  0.01  0.04
Sample2  0.30  -0.24  0.01  0.04
Sample3  0.00  -0.24  0.01  0.04
Sample4  0.00  -0.24  0.01  0.00
Sample5  0.30  -0.24  0.00  0.04

注释4:

         var1  var2  var3  var4
Sample1  CTCF  NONE  NONE  MAX
Sample2  CTCF  NONE  NONE  MAX
Sample3  NONE  NONE  NONE  MAX
Sample4  NONE  NONE  NONE  NONE
Sample5  CTCF  NONE  NONE  MAX

根据我所发现的,有三个包可以执行Tucker 3-way PCA:Three Way、Ptak和rT。我曾尝试运行Three-Way,但他们使用的数据结构似乎非常难看。也许我可以做到这一点,但Three Way文章中的示例也生成了一个错误,所以我更喜欢另一个包:

三向数据结构:

         var1_anno1    var1_anno2    var1_anno3   var2_anno1    var2_anno2
Sample1  1/1           missense      0.30         0/0           missense
Sample2  1/0           missense      0.30         1/1           missense
Sample3  0/0           none          0.30         1/1           missense
Sample4  0/0           none          0.30         0/0           none
Sample5  1/0           missense      0.30         1/0           missense

PTAK程序包需要: "如果使用非单位度量,则k阶张量(作为数组)X是以数据为数组并满足度量列表的列表"

我不清楚这意味着什么。我试图研究如何生成张量的张量包,但他们的例子非常复杂,因为他们对各种张量进行了大量的乘法,而不是解释如何从数据中创建张量的基本知识。

对于这种方法的缺点和如何创建张量,以及如何使用任何软件包分析张量,我都会非常感激。

谢谢

推荐答案

我最终使用了ptak包来运行分析。

为了构建张量,我使用了两个程序包tensorabind

我通过从矩阵创建一个向量,然后重新定义其三维维度来构建张量(也称为多向数组)。然后使用函数abind()将每个个体的数组合并到最终的三维张量中。

for (i in 1:length(list_of_sample_matrices)) {  

    # Converting matrix into single sample tensor
    single_sample_tensor <- array(as.vector(list_of_sample_matrices[i])), c(250000, 50, 1))
    
    # Creating all sample tensor
    if (i == 1) {
        all_sample_tensor <- single_sample_tensor
    }

    # Adding a single sample tensor at the time to the all sample tensor
    if (i > 1) {
        all_sample_tensor <- abind(all_sample_tensor, single_sample_tensor)
    }
}

这篇关于如何在R中执行三向PCA的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆