Кластеризация временных рядов в R с помощью dtwclust
Я пытаюсь сделать свою первую попытку кластеризации временных рядов и мне нужна помощь. Я прочитал о пакетах tsclust и dtwclust для кластеризации временных рядов и решил попробовать dtwclust.
Мои данные состоят из дневных временных рядов температуры в разных местах (одно значение в день). Я хотел бы сгруппировать различные местоположения в пространственных кластерах из его температурного ряда. Моя самая первая попытка была (просто скопировал пример с опциями и поместил мои данные, temp.max3)
library(dtwclust)
hc<- tsclust(temp.max3, type = "h", k = 20L,
preproc = zscore, seed = 899,
distance = "sbd", centroid = shape_extraction,
control = hierarchical_control(method = "average"))
Но это дало мне это сообщение об ошибке
Ошибка в stats::hclust(stats::as.dist(distmat), метод, members = dots$members): NA/NaN/Inf при вызове внешней функции (аргумент 11)
Я должен был предварительно удалить все NA, присутствующие в любой серии, в результате временный кадр данных temp.max3 не содержит никакого значения NA.
summary(temp.max3)
8025 8400A 8416 8455
Min. : 6.40 Min. : 4.60 Min. : 6.00 Min. : 4.00
1st Qu.:18.80 1st Qu.:17.40 1st Qu.:18.20 1st Qu.:19.00
Median :23.20 Median :22.00 Median :22.60 Median :24.00
Mean :23.34 Mean :22.23 Mean :22.71 Mean :23.67
3rd Qu.:28.20 3rd Qu.:27.40 3rd Qu.:27.40 3rd Qu.:29.00
Max. :41.40 Max. :40.60 Max. :43.00 Max. :42.00
Данные выглядят как
head(temp.max3)
8025 8400A 8416 8455
13127 16.0 14.0 13.5 14
13128 17.8 15.6 17.4 20
13129 18.2 15.2 19.2 18
13130 17.2 15.0 17.6 19
13131 17.0 13.8 15.6 17
13132 21.0 14.0 18.2 19
где 8025, 8400A, 8416 и 8455 - коды станций (к настоящему времени их всего четыре, но в конечном итоге они будут увеличены до 120). Данные можно найти по этой ссылке. https://www.dropbox.com/s/xru4qnz8grhbxuo/data.csv?dl=0
Любая идея, ссылка на информацию или пример будет принята с благодарностью, заранее спасибо
1 ответ
Благодаря комментарию Alexis сообщение об ошибке исчезло и скрипт работает нормально.
library(dtwclust)
temp.max4<-t(temp.max3)
hc<- tsclust(temp.max4, type = "h", k = 2L,
preproc = zscore, seed = 899,
distance = "sbd", centroid = shape_extraction,
control = hierarchical_control(method = "average"))
с этим выводом
Алексис, извини, я не могу принять комментарий как решение.