将“'ward'”方法与 pvclust R 包一起使用时出错
Error when using ''ward'' method with pvclust R package
我在尝试使用 pvclust 包进行聚类分析时遇到了一些麻烦。
具体来说,我有一个由物种(行)和采样站(列)组成的数据矩阵。我想执行 CA 以便根据我的物种丰度(我之前已经对它进行了 log(x+1) 转换)对我的采样站进行分组。
一旦充分准备好我的矩阵,我就尝试 运行 根据 pvclust 包的 CA,使用 Ward 的聚类方法和 Bray-Curtis 作为距离索引。但是,每次我收到以下错误消息:
''hclust 错误(距离,方法 = method.hclust):
无效的聚类方法''
然后我尝试使用另一种聚类方法执行相同的分析,我没有遇到任何问题。我还尝试使用 vegan 包中的 hclust 函数执行相同的分析,我也完全没有问题。分析运行没有任何问题。
为了更好地理解我的问题,我将显示部分矩阵和
我用来执行分析的脚本:
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是我的采样站,最左边的行号是我的不同物种。我将此示例矩阵表示为“'platforms'”。
之后,我使用了以下代码行:
dist <- function(x, ...){
vegdist(x, ...)
}
result<-pvclust(platforms,method.dist = "bray",method.hclust = "ward")
值得注意的是我 运行 前三个代码行,因为 bray-curtis 索引最初在 pvclust 包中不可用。因此,运行这些代码行允许我在 pvclust 函数中指定 bray-curtis 索引
有谁知道为什么它不能与 pvclust 包一起使用?
任何帮助将不胜感激。
亲切的问候,
玛丽
有两个相关问题:
- 调用
method.hclust
时需要传递hclust兼容方法。理论上 pvclust
检查 ward
并转换为 ward.D
,但您可能想要传递 ward.D
或 ward.D2
的(正确的)名称。
- 您不能以这种方式覆盖
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")
我在尝试使用 pvclust 包进行聚类分析时遇到了一些麻烦。
具体来说,我有一个由物种(行)和采样站(列)组成的数据矩阵。我想执行 CA 以便根据我的物种丰度(我之前已经对它进行了 log(x+1) 转换)对我的采样站进行分组。
一旦充分准备好我的矩阵,我就尝试 运行 根据 pvclust 包的 CA,使用 Ward 的聚类方法和 Bray-Curtis 作为距离索引。但是,每次我收到以下错误消息:
''hclust 错误(距离,方法 = method.hclust): 无效的聚类方法''
然后我尝试使用另一种聚类方法执行相同的分析,我没有遇到任何问题。我还尝试使用 vegan 包中的 hclust 函数执行相同的分析,我也完全没有问题。分析运行没有任何问题。
为了更好地理解我的问题,我将显示部分矩阵和 我用来执行分析的脚本:
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是我的采样站,最左边的行号是我的不同物种。我将此示例矩阵表示为“'platforms'”。
之后,我使用了以下代码行:
dist <- function(x, ...){
vegdist(x, ...)
}
result<-pvclust(platforms,method.dist = "bray",method.hclust = "ward")
值得注意的是我 运行 前三个代码行,因为 bray-curtis 索引最初在 pvclust 包中不可用。因此,运行这些代码行允许我在 pvclust 函数中指定 bray-curtis 索引
有谁知道为什么它不能与 pvclust 包一起使用?
任何帮助将不胜感激。
亲切的问候,
玛丽
有两个相关问题:
- 调用
method.hclust
时需要传递hclust兼容方法。理论上pvclust
检查ward
并转换为ward.D
,但您可能想要传递ward.D
或ward.D2
的(正确的)名称。 - 您不能以这种方式覆盖
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")