1

添付のデータは単純化された例です。実際には何百人もの人がいて、何百もの時点があります。

同様の時系列を特定する方法を探しています。

ここにクラスターを決定するためのコードがいくつかありますが、これはまさに私が望むものではありません。

私が望むのは、1 人の人物を選択すると、最も類似した n 個の時系列の名前が返されることです。

つまり、n = 1 で Bob と入力すると Dave が返されますが、Sam と入力すると Bob が返されます (これらの名前は df で新しい列に入ります)。n = 2 の場合、最初の列には最も類似した時系列が含まれ、2 番目の列には次に類似したものが含まれます。これは K 最近隣人に似ていますが、時系列にまたがるため、個々の人は異なる「隣人」のセットを持ちます。

これが実現不可能または難しすぎる場合は、代わりに、グループの数ではなく、各グループの人数を指定したいと思います.

この例では 4 つのグループを指定しましたが、2 つのグループが 4 つになるわけではありません。

グループ B は 4 人、C と D は 1 人です。

        hc@cluster
James            A
Dave             B
Bob              B
Joe              C
Robert           A
Michael          B
Sam              B
Steve            D

library(dtwclust)

df <- data.frame(
  row.names = c("James", "Dave", "Bob", "Joe", "Robert", "Michael", "Sam", "Steve"),
  Monday    = c(82, 46, 96, 57, 69, 28, 100, 10),
  Tuesday   = c(77, 62, 112, 66, 54, 34, 107, 20),
  Wednesday = c(77, 59, 109, 65, 50, 37, 114, 30),
  Thursday  = c(73, 92, 142, 77, 54, 30, 128, 40),
  Friday    = c(74, 49, 99, 90, 50, 25, 111, 50),
  Saturday  = c(68, 26, 76, 81, 42, 28, 63, 60),
  Sunday    = c(79, 37, 87, 73, 53, 33, 79, 70)
)

hc<- tsclust(df, type = "h", k = 4,
             preproc = zscore, seed = 899,
             distance = "sbd", centroid = shape_extraction,
             control = hierarchical_control(method = "average"))

plot(hc)

yo <- as.data.frame(hc@cluster)
yo$`hc@cluster` <- LETTERS[yo$`hc@cluster`]
print(yo)
4

1 に答える 1