2

R で三元主成分分析を実行したいと考えています。その仕組みと結果の解釈方法を説明している記事をいくつか見つけましたが、R での実行方法に関するオンラインの有用なガイドを見つけることができません。

私のデータは、230 個のサンプル、250,000 個の変数、および 50 個の注釈で構成されています。通常、次のタイプのデータに対して 1 つの注釈のみを使用して、標準の PCA を実行するだけです。

標準データ:

        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 を実行できる 3 つのパッケージがあります: ThreeWay、PTAk、および rTensor。ThreeWay を実行しようとしましたが、ThreeWay が使用するデータ構造は非常に扱いにくいようです。これでうまくいくかもしれませんが、ThreeWay の記事の例でもエラーが発生したため、別のパッケージを使用することをお勧めします。

ThreeWay データ構造:

         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 は配列としてデータを含むリストであり、メトリクスのリストを満たしています」

これが何を意味するのかは私には明らかではありません。テンソルを生成する方法のテンソルパッケージを調べようとしましたが、データからテンソルを作成する方法の基本を説明するのではなく、さまざまなテンソルで大量の乗算を行うため、それらの例は非常に複雑です。

このアプローチの弱点と、テンソルを作成する方法、およびパッケージを使用してそれらを分析する方法についての両方のコメントをいただければ幸いです。

ありがとう

4

2 に答える 2

0

解析を実行するためにPTAkパッケージを使用することになりました。

テンソルを構築するために、2 つのパッケージtensorabindを使用しました。

行列からベクトルを作成し、その次元を 3 次元で再定義することにより、テンソル (別名、マルチウェイ配列) を構築しました。次に、この関数abind()を使用して、各個人の配列を最終的な 3 次元テンソルにマージしました。

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)
    }
}
于 2016-11-20T13:37:36.910 に答える