2011-07-16 19 views
3

私はいくつかのマイクロアレイデータのRでヒートマップを生成しようとしており、大部分はオンライン命令に基づいて1つを作成するのに成功していますが、 。私が望むのは、ユークリッド距離ではなくピアソン距離に基づいてデータをクラスタリングすることですが、私はいくつかの困難に苦しんでいます。ピアソン距離を使用したマイクロアレイデータのヒートマップ

heatmap.2(Test402,trace="none",density="none",scale="row", ColSideColors=c("red","blue") [data.test.factors],col=redgreen,labRow="",hclustfun=function(x) hclust(x,method="complete")) 

Test402 402行(遺伝子)及び31列(患者)、およびデータを有する行列である:私は私の初期のヒートマップを作成するために、次のコードを使用して(gplotsパッケージから)heatmap2を使用

.test.factorsは、各患者が属するアウトカムグループの指標です。 hclustfunを使うとここでうまくいき、ヒートマップはメソッドや全体的な作業の変更に反応するようです。問題は、クラスタリング距離がすべてユークリッド距離であることです。私はそれをピアソン距離に変更したいと思います。だから私は次のように試みます:

heatmap.2(Test402,trace="none",density="none",scale="row", ColSideColors=c("red","blue")[data.test.factors],col=redgreen,labRow="",hclustfun=function(x) hclust(x,method="complete"), distfun=function(x) as.dist((1-cor(x))/2)) 

上記のコマンドは失敗します。

cU = cor(Test402) 
heatmap.2(cU,trace="none",density="none",scale="row", ColSideColors=c("red","blue")[data.test.factors],col=redgreen,labRow="",hclustfun=function(x) hclust(x,method="complete"), distfun=function(x) as.dist((1-x)/2)) 

動作しますが、ここで問題です:Test402 needs to be a square matrix.だから、私は次のことを試してみましたいくつかの追加のアドバイスを見ているためです。ヒートマップは、TEST402の元の表現値を持つのではなく、相関関係のみを表示します。これは私が欲しいものではない!私はthisがほしいと思う、そして、私はちょうど異なったクラスターにdendrogramをしたい、私はヒートマップで実際に表されているデータを変更したくない!これは可能ですか?

答えて

10

Ok ...私はあなたが単にcordistがどのように動作するのか混乱していると思います。 distのドキュメントから:

This function computes and returns the distance matrix computed by using the specified 
    distance measure to compute the distances between the rows of a data matrix. 

そしてcorのドキュメントから:

If x and y are matrices then the covariances (or correlations) 
    between the columns of x and the columns of y are computed. 

は違いを参照してください? distheatmap.2が、それはなってきたと仮定しているものであるとdistオブジェクトは、)あなたは、本質的にの間の距離を計算しているcorを使用しているときに、の間の距離を計算したと仮定します。あなたの距離関数に単純な転置を加えると、この(非正方形の)例が私のために走ります:

TEST <- matrix(runif(100),nrow=20) 
heatmap.2(t(TEST), trace="none", density="none", 
      scale="row", 
      labRow="", 
      hclust=function(x) hclust(x,method="complete"), 
      distfun=function(x) as.dist((1-cor(t(x)))/2)) 
+0

それはITでした!うーん、あなたは完全に正しい、私はその面に焦点を当てていない、私は他の事については屈曲した!そんな愚かな間違いを指摘してくれてありがとう!私はこれに答えるために時間を割いてくれてありがとう! – Ana

+0

簡単な間違い、おそらく、愚かではない。私の唯一の手がかりは、ヒートマップ2のドキュメントではdistfunがデフォルトでdistになっているということでした。 – joran

関連する問題