tests/testthat/test-utils_cluster.R

test_that("`utils_cluster_silhouette()`, `utils_cluster_hclust_optimizer()` and `utils_cluster_kmeans_optimizer()` works", {

  tsl <- tsl_aggregate(
    tsl_subset(tsl_initialize(
      x = covid_prevalence,
      name_column = "name", time_column = "time"
    ), names = 1:10),
    new_time = "months", fun = max
  )

  psi_matrix <- distantia_matrix(distantia(tsl = tsl, lock_step = TRUE))
  hclust_optimization <- utils_cluster_hclust_optimizer(d = psi_matrix)

  expect_equal(class(hclust_optimization), "data.frame")
  expect_equal(colnames(hclust_optimization), c("clusters", "method", "silhouette_mean"))

  psi_hclust <- stats::hclust(d = as.dist(psi_matrix[[1]]))
  psi_hclust_labels <- stats::cutree(tree = psi_hclust, k = 3, )
  expect_equal(colnames(utils_cluster_silhouette(labels = psi_hclust_labels, d = psi_matrix)), c("name", "cluster", "silhouette_width"))

  kmeans_optimization <- utils_cluster_kmeans_optimizer(d = psi_matrix)

  expect_equal(class(kmeans_optimization), "data.frame")
  expect_equal(colnames(kmeans_optimization), c("clusters", "silhouette_mean"))

  psi_kmeans <- stats::kmeans(x = as.dist(psi_matrix[[1]]), centers = 3)
  expect_equal(colnames(utils_cluster_silhouette(labels = psi_kmeans$cluster, d = psi_matrix)), c("name", "cluster", "silhouette_width"))

})
BlasBenito/distantia documentation built on Feb. 21, 2025, 2:48 a.m.