pvclust& p中的p值结果hclust

时间:2017-04-23 20:34:50

标签: r cluster-analysis

我正在进行一些聚类分析,我试图弄清楚两件事:

1)如何最好地解释pvclust中p值的结果(他们建立的是什么?)

2)如何将这些结果翻译成hclust

我将mtcars数据集作为示例...

首先使用pvclust函数(使用欧氏距离和完整链接):

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

然后我生成树形图,红色框放在重要的簇周围(alpha = 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 个答案:

答案 0 :(得分:3)

对于Cross Validated而言,这可能比Stack Overflow更多?

我不确定您在转置数据集中使用pvclust的方式 - 已经过调整。 当您了解pvclust如何工作以及如何解释输出时,这一点就更加清晰了 由于我不是这种方法的专家,所以请回答这个问题。

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

pvclust输出

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

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

Bootstrap概率(BP)

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

在你的例子中,左边的第一个集群的BP = 0.31意味着这9辆车型(玛莎拉蒂宝来,克莱斯勒帝国,......,庞蒂亚火鸟)在31次运行中结束了同一个集群。 100个引导。
这意味着如果你要使用另一个汽车特征的随机样本(但这有意义吗?),这个集群只会出现在31%的情况下。注意:集群内的拓扑可能在bootstraps之间有所不同。检查的唯一标准是这些汽车是否属于同一集群,无论集群内部的关系如何。

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

您可以使用pvclust来测试观察(行)上的聚类吗?

如果您可以重新采样新数据集,则引导程序通常用于估计统计信息的可变性。 在您的示例中,如果您可以重新采样新数据集,则可能具有相同的汽车特征 但是一组不同的车型。汽车模型是这里的样本/观测值,重新采样观测值比特征/变量更有意义。 pvclust旨在用于测试群集 变量(列)不是观察(行)。这可能就是它在列上执行聚类的原因 而hclust在行上执行聚类。

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

在生态学中,您通常在网站上工作(=观察)x种(=变量)矩阵。并且通常基于其特定组成对站点执行聚类分析。在这种情况下,引导物种来测试站点簇的稳定性是没有意义的,因为整个社区应该用于表征站点,你不能随意丢弃一些物种......但是进行聚类分析是有意义的如果我们可以重新采样一组新的地点,那么物种和测试物种联合的稳定性。

近似无偏的p值&#34; (AU)

AU应该以与BP类似的方式解释,但被认为是无偏见的版本。 然而,它背后的理论更具技术性,超出了我的范围...... 所以,先验你应该使用这个值而不是BP来解释聚类,但我认为你在对变量进行重新采样时应该更加谨慎,因为偏差在这种情况下可能没有进行修正(这只是一个猜测,我不确切地知道它有多危险)。

BP经常被视为向下偏向的统计数据。例如,Paradis(2011)解释说,如果BP很高,则数据支持集群。但如果它很低,可能是因为集群没有被数据支持或因为偏见。但是Efron等人(1996)认为这是对引导方法实际测试的内容的错误解释,而BP并没有系统地向下偏向。他们提出了另一种计算p值的方法,以更好地同意置信水平和假设检验的标准思路。使用&#34;两级引导算法&#34;。铃木&amp; Shimodaira使用&#34;多步骤多尺度自举算法扩展了这种方法&#34;在pvclust中用于计算AU。

在此算法的第一步中,您将重做几次引导,但样本大小不同。在您的示例中,有11列,因此经典引导程序将重新取样,将这些列替换为11次并重复此nboot次数(默认值= 1000,您选择nboot = 10)。用&#34;多步骤 - 多尺度自举算法&#34;您重复此过程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.等。 (1996)系统发育树的Bootstrap置信水平,Proc。 Natl Acad。科学。 93:13429-13434

Paradis,E。(2011)使用R进行系统发育和进化分析,第1版。斯普林格。

Shimodaira H.(2004)使用多步多尺度自举重采样的区域的近似无偏测试,Ann。统计。 32:2616-2641

Suzuki,R.,Shimodaira,H。,(2006)Pvclust:用于评估层次聚类中的不确定性的R包。生物信息学22:1540-1542