我使用daisy
创建了一个相异矩阵,然后尝试使用PAM
函数进行聚类,但出现了错误。聚类方法用于消费者人口统计的市场细分研究。
根据另一篇帖子,当两个样本存在NA
值时,就会出现错误。没有办法计算差异。链接如下:R集群生成错误消息。似乎我的data.frame
是如此稀疏,以至于相异矩阵具有NA
值。
问题:使daisy
矩阵不具有NA
值的最佳方法是什么?我应该填写序号栏吗?
在一个名为Store4df的data.frame
中,我对34个ordinal
和NA
变量进行了13163次观测。data.frame
中没有一行具有所有NA
值。这是要检查的代码:
> which(rowSums(is.na(Store4df))==ncol(Store4df))
#named integer(0)
以下是5个观测值中前5个变量的样本:
> head(Store4df, n=5)
Age Gender HouseholdIncome MaritalStatus PresenceofChildren HomeOwnerStatus
2 55-64 Female 50k-75k Single No Own
3 <NA> Female <NA> <NA> <NA> <NA>
4 <NA> Male <NA> <NA> <NA> <NA>
7 <NA> Male <NA> <NA> <NA> <NA>
9 65+ Male 75k-100k Single No Own
我使用了CRAN的cluster
包中的PAM
聚类方法,其中包含三个聚类。
> #Import cluster package
> library(cluster)
> #Create dissimilarity matrix
> #Gower coefficient for finding distance between mixed variable
> daisy4 <- daisy(Store4df, metric = "gower", type = list(ordratio = c(1:34)))
> #Pam algorithm with 3 clusters
> k4answers <- pam(daisy4, 3, diss = TRUE)
> k4answers <- pam(daisy4, 3, diss = TRUE)
#Error in pam(daisy4, 3, diss = TRUE) :
#NA values in the dissimilarity matrix not allowed
我找到了问题的解决方案。对于序数,我决定取中值并输入到NA
。我不能创建一个缺少值的欧氏距离矩阵。无法计算值和不存在的值之间的距离。