【发布时间】:2016-12-16 18:14:37
【问题描述】:
我正在尝试获取以下数据集的层次聚类分析的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)
这会生成以下树状图: Cluster using hclust 然后我尝试使用 pvclust 运行相同的数据集。
require(pvclust)
test.tr=t(test)
result=pvclust(test.tr, method.dist="cor", method.hclust="average", nboot=1000)
plot(result)
我得到以下树状图,它与 hclust 生成的树状图不同。 cluster using pvclust
有人建议我不应该转置数据。但这会产生一个树状图,其中列聚集在一起(我不希望这样)。
任何帮助将不胜感激!
【问题讨论】:
-
欢迎来到 SO!请使用
dput以可重复的方式共享您的数据(请参阅 R 标签说明)。此外,为了将来参考,我们希望您在显示代码时不要包含>,以便无需编辑即可复制和粘贴。 -
您的代码显示您使用标准化数据来表示 hclust 和“bray”距离。在 pvclust 中,距离为“cor”且数据未标准化。相同的方法和数据预处理问题是否仍然存在?
-
@nya:它不接受 pvclust 中的“bray”作为 method.dist 的有效条目。
-
@user127213 然后需要根据分析需求选择方法。如果你使用不同的方法,函数应该返回不同的结果。