【问题标题】:R and SPSS: Different results for Hierarchical Cluster AnalysisR 和 SPSS:层次聚类分析的不同结果
【发布时间】:2021-03-10 05:22:10
【问题描述】:

我正在使用 Ward 方法对包含 1000 个观察值和 37 个变量(均为 5 点李克特量表)的数据集执行层次聚类分析。

首先,我通过 SPSS 运行分析

CLUSTER  Var01 to Var37
/METHOD WARD
/MEASURE=SEUCLID
/ID=ID
/PRINT CLUSTER(2,10) SCHEDULE
/PLOT DENDROGRAM
/SAVE CLUSTER(2,10).
    
FREQUENCIES CLU2_1.

我另外在 R 中进行了分析:

datA <- subset(dat, select = Var01:Var37)
dist <- dist(datA, method = "euclidean")
hc   <- hclust(d = dist, method = "ward.D2")
table(cutree(hc, k = 2))

生成的簇大小为:

      1    2
SPSS  712  288
R     610  390

这些结果显然让我感到困惑,因为它们本质上不同(在观察树状图时变得非常明显;也适用于 3-10 簇解决方案)。 "ward.D2" 考虑了平方距离,如果我没记错的话,所以我在这里包含了简单的距离矩阵。但是,我尝试了几种(组合)距离和聚类方法,例如EUCLID 而不是 SEUCLID,在 R 中对距离矩阵进行平方,应用 "ward.D" 方法,....我还查看了 SPSS 和 R 生成的距离矩阵,它们是相同的(应用相同的方法时)。最终,我从我的数据中排除了重复的案例(N=29),猜测在某个点(随机)分配时可能会导致差异。所有这些都没有导致 R 和 SPSS 中的输出匹配。

我尝试使用 cluster 包中的 agnes() 函数运行分析,这再次导致了与 SPSS 甚至 hclust() 相比的不同结果(但我猜这是另一篇文章的主题)。

程序/包之间的底层聚类过程是否不同?还是我忽略了一个关键细节?是否有一个“正确”的程序可以复制 SPSS 中产生的结果?

【问题讨论】:

标签: r spss hierarchical-clustering hclust


【解决方案1】:

如果距离矩阵相同且合并方法相同,则唯一应该产生不同结果的就是在两种算法中以不同方式处理绑定距离。绑定距离可能存在于原始全距离矩阵中,或者可能出现在连接过程中。如果一个程序搜索矩阵并在该步骤中找到两个或多个以最小值绑定的距离,并选择第一个,而另一个程序选择最后一个,或者一个或两个从关系中随机选择一个,则不同结果可能会发生。

我建议从一个小示例开始,将一些随机数据添加到值中以使固定距离不太可能,并查看这两个程序是否会在这些数据上产生匹配的结果。如果没有,那就是更深层次的问题。如果是这样,那么平局处理可能就是问题所在。

【讨论】:

    猜你喜欢
    • 2018-10-22
    • 2015-06-04
    • 2011-08-07
    • 2013-11-11
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 2015-01-31
    相关资源
    最近更新 更多