0

大規模なデータセット (40,000 以上の遺伝子) に対して一連の相関テスト (ピアソンまたはスピアマンのいずれかが行いますが、可能であれば両方を試みます) を実行したいと思います。これは、この人工的な例では次のように配置されています。

Gene    S1- S2- S3- S4- S5- S1+ S2+ S3+ S4+ S5+
A       3   6   9   12  15  6   9   12  15  18
B       2   1   4   1   3   1   3   4   7   7
C       3   6   9   12  15  18  15  12  9   6

分割された 5 つのペアのサンプルがあります (この例では - と +)。個々の遺伝子ごとに (-) グループと (+) グループの間に相関関係があるかどうかを確認したいと思います (相関係数と p 値の両方が必要です)。したがって、この例では、次のようになります。

Gene    p-val   corr.
A       0       1
B       0.94    0.04
C       0       -1

Rでこれを行う方法はまだわかりませんが、おそらく何かが欠けています(プログラムの使い方を学び始めたばかりです)。これらのテストをより効率的に実行できる別のフリーウェア プログラムがあれば、私はどんな選択肢も受け入れます (私たちの大学は安いです)。

4

1 に答える 1

2
dat <- read.table(text="Gene    S1- S2- S3- S4- S5- S1+ S2+ S3+ S4+ S5+
A       3   6   9   12  15  6   9   12  15  18
B       2   1   4   1   3   1   3   4   7   7
C       3   6   9   12  15  18  15  12  9   6 ", header=TRUE)

cbind( dat[,1,drop=FALSE], 
cor.gene= apply(dat[,-1], 1, function(x) cor(x[1:5], x[6:10]) ), 
cor.test= apply(dat[,-1], 1, function(x) cor.test(x[1:5], x[6:10])$p.value ) )
  Gene    cor.gene  cor.test
1    A  1.00000000 0.0000000
2    B  0.04411765 0.9438459
3    C -1.00000000 0.0000000

@Henrik は 1 つだけを望んでいapplyたため、これは列指向の言語であるため、結果を転置する必要があります。

cbind( dat[,1,drop=FALSE], 
       t( apply(dat[,-1], 1, function(x) 
                               c( cor.gene=cor(x[1:5], x[6:10]), 
                                  pval= cor.test(x[1:5], x[6:10])$p.value ) )
      ) )
  Gene    cor.gene      pval
1    A  1.00000000 0.0000000
2    B  0.04411765 0.9438459
3    C -1.00000000 0.0000000
于 2013-10-01T17:10:14.027 に答える