Dist和hclust功能输出意外/不正确的输出

时间:2013-11-25 19:57:38

标签: r cluster-analysis pca euclidean-distance multivariate-testing

我一直在尝试使用R作为MVSP的替代方案进行聚类分析和PCA。然而,R使用我发现的所有函数,包括dist,bcdist,hclust和daisy函数,从MVSP中提供截然不同的输出。我还使用MVSP的距离表输出作为R中的距离矩阵,这产生了更多不同的输出。它需要使用欧氏距离,sorenson-dice系数和平均/ UPGMA聚类的聚类/树状图。第二个人/输入以及我自己在多台计算机和两个版本上重复了这些问题。 SAS给出了与MVSP相同的结果。

我可以使用另一个包(替代dist或hclust)或在R中查看/测试算法的方法吗?有没有什么可以导致这种情况,并且可以将R的版本回溯到一个明显更早的作品?

编辑;发现问题,我尝试的所有函数中使用的算法都没有使用Sorenson的系数,所以我使用了Proxy包,带有dist函数(和内置方法=“Dice”)。

1 个答案:

答案 0 :(得分:2)

相信我,hclust()dist()已经被使用了很多次,并且还被很多看了。与推荐的软件包cluster中的对应方类似,功能agnes()daisy()。实践中的分层聚类算法必须决定如何订购树形图分支(在每个分割:左边是什么,哪些是正确的?),例如agnes()hclust()的左右分配策略不同,但在其他方面明显重合 iff 选择相同的方法。 您是否仔细阅读过帮助页面?例如。 hclust默认为“完成”而 agnes()默认为更明智的“平均值”。

但是如果你已经看到dist()的“问题”,那么你一定还没有掌握如何正确地将数据输入R ......或类似的东西!

让我们使用简单的一维数据,(因此没有问题 dist()),即前5个素数,并显示R的作用,然后 试着证明为什么这不应该100%正确

> (D <- dist(setNames(, c(2,3,5,7,11))))
   2 3 5 7
3  1      
5  3 2    
7  5 4 2  
11 9 8 6 4
> hc <- hclust(D)
> plot(hc) ## --- see the attached image [1]

现在与包agnes()中的cluster相同,仔细确保 使用相同的方法:

> library(cluster)
> ag <- agnes(D, method="complete")
> print.default(hc[1:3])
$merge
 [,1] [,2]
[1,]   -1   -2
[2,]   -3   -4
[3,]    1    2
[4,]   -5    3

$height
[1] 1 2 5 9

$order
[1] 5 1 2 3 4

> 

我使用了前三个内部组件的非常规印刷,只是为了说明它们的数字(如果你研究情节和输出,你可能会开始猜测它们的含义......)。

现在你告诉我们在这里使用什么。