简体   繁体   English

R中的分层聚类-'pvclust'问题

[英]Hierarchical Clustering in R - 'pvclust' Issues

I have made a reproducible example where I am having trouble with pvclust. 我举了一个可重复的例子,说明我在使用pvclust时遇到了麻烦。 My goal is to pick the ideal clusters in a hierarchal cluster dendogram. 我的目标是在层次聚类树状图中选择理想的聚类。 I've heard of 'pvclust' but can't figure out how to use it. 我听说过“ pvclust”,但不知道如何使用它。 Also if anyone has other suggestions besides this to determine the ideal clusters it will be really helpful. 另外,如果除了此以外还有其他建议来确定理想的群集,这将非常有帮助。

My code is provided. 提供了我的代码。

library(pvclust)    

employee<- c('A','B','C','D','E','F','G','H','I',
         'J','K','L','M','N','O','P',
         'Q','R','S','T',
         'U','V','W','X','Y','Z')   
salary<-c(20,30,40,50,20,40,23,05,56,23,15,43,53,65,67,23,12,14,35,11,10,56,78,23,43,56) 
testing90<-cbind(employee,salary)
testing90<-as.data.frame(testing90)
head(testing90)
testing90$salary<-as.numeric(testing90$salary)
row.names(testing90)<-testing90$employee
testing91<-data.frame(testing90[,-1])
head(testing91)
row.names(testing91)<-testing90$employee
d<-dist(as.matrix(testing91))
hc<-hclust(d,method = "ward.D2")
hc
plot(hc)

par(cex=0.6, mar=c(5, 8, 4, 1))
plot(hc, xlab="", ylab="", main="", sub="", axes=FALSE)
par(cex=1)
title(xlab="Publishers", main="Hierarchal Cluster of Publishers by eCPM")
axis(2)

fit<-pvclust(d, method.hclust="ward.D2", nboot=1000, method.dist="eucl") 

An error came up stating: 出现错误,指出:

Error in names(edges.cnt) <- paste("r", 1:rl, sep = "") : 
  'names' attribute [2] must be the same length as the vector [0]

A solution would be to force your object d into a matrix . 一种解决方案是将您的对象d强制为matrix

From the helpfile of pvclust : pvclust的帮助文件中:

data numeric data matrix or data frame. 数据数字数据矩阵或数据帧。

Note that by forcing an object of type dist into a marix, as it was a diagonal it will get 'reflected' (math term escapes me right now), you can check the object that is being taken into account with the call: 请注意,通过将dist类型的对象强行插入到对角线中,因为它是对角线,它会被“反射”(数学术语现在就逃避了我),您可以检查调用中考虑的对象:

as.matrix(d)

This would be the call you are looking for: 这将是您正在寻找的电话:

#note that I can't 
pvclust(as.matrix(d), method.hclust="ward.D2", nboot=1000, method.dist="eucl")
#Bootstrap (r = 0.5)... Done.
#Bootstrap (r = 0.58)... Done.
#Bootstrap (r = 0.69)... Done.
#Bootstrap (r = 0.77)... Done.
#Bootstrap (r = 0.88)... Done.
#Bootstrap (r = 1.0)... Done.
#Bootstrap (r = 1.08)... Done.
#Bootstrap (r = 1.19)... Done.
#Bootstrap (r = 1.27)... Done.
#Bootstrap (r = 1.38)... Done.
#
#Cluster method: ward.D2
#Distance      : euclidean
#
#Estimates on edges:
#
#      au    bp se.au se.bp      v      c  pchi
#1  1.000 1.000 0.000 0.000  0.000  0.000 0.000
#2  1.000 1.000 0.000 0.000  0.000  0.000 0.000
#3  1.000 1.000 0.000 0.000  0.000  0.000 0.000
#4  1.000 1.000 0.000 0.000  0.000  0.000 0.000
#5  1.000 1.000 0.000 0.000  0.000  0.000 0.000
#6  1.000 1.000 0.000 0.000  0.000  0.000 0.000
#7  1.000 1.000 0.000 0.000  0.000  0.000 0.000
#8  1.000 1.000 0.000 0.000  0.000  0.000 0.000
#9  1.000 1.000 0.000 0.000  0.000  0.000 0.000
#10 1.000 1.000 0.000 0.000  0.000  0.000 0.000
#11 1.000 1.000 0.000 0.000  0.000  0.000 0.000
#12 1.000 1.000 0.000 0.000  0.000  0.000 0.000
#13 1.000 1.000 0.000 0.000  0.000  0.000 0.000
#14 1.000 1.000 0.000 0.000  0.000  0.000 0.000
#15 1.000 1.000 0.000 0.000  0.000  0.000 0.000
#16 1.000 1.000 0.000 0.000  0.000  0.000 0.000
#17 1.000 1.000 0.000 0.000  0.000  0.000 0.000
#18 1.000 1.000 0.000 0.000  0.000  0.000 0.000
#19 0.853 0.885 0.022 0.003 -1.126 -0.076 0.058
#20 0.854 0.885 0.022 0.003 -1.128 -0.073 0.069
#21 0.861 0.897 0.022 0.003 -1.176 -0.090 0.082
#22 0.840 0.886 0.024 0.003 -1.100 -0.106 0.060
#23 0.794 0.690 0.023 0.005 -0.658  0.162 0.591
#24 0.828 0.686 0.020 0.005 -0.716  0.232 0.704
#25 1.000 1.000 0.000 0.000  0.000  0.000 0.000

Note that this method will fix your call, but the validity of the clustering method, and quality of your data is for you to decide. 请注意,此方法将解决您的呼叫,但是群集方法的有效性和数据质量由您决定。 Your MRE was trusted. 您的MRE是可信任的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM