Несколько ссылок для анализа продольных данных обсуждались в ссылке, предоставленной @Jeromy, поэтому я бы посоветовал вам внимательно прочитать их, особенно те, которые касаются функционального анализа данных. Попробуйте поискать в Google «Функциональная кластеризация продольных данных» или набор инструментов PACE Matlab, который конкретно посвящен кластеризации нерегулярных выборок на основе моделей (Пенг и Мюллер, Кластеризация на основе расстояний редко наблюдаемых случайных процессов, с приложениями для онлайн-аукционов , Анналы прикладной статистики 2008 2: 1056). Я могу представить, что может быть хорошая статистическая структура для финансовых временных рядов, но я не знаю об этом.
kml
Пакет в основном зависит от к-средств, работающих (по умолчанию) на евклидовых расстояний между измерений , наблюдаемых на лиц. То, что называется траекторией, является просто серией наблюдаемых значений для отдельных , иtniyi=(yi1,yi2,…,yit)d(yi,yj)=t−1∑tk=1(yik−yjk)2−−−−−−−−−−−−−−−−√, Недостающие данные обрабатываются с помощью небольшой модификации предыдущей меры расстояния (корректировка Гауэра), связанной с схемой вменения, подобной ближайшему соседу (для вычисления критерия Калинского). Поскольку я не представляю, как будут выглядеть ваши реальные данные, я не могу сказать, сработает ли это. По крайней мере, он работает с продольными кривыми роста, «полиномиальной» формой, но я сомневаюсь, что это позволит вам обнаруживать очень специфические закономерности (например, локальные минимумы / максимумы в определенные моменты времени с различными точками времени между кластерами, путем перевода для пример). Если вы заинтересованы в кластеризации возможно смещенных кривых, то вам обязательно нужно искать другие решения; Функциональная кластеризация и выравнивание , от Sangalli et al., И ссылки в них могут обеспечить хорошую отправную точку.
Ниже я покажу вам некоторый код, который может помочь поэкспериментировать с ним (мое начальное значение обычно устанавливается на 101, если вы хотите воспроизвести результаты). В основном, для использования kml
вам просто нужно построить clusterizLongData
объект ( id
номер для первого столбца и измерений в следующих столбцах).t
library(lattice)
xyplot(var0 ~ date, data=test.data, groups=store, type=c("l","g"))
tw <- reshape(test.data, timevar="date", idvar="store", direction="wide")
parallel(tw[,-1], horizontal.axis=F,
scales=list(x=list(rot=45,
at=seq(1,ncol(tw)-1,by=2),
labels=substr(names(tw[,-1])[seq(1,ncol(tw)-1,by=2)],6,100),
cex=.5)))
library(kml)
names(tw) <- c("id", paste("t", 1:(ncol(tw)-1)))
tw.cld <- as.cld(tw)
cld.res <- kml(tw.cld,nbRedrawing=5)
plot(tw.cld)
Следующие два рисунка представляют собой необработанные смоделированные данные и пятикластерное решение (согласно критерию Калинского, также используемому в пакете fpc ). Я не показываю уменьшенную версию .