我一直在尝试使用R作为MVSP的替代方案进行聚类分析和PCA。然而,R使用我发现的所有函数,包括dist,bcdist,hclust和daisy函数,从MVSP中提供截然不同的输出。我还使用MVSP的距离表输出作为R中的距离矩阵,这产生了更多不同的输出。它需要使用欧氏距离,sorenson-dice系数和平均/ UPGMA聚类的聚类/树状图。第二个人/输入以及我自己在多台计算机和两个版本上重复了这些问题。 SAS给出了与MVSP相同的结果。
我可以使用另一个包(替代dist或hclust)或在R中查看/测试算法的方法吗?有没有什么可以导致这种情况,并且可以将R的版本回溯到一个明显更早的作品?
编辑;发现问题,我尝试的所有函数中使用的算法都没有使用Sorenson的系数,所以我使用了Proxy包,带有dist函数(和内置方法=“Dice”)。
答案 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
>
我使用了前三个内部组件的非常规印刷,只是为了说明它们的数字(如果你研究情节和输出,你可能会开始猜测它们的含义......)。
现在你告诉我们不在这里使用什么。