2016-10-06 4 views
0

pvclustパッケージを使用してクラスタ分析に関するいくつかの問題が発生しています。pvclust Rパッケージで "ward"メソッドを使用するとエラーが発生する

具体的には、種(行)とサンプリングステーション(列)で構成されるデータマトリックスがあります。私は私の種の豊富さ(私は以前にlog(x + 1)を変換していた)に従ってサンプリングステーションをグループ化するためにCAを実行したい。

私の行列を適切に準備したら、WardのクラスタリングメソッドとBray-Curtisを距離インデックスとして使用して、pvclustパッケージに従ってCAを実行しようとしました。しかし、私は次のエラーメッセージを取得するたび:

「」hclustでエラーが発生しました(距離、メソッド= method.hclust): 無効なクラスタリング法「」

私はその後、別のものを使用して同じ分析を実行しようとしましたクラスターメソッド、私は問題はなかった。私はまた、veganパッケージのhclust関数を使って同じ解析を実行しようとしましたが、全く問題はありませんでした。分析は問題なく実行されます。

がより良い私の問題を理解するために、私は私のマトリックスの一部と私は分析をperfromするために使用さ スクリプトを表示します:

  P1  P2   P3   P4   P5  P6 
1 10.8750000 3.2888889 2.0769231 1.4166667 3.2395833 5.333333 
3 0.3645833 0.3027778 0.3212038 0.7671958 0.4993676 0.000000 
4 0.0000000 0.0000000 2.3500000 0.0000000 0.0000000 0.264000 
5 0.0000000 0.7333333 0.2692308 0.0000000 0.2343750 0.000000 
6 0.0000000 0.9277778 0.0000000 0.2936508 0.7291667 0.000000 
7 0.4166667 6.3500000 1.0925463 0.5476190 0.1885169 0.000000 
8 1.6250000 0.0000000 0.0000000 0.0000000 5.2187500 0.000000 
9 0.0000000 0.8111111 0.0000000 0.0000000 0.0000000 0.000000 
10 2.6770833 0.6666667 2.3304890 4.5906085 2.9652778 0.000000 
15 1.8020833 0.9666667 1.4807137 3.3878968 0.1666667 0.000000 
16 17.8750000 4.9555556 1.4615385 6.5000000 7.8593750 7.666667 
19 4.5312500 1.0555556 3.5766941 6.7248677 2.3196181 0.000000 
20 0.0000000 0.6777778 0.5384615 0.0000000 0.0000000 0.000000 
21 0.0000000 0.9777778 0.0000000 0.2500000 0.0000000 0.000000 
24 1.2500000 3.0583333 0.1923077 0.0000000 4.9583333 0.000000 
25 0.0000000 0.0000000 2.5699634 0.0000000 0.0000000 0.000000 
26 6.6666667 2.2333333 24.8730020 55.9980159 17.6239583 0.000000 
P1-P6は私のサンプリング局である

、および左端の列数字は私の異なる種です。私はこのプラットフォームをプラットフォームと同じように表現します。

その後、私は次のコード行を使用しました:

dist <- function(x, ...){ 
    vegdist(x, ...) 
} 

result<-pvclust(platforms,method.dist = "bray",method.hclust = "ward") 

それはブレイ・カーティスインデックスはpvclustパッケージで、元々利用できないので、私は、最初の3つのコードラインを実行することは注目に値します。したがって、これらのコードラインを実行すると、pvclust関数でブレイ・カーティスインデックスを指定することができました。

なぜpvclustパッケージでは動作しないのですか?

ご協力いただければ幸いです。

敬具、

マリー

+0

は、コードとサンプルデータで、再現性の例を提供してください。今すぐ 'stats :: hclust'を使うときに' ward.D'や 'ward.D2'と入力するだけで簡単に診断できます。' pvclust :: pvclust'は 'ward'を使います。 –

+0

こんにちはMichael、 私の問題の具体的な例を提供するために私はすでに投稿を更新しました。 –

+0

ワードの方法は*二乗ユークリッド*に基づいていることに注意してください。だからあなたは他の距離で結果を取り戻すかもしれないが、それはもはやワードの元の理論によって支持されなくなるかもしれない。 –

答えて

1

二つの関連の問題があります。

  1. あなたはhclust互換性のある方法を渡す必要がmethod.hclustを呼び出します。理論的にはpvclustwardをチェックし、ward.Dに変換しますが、(正しい)名前をward.Dまたはward.D2のいずれかに渡すことをお勧めします。
  2. distをそのように上書きすることはできません。ただし、のカスタム関数をpvclustに渡すことができます。

例えば、これは動作するはずです:

library(vegan) 
library(pvclust) 

sample.data <- "P1 P2 P3 P4 P5 P6 
10.8750000 3.2888889 2.0769231 1.4166667 3.2395833 5.3333330 
0.3645833 0.3027778 0.3212038 0.7671958 0.4993676 0.0000000 
0.0000000 0.0000000 2.3500000 0.0000000 0.0000000 0.2640000 
0.0000000 0.7333333 0.2692308 0.0000000 0.2343750 0.0000000 
0.0000000 0.9277778 0.0000000 0.2936508 0.7291667 0.0000000 
0.4166667 6.3500000 1.0925463 0.5476190 0.1885169 0.0000000 
1.6250000 0.0000000 0.0000000 0.0000000 5.2187500 0.0000000 
0.0000000 0.8111111 0.0000000 0.0000000 0.0000000 0.0000000 
2.6770833 0.6666667 2.3304890 4.5906085 2.9652778 0.0000000 
1.8020833 0.9666667 1.4807137 3.3878968 0.1666667 0.0000000 
17.8750000 4.9555556 1.4615385 6.5000000 7.8593750 7.6666670 
4.5312500 1.0555556 3.5766941 6.7248677 2.3196181 0.0000000 
0.0000000 0.6777778 0.5384615 0.0000000 0.0000000 0.0000000 
0.0000000 0.9777778 0.0000000 0.2500000 0.0000000 0.0000000 
1.2500000 3.0583333 0.1923077 0.0000000 4.9583333 0.0000000 
0.0000000 0.0000000 2.5699634 0.0000000 0.0000000 0.0000000 
6.6666667 2.2333333 24.8730020 55.9980159 17.6239583 0.0000000" 

platforms <- read.table(text = sample.data, header = TRUE) 

result <- pvclust(platforms, 
        method.dist = function(x){ 
        vegdist(x, "bray") 
        }, 
        method.hclust = "ward.D") 
+0

こんにちはマイケル、 ご返信ありがとうございます。 残念ながら、コード行を実行した後もエラーメッセージが表示されます。 この時間、あなたのコードラインを実行した後、私は以下のようなメッセージが出る: _ERROR as.characterに(X): は「タイプのベクトルにタイプ「閉鎖」を強制することはできませんが 今起こっている任意のアイデアをcharacter'_? –

+0

サンプルデータを追加しました。これは私が提供したもので動作しますか?私は 'プラットフォーム'で何かがあるかもしれないと思う。 –

+0

正常に動作せず、同じエラーメッセージが再び表示されました。 私のデータマトリックス(実際にはデータフレームです)を二度チェックしましたが、すべて正常です。 私のデータマトリックス構造の最初の行は次のとおりです。 'data.frame':\t 17 obs。 13変数: $ P1:num 10.875 0.365 0 0 ... $ P2:num 3.289 0.303 0 0.733 0.928 ... $ P3:num 2.077 0.321 0 0.269 0 ... $ P4:num 1.417 0.767 0 0 0.294 ... –

関連する問題