2017-04-23 25 views
4

我跑一些聚类分析,我想弄清楚两两件事:在pvclust和在hclust结果p值

1)如何最好地解释p值在pvclust结果(那是什么,他们正在建立空?)

2)如何把这些结果hclust

我将使用mtcars数据集作为一个例子...

在使用pvclust功能第一(使用欧几里得远程CE和完整连接):

d.pv <- pvclust(t(mtcars), method = "euclidean", 
      method.hclust = "complete", nboot = 10) 

然后我产生我的树状图,并作为红色框周围放置显著集群(阿尔法= 0.95)

plot(d.pv) 
pvrect(d.pv, alpha = 0.95) 

我得到这个数字:

enter image description here

我还可以调用那名显著的意见:

pvpick(team.clus.pv, alpha = 0.95) 

但这些发现的意义是什么?我们在树状图中看到两个聚类,那么这两个聚类有何不同,这一重大发现(p = 0.02)呢?这很简单吗?

由于聚类分析是一种描述性/探索性技术,如果我使用hclust软件包构建它并指定我感觉有3个感兴趣的聚类,该怎么办?

d <- dist(mtcars, method = "euclidean") 
hc <- hclust(d, method = "complete") 
plot(hc) 
rect.hclust(hc, k = 3, border = "red") 

现在我的树状图如下所示:

enter image description here

因为我感兴趣的3个集群,有没有办法让pvclust使这3个集群之间的比较呢?或者,也许这不是pvclust比较的?这里的零假设是什么?

如果我查看pvclust产生的树状图,似乎在右边的红色框内,我有兴趣指定的其他两个簇(使用hclust)也具有显着的p值。我将如何报告或解释它?

+1

什么是pvclust? http://www.sigmath.es.osaka-u.ac。jp/shimo-lab/prog/pvclust/ –

+0

是的,谢谢你,亚当,在发布我的问题之前,我发现了该网站。问题在于它不能回答我的问题,即如何使用hclust测试集群的第二个问题。我想答案是,“主观”的集群并不存在,因为它们使用pvclust并不显着。 – user3585829

+0

您是否注意到红色和绿色的小数字,以及它们与“p值”的关系?但总体而言,这些p值看起来太“重要”,要逼真。显然,对于这种方法一切都很重要... –

回答

3

也许这是更多的交叉验证问题比堆栈溢出?

我不确定您在这里使用pvclust的方式 - 在转置数据集上 - 进行了修改。 当你了解pvclust的工作方式以及如何解释输出时,这更加清晰。
请接受这个答复,因为我不是这种方法的专家。

注意:mtcars数据集在行上有不同的车型,在列上有不同的汽车特征。根据行的特点对行(车型)进行聚类。

pvclust输出

pvclust提供2种类型的树状图红色和绿色的数字的每个节点显示的结果(灰色数字只是节点号)或通过print方法:

  • 绿色数字是Bootstrap Probability * 100(BP)并且有最直接的解释
  • 红色数字是Approximately Unbiased p-value * 100(AU)并且是BP的一个修正版本以限制偏差

引导概率(BP)

BP的解释非常简单。在您的示例中,pvclust将引导数据集的列(这里是汽车的特征)(即某些列将被删除,其他列将会多次出现),然后重新计算行之间的欧几里得距离并计算树状图。它将重复此nboot * length(r)次(默认为length(r) = 10),并且对于每次运行,它将检查每个集群是否同一组汽车一起存在于自举数据集的集群中。

在你的例子中,左边的第一个集群有一个BP = 0.31,这意味着这9个车型(玛莎拉蒂宝来,克莱斯勒帝国,Pontia Firebird)结束了在同一集群中的31个用完100个bootstraps。
这意味着,如果您要使用另一个汽车特征的随机样本(但是这是否合理?),这个群集只会出现在31%的案例中。注意:集群内的拓扑结构可能在引导程序中有所不同。检查的唯一标准是这些车辆是在同一个集群中,还是不在集群内部的关系。

至于你的第二个问题,你有这个每个节点的BP号码,所以你可以用同样的方式解释任何集群。例如,您用hclust(包含7辆汽车:Homet 4驱动器,...,AMC Javelin)显示的middel集群的BP = 0.39,这可以解释为如上所述。

你能使用pvclust来测试观察(行)上的聚类吗?

如果您可以重新采样新的数据集,bootstrap通常用于估计统计量的可变性。 在你的例子中,如果你可以重新采样一个新的数据集,你可能会有相同的汽车特征 ,但一组不同的汽车模型。汽车模型是这里的样本/观测数据,重新采样观测比特征/变量更有意义。 pvclust旨在用于测试变量(列)而不是观测值(行)的聚类 。这可能是为什么它在列 上执行群集,而hclust对这些行执行群集。

pvclust所使用的方法起源于phyllogenetic分析,您尝试根据基因的DNA或其他特征聚类来自不同物种的个体。然而,phyllogenetic或基因组病例是有点奇特的。在这种情况下,观察/样本 是个体(DNA的来源),变量/特征/描述符例如是基因或其表达水平。在这种情况下,根据基因对个体进行聚类并通过引导基因来测试聚类的稳定性是有意义的,因为基因是多方面的,并且在基因库中随机重新取样是合理的。

在生态学中,您通常在网站(=观测)x物种(=变量)矩阵上工作。根据网站的具体组成情况对网站进行聚类分析是很常见的。在这种情况下,引导物种以测试位点簇的稳定性是没有意义的,因为整个社区应该被用来表征位点,并且不能随意丢弃一些物种......但是进行聚类分析是有意义的如果我们可以对一组新的地点进行重新采样,则可以测试物种协会的稳定性。

近似无偏估计p值”(AU)

非盟应该以类似的方式被解释为BP,但被认为是一个公正的版本。 但是它背后的理论是更技术的超出了我达到... 因此,先验你应该使用这个值而不是BP来解释你的集群,但我想你应该更加谨慎,因为在你的例子中对变量进行了重新采样,因为偏见在这种情况下,修正可能还没有开发出来(这只是一个猜测,我不知道这是多么有风险)

英国石油公司往往表现为一个向下偏向的统计。例如Paradis(2011)解释说,如果BP很高,那么数据支持该集群。但是,如果数据不足,可能是因为该数据集没有被数据支持或因为偏见。但Efron等人(1996)认为,这是对bootstrap方法实际测试的误解,并且BP没有系统地向下偏向。他们提出了另一种方法来计算这个p值,“更好地符合置信水平和假设检验的标准思想”,并采用“两级自举算法”。 Suzuki & Shimodaira用“多步多尺度自举算法”扩展了这种方法,该算法在pvclust中用于计算AU。

在此算法的第一步中,您重做自举多次,但具有不同的样本大小。在你的例子中,有11列,所以经典引导将重新取样这些列11次,并重复这nboot时间(默认= 1000,你选择nboot = 10)。使用“多步多尺度自举算法”,您重复此过程1000 * 10次(默认情况下),但是样本大小为5,6,7,8,9,11,12,13,14和15.这由r该函数的参数提供了原始样本大小(此处为= 11)与自举样本大小(默认情况下为5至15)的比率。当您运行pvclust时,它将显示在控制台上:Bootstrap (r = 0.45)... Done.(即样本量为0.45*11 = 5的第一组引导程序)。

参考文献

Efron B.et al。 (1996)Bootstrap confidence levels for phylogenetic trees,Proc。 Natl Acad。科学。 93:13429-13434

Paradis,E.(2011)Analysis of Phylogenetics and Evolution with R,1st ed。斯普林格。

Shimodaira H.(2004)使用multistep-multiscale bootstrap resampling进行的近似无偏区域测试,Ann。统计。 32:2616-2641

Suzuki,R.,Shimodaira,H.,(2006)Pvclust:一种R包,用于评估层次聚类中的不确定性。 Bioinformatics 22:1540-1542

+0

感谢您的详细回复!那太棒了! – user3585829