2016-04-12 2 views
1

Rで3者主成分分析を実行したいと思いますが、それがどのように機能し、結果を解釈するかを説明する記事がいくつか見つかりましたが、Rで3ウェイPCAを実行する方法

私のデータは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 

しかし、私は私が使用するように、分析にすべての注釈情報を実装したいと思います通常の人は単なるデータの次のタイプに一つだけのアノテーションを使用して標準的なPCAを行いますすべての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を実行しようとしましたが、使用するデータ構造は非常に扱いにくいようです。たぶん私は、この作品を作ることができるが、3Pプレイ記事の例では、エラーが発生したので、私は別のパッケージを好む:

3Pプレイデータ構造:

  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パッケージが必要です。 「テンソルを(配列として)非同一メトリックが使用される場合、Xは配列としてのデータを持つリストであり、メトリックのリストを満たしている。テンソルを生成する方法のテンソルパッケージを調べようとしましたが、テンソル形式のデータを作成する方法の基本を説明するのではなく、さまざまなテンソルで多数の乗算を行うので、その例は非常に畳み込まれています。

このアプローチの弱点とテンソルを作成する方法と、いずれかのパッケージを使用してそれらを解析する方法について、私は両方のコメントに感謝します。

おかげ

答えて

0

私は分析を実行するためPTAkパッケージを使用して終了。

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

行列からベクトルを作成してテンソル(別名多方向配列)を作成し、次に を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) 
    } 
} 
関連する問題