在comato R中的Hopkins函数返回错误消息

时间:2017-07-17 12:52:43

标签: r cluster-analysis

我想测试从comato包中的hopkins()函数输出的Hopkins统计量,并使用以下可重现的代码:

#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#
# SIMPLE EXPERIMENTS TO CHECK THE EFFECT OF CLUSTERABILITY ON HOPKINS STATISTIC
#
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

###################################################################################
# CREATE THREE DATASETS OF LOW, MEDIUM AND HIGH CLUSTERABILITY
#################################################################################

low1 <- data.table(V1 = rnorm(500, mean = 0, sd = 1), V2 = rnorm(500, mean = 0, sd = 1), Cluster = as.factor(rep(1, 500)))
low2 <- data.table(V1 = rnorm(500, mean = 0, sd = 1), V2 = rnorm(500, mean = 0, sd = 1), Cluster = as.factor(rep(2, 500)))
low <- rbind(low1, low2)


#---------------------------------------------------------------------------------------------
medium1 <- data.table(V1 = rnorm(500, mean = 0, sd = 1), V2 = rnorm(500, mean = 0, sd = 1), Cluster = as.factor(rep(1, 500)))
medium2 <- data.table(V1 = rnorm(500, mean = 2, sd = 1), V2 = rnorm(500, mean = 2, sd = 1), Cluster = as.factor(rep(2, 500)))
medium <- rbind(medium1, medium2)

#----------------------------------------------------------------------------------------------

high1 <- data.table(V1 = rnorm(500, mean = 0, sd = 1), V2 = rnorm(500, mean = 0, sd = 1), Cluster = as.factor(rep(1, 500)))
high2 <- data.table(V1 = rnorm(500, mean = 4, sd = 1), V2 = rnorm(500, mean = 4, sd = 1), Cluster = as.factor(rep(2, 500)))
high <- rbind(high1, high2)

#########################################################################################
# VISUALIZE THE CLUSTERS
##########################################################################################


#---------------------------------------------------------------
# LOW
#--------------------------------------------------------------

ggplot(low, aes(V1, V2, colour = Cluster )) +
  geom_point(size = 2.5, alpha = 0.5) + ggtitle("Low Clusterability") + theme_economist()

enter image description here

#---------------------------------------------------------------
# MEDIUM
#--------------------------------------------------------------

ggplot(medium, aes(V1, V2, colour = Cluster )) +
  geom_point(size = 2.5, alpha = 0.5) + ggtitle("Medium Clusterability") + theme_economist()

enter image description here

#---------------------------------------------------------------
# HIGH
#--------------------------------------------------------------

ggplot(high, aes(V1, V2, colour = Cluster )) +
  geom_point(size = 2.5, alpha = 0.5) + ggtitle("High Clusterability") + theme_economist()

enter image description here

##########################################################################################
# DETERMINE THE HOPKINS STATISTIC FOR EACH OF THE AFOREMENTIONED CASES
############################################################################################

library(comato)

hopkins_low_comato <- Hopkins.index(low[, .(V1, V2)])

hopkins_medium_comato <- Hopkins.index(medium[, .(V1, V2)])

hopkins_high_comato <- Hopkins.index(high[, .(V1, V2)])

但是我收到以下错误消息:

enter image description here

您的建议将不胜感激

1 个答案:

答案 0 :(得分:0)

基本上,该函数只接受一个矩阵作为数据类型。 因此,您可以在矩阵中转换数据框并以这种方式使用该函数:

low_matrix <- as.matrix(low[, .(V1, V2)])
hopkins_low_comato <- Hopkins.index(low_matrix)