0

为了提高 R 的效率,我正在对 SPSS .sav 文件重新运行分层分析。数据集如下所示:

id  hour0 hour1 hour2 ... hour23
1   0.5   0.3   0.1       1.1  
2   0.3   0.3   0.2       0.6
3   1.0   0.8   0.5       0.9  

在 SPSS 中,我必须告诉软件哪个变量是案例标识符(此处为“id”),以便在创建矩阵时将其排除。但我在 R 中没有发现关于它的论点:

d <- dist(mydata, method = "euclidean") # distance matrix

而且,没有方法选项作为“平方欧几里得距离”(在 SPSS 中经常使用):

方法:要使用的距离度量。这必须是“euclidean”、“maximum”、“manhattan”、“canberra”、“binary”或“minkowski”之一。可以给出任何明确的子字符串。

当然,我可以通过导入这样的数据集来制作矩阵:

hour0 hour1 hour2 ... hour23  
0.5   0.3   0.1       1.1 
0.3   0.3   0.2       0.6 
1.0   0.8   0.5       0.9 

但我想在此处保留 id,因为我必须知道每个人在最终输出中属于哪个集群,例如 SPSS 层次聚类输出(clus# 表示 SPSS 提供了带有 # 个集群的解决方案):

id  hour0 hour1 hour2 ... hour23 clus7 clus6
1   0.5   0.3   0.1       1.1    3     3
2   0.3   0.3   0.2       0.6    7     6
3   1.0   0.8   0.5       0.9    1     1 

最后一个问题是在 R 层次聚类中没有“组内链接”的论点:

fit <- hclust(d, method="ward")  

方法:要使用的聚集方法。这应该是“ward”、“single”、“complete”、“average”、“mcquitty”、“median”或“centroid”之一(明确的缩写)。

在 SPSS 中,“平均”方法分为两种方法:“组间联系”和“组内联系”,在这两种方法之间做出选择时,输出可能会有所不同。

那么有谁知道我应该做什么或应该安装什么包?问题是:

  1. 矩阵创建中的平方欧几里德距离方法
  2. 案例标识符
  3. 属于输出的聚类
  4. 层次聚类中的组内链接方法
4

1 回答 1

1

也许这会有所帮助......但我不确定,因为我从未使用过 SPSS......

# 1)
# for square use
# according to:

http://r.789695.n4.nabble.com/squared-euclidean-distance-td883513.html

d <- d^2

# 2)
# take id´s as rownames
rownames(mydata) <- mydata[,1]
mydata <- mydata[, -1]
d <- dist(mydata, method = "euclidean")

fit <- hclust(d, method="ward")
plot(fit) # to see the tree

# 3)
max_k <- 5 # max members you want
cutree(fit, k=1:max_k)

# or for a fixed number eg. 5, get number
# of members per cluster
table(cutree(fit, k=5))

# ... and comparing two diffrent k values
table(cutree(fit, k=5), cutree(fit, k=8))


# 4)
# again I assume k=5
install.packages("fpc") # if not installed
require("fpc")
cluster.stats(d, cutree(fit, k=5))
于 2013-08-04T14:43:45.690 回答