计数数据的聚类

时间:2013-07-02 14:19:16

标签: r count statistics cluster-analysis

我目前正在尝试在数据集中找到如下所示的群集:

         Dienstag 19 Mittwoch 20 Donnerstag 21 Freitag 22 Montag 25 Dienstag 26 Donnerstag 28
 [1,]           0           0             0          0         0           0            NA
 [2,]           0           0             0          0         0           0            NA
 [3,]           0           0             0          0         0           0            NA
 [4,]           0           0             0          0         1           0            NA
 [5,]           1           0             1          1         1           1            NA
 [6,]           0           0             0          0         0           0            NA
 [7,]           4           0             1          0         2           1            NA
 [8,]           0           1             2          1         0           2            NA
 [9,]           0           0             1          0         0           0            NA
[10,]           1           0             0          0         0           1             0
[11,]           2           0             1          0         0           5             0
[12,]           1           0             0          0         0           1             1
[13,]           0           1             0          0         0           0             0
[14,]           0           0             1          0         4           1             0

它对应于用户在给定日期和小时时使用应用程序的次数。

我想找到将使用情况与小时相关联的模式/群集,但我不知道如何管理它。如果你能给我一些关于方法的建议,那将会很有帮助。

2 个答案:

答案 0 :(得分:2)

聚类也有统计手段,但这是一种视觉方法。我很懒,并且使用了我熟悉的库来实现这个目标,但是使用一些基本工具可能会更有效地完成它。

## dat <-  read.table(text="         Dienstag.19 Mittwoch.20 Donnerstag.21 Freitag.22 Montag.25 Dienstag.26 Donnerstag.28
##  [1,]           0           0             0          0         0           0            NA
##  [2,]           0           0             0          0         0           0            NA
##  [3,]           0           0             0          0         0           0            NA
##  [4,]           0           0             0          0         1           0            NA
##  [5,]           1           0             1          1         1           1            NA
##  [6,]           0           0             0          0         0           0            NA
##  [7,]           4           0             1          0         2           1            NA
##  [8,]           0           1             2          1         0           2            NA
##  [9,]           0           0             1          0         0           0            NA
## [10,]           1           0             0          0         0           1             0
## [11,]           2           0             1          0         0           5             0
## [12,]           1           0             0          0         0           1             1
## [13,]           0           1             0          0         0           0             0
## [14,]           0           0             1          0         4           1             0", header=TRUE)


dat$hour <- factor(1:nrow(dat))
library(reshape2); library(qdap); library(ggplot2); library(plyr)
dat2 <- melt(dat)
dat2[, 2] <- beg2char(dat2[, 2], ".")
dat2 <- ddply(dat2, .(variable), transform,
   rescale = scale(value))

ggsave("heat.png")
ggplot(dat3, aes(variable, hour)) + geom_tile(aes(fill=rescale)) +
   scale_fill_gradient(low = "white", high = "red")

enter image description here

答案 1 :(得分:0)

大多数群集算法都会假设连续数据。当然,你可以将整数“转换”为双值,结果将不再像真正的连续值那样有意义。

我喜欢Tylers的视觉方法。如果有一个有意义的模式,你的大脑视觉皮层可能是发现它的最佳工具。