我想测试从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()
#---------------------------------------------------------------
# MEDIUM
#--------------------------------------------------------------
ggplot(medium, aes(V1, V2, colour = Cluster )) +
geom_point(size = 2.5, alpha = 0.5) + ggtitle("Medium Clusterability") + theme_economist()
#---------------------------------------------------------------
# HIGH
#--------------------------------------------------------------
ggplot(high, aes(V1, V2, colour = Cluster )) +
geom_point(size = 2.5, alpha = 0.5) + ggtitle("High Clusterability") + theme_economist()
##########################################################################################
# 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)])
但是我收到以下错误消息:
您的建议将不胜感激
答案 0 :(得分:0)
基本上,该函数只接受一个矩阵作为数据类型。 因此,您可以在矩阵中转换数据框并以这种方式使用该函数:
low_matrix <- as.matrix(low[, .(V1, V2)])
hopkins_low_comato <- Hopkins.index(low_matrix)