为什么hclust在r中提供的群集与pvclust不同?

为什么hclust在r中提供的群集与pvclust不同?,r,hierarchical-clustering,R,Hierarchical Clustering,我试图在以下数据集上获得分层聚类分析的p值。pvclust和hclust生成的树状图完全不同。因为pvclust提到它们使用与hclust相同的方法,所以应该是相同的 require(vegan) test S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 1 1 1 1 1 1 1 0 1 1 0 2 0 0 1 0 0 0 0 0 0 0 3 1 0 0 1 1 0 0 0 1 1 4 1 0 1

我试图在以下数据集上获得分层聚类分析的p值。pvclust和hclust生成的树状图完全不同。因为pvclust提到它们使用与hclust相同的方法,所以应该是相同的

require(vegan) 
test

  S1 S2 S3 S4 S5 S6 S7 S8 S9 S10
1  1  1  1  1  1  1  0  1  1   0
2  0  0  1  0  0  0  0  0  0   0
3  1  0  0  1  1  0  0  0  1   1
4  1  0  1  0  1  1  0  1  0   1
5  0  1  0  1  0  0  0  0  1   0
6  1  0  1  0  1  1  0  0  0   1
7  1  1  0  1  0  0  1  0  1   0
8  1  1  0  1  0  1  1  0  1   0
9  1  0  1  0  1  1  0  1  0   0

div.norm=decostand(test,"normalize")
div.ch=vegdist(div.norm,"bray")
div.ch.UPGMA=hclust(div.ch,method = "average")
plot(div.ch.UPGMA)
这将生成以下树状图: 然后我尝试使用pvclust运行相同的数据集

require(pvclust)
test.tr=t(test)
result=pvclust(test.tr, method.dist="cor", method.hclust="average", nboot=1000)
plot(result)
我得到的树状图与hclust生成的树状图不同

有人建议我不应该转置数据。但这会生成一个树状图,其中列是聚集的(我不希望这样)


任何帮助都将不胜感激

您正在使用的层次聚类的
pvclust
实现依赖于引导重采样。这引入了一定程度的随机性,您可以在两次运行
pvclust
之间获得不同的结果,因此您应该期望它与
hclust
完全相同

此外,您可能在运行
pvclust
时注意到一些相当严重的警告:


由于
pvclust
的每一次迭代都有一个不可用的距离矩阵,因此解释结果时应格外小心,这可能会使它们失效并显著改变它们。

欢迎使用!请使用
dput
以可复制的方式共享您的数据(参见R标签说明)。此外,仅供将来参考,我们建议您在显示代码时不要包含
,以便可以在不进行编辑的情况下复制和粘贴。您的代码显示您使用了hclust和“bray”距离的标准化数据。在pvclust中,距离为“cor”,数据未标准化。相同的方法和数据预处理是否仍然存在问题?@nya:它不接受pvclust中的“bray”作为method.dist的有效条目。@user127213然后您需要根据分析要求选择一种方法。如果使用不同的方法,函数将返回不同的结果。非常感谢您的帮助。非常感谢您的帮助。然而,我不确定这是一个迭代的问题。如果我运行15次以上,我希望至少能找到一次相同的结果。有趣的是,使用pvclust创建的树状图非常一致,并且从未改变配置。它们是唯一的,并且与hclust生成的结果不同。@user127213不客气,但是由于每次采样的随机性,不要忘记,由于距离矩阵不合适,结果是完全无效的。这绝对不是小事。此外,你可能有点过于乐观,以为你可以得到一个相同的结果,仅仅因为它运行了15次(或1500次)。如果不是因为距离矩阵导致的算法中断,你可能会得到一个接近的结果,但没有理由它是相同的。
Bootstrap (r = 0.5)... Done.
Bootstrap (r = 0.6)... Done.
Bootstrap (r = 0.7)... Done.
Bootstrap (r = 0.8)... Done.
Bootstrap (r = 0.9)... Done.
Bootstrap (r = 1.0)... Done.
Bootstrap (r = 1.1)... Done.
Bootstrap (r = 1.2)... Done.
Bootstrap (r = 1.3)... Done.
Bootstrap (r = 1.4)... Done.
Warning messages:
1: inappropriate distance matrices are omitted in computation: r =  0.5 
2: inappropriate distance matrices are omitted in computation: r =  0.6 
3: inappropriate distance matrices are omitted in computation: r =  0.7 
4: inappropriate distance matrices are omitted in computation: r =  0.8 
5: inappropriate distance matrices are omitted in computation: r =  0.9 
6: inappropriate distance matrices are omitted in computation: r =  1 
7: inappropriate distance matrices are omitted in computation: r =  1.1 
8: inappropriate distance matrices are omitted in computation: r =  1.2 
9: inappropriate distance matrices are omitted in computation: r =  1.3 
10: inappropriate distance matrices are omitted in computation: r =  1.4