Я выполняю иерархическую кластеризацию с помощью пакета R под названием pvclust
, который основан на hclust
за счет включения начальной загрузки для расчета уровней значимости для полученных кластеров.
Рассмотрим следующий набор данных с 3 измерениями и 10 наблюдениями:
mat <- as.matrix(data.frame("A"=c(9000,2,238),"B"=c(10000,6,224),"C"=c(1001,3,259),
"D"=c(9580,94,51),"E"=c(9328,5,248),"F"=c(10000,100,50),
"G"=c(1020,2,240),"H"=c(1012,3,260),"I"=c(1012,3,260),
"J"=c(984,98,49)))
Когда я использую только hclust
, кластеризация работает нормально как для евклидовых мер, так и для мер корреляции:
# euclidean-based distance
dist1 <- dist(t(mat),method="euclidean")
mat.cl1 <- hclust(dist1,method="average")
# correlation-based distance
dist2 <- as.dist(1 - cor(mat))
mat.cl2 <- hclust(dist2, method="average")
Однако при использовании каждой настройки с pvclust
, как показано ниже:
library(pvclust)
# euclidean-based distance
mat.pcl1 <- pvclust(mat, method.hclust="average", method.dist="euclidean", nboot=1000)
# correlation-based distance
mat.pcl2 <- pvclust(mat, method.hclust="average", method.dist="correlation", nboot=1000)
... Я получаю следующие ошибки:
- Евклидово:
Error in hclust(distance, method = method.hclust) : must have n >= 2 objects to cluster
- Соотношение:
Error in cor(x, method = "pearson", use = use.cor) : supply both 'x' and 'y' or a matrix-like 'x'
.
Обратите внимание, что расстояние рассчитывается с помощью pvclust
, поэтому заранее рассчитывать расстояние не требуется. Также обратите внимание, что метод hclust
(среднее значение, медиана и т. Д.) Не влияет на проблему.
Когда я увеличиваю размерность набора данных до 4, pvclust
теперь работает нормально. Почему я получаю эти ошибки для pvclust
в 3-х измерениях и ниже, но не для hclust
? Кроме того, почему ошибки исчезают, когда я использую набор данных с более чем 4 измерениями?