Сравните состав кластера по последовательным временным точкам в R - PullRequest
0 голосов
/ 11 января 2020

В настоящее время я пытаюсь проанализировать отношения соседства объектов, перемещающихся во времени в 2D-системе координат. Именно мне хотелось бы кластеризовать объекты в зависимости от их близости друг к другу. Затем я хотел бы оценить, существует ли устойчивый кластер во времени.

До сих пор мне удавалось вычислить матрицы расстояний для каждой временной точки, содержащие евклидовы расстояния между всеми объектами. Тем не менее, я изо всех сил пытаюсь найти пакет R, который позволяет кластеризовать объекты с несколькими переменными (одна переменная = одно евклидово расстояние до другого объекта) с течением времени. Я могу выполнять иерархическую кластеризацию для каждой временной точки, но не знаю, как сравнивать кластеры между временными точками.

Кластер, момент времени = 1 enter image description here

Кластер, момент времени = 2 enter image description here

Этот код я использую для вычисления матрицы dist и hclust:

head(migrationfile %>% select(X, Y, Track, Time))
              X        Y Track Time
206330 272.0473 1211.049     2    0
206331 343.7157 1252.734     3    0
206332 294.7179 1267.360     4    0
206333 235.4818 1271.748     5    0
206334 402.9518 1279.793     7    0
206335 372.9681 1291.493     8    0

subset_migrationfile <- subset(migrationfile, migrationfile$Time == TimePoint)
timepoint_migrationfile <- subset_migrationfile %>% select(X, Y)
timepoint_migrationfile <- as.matrix(timepoint_migrationfile)
rownames(timepoint_migrationfile) <- subset_migrationfile$Track
dist_matrix <- dist(timepoint_migrationfile, method = "euclidean")

str(dist_matrix)
 'dist' num [1:1128] 141 203 207 279 323 ...
 - attr(*, "Size")= int 48
 - attr(*, "Labels")= chr [1:48] "20" "17" "2" "78" ...
 - attr(*, "Diag")= logi FALSE
 - attr(*, "Upper")= logi FALSE
 - attr(*, "method")= chr "euclidean"
 - attr(*, "call")= language dist(x = timepoint_migrationfile, method = "euclidean")

hlust_dist_matrix <- hclust(dist_matrix)
clusterheight <- 200

plot(hlust_dist_matrix, hang = -1)
cutree(hlust_dist_matrix, h = clusterheight)
rect.hclust(hlust_dist_matrix, h = clusterheight, border="red")

Буду признателен за любые сведения о том, как анализировать / сравнивать кластеры во времени!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...