Кілька напрямків аналізу поздовжніх даних були обговорені у посиланні, наданому @Jeromy, тому я пропоную вам уважно прочитати їх, особливо ті, які стосуються функціонального аналізу даних. Спробуйте googling для "Функціональне кластеризація поздовжніх даних" або панель інструментів PACE Matlab, яка спеціально стосується кластеризації на основі моделей траєкторій з нерегулярною вибіркою (Пенг і Мюллер, кластеризація на основі відстані рідко спостережуваних стохастичних процесів, з додатками до онлайн-аукціонів , Літописи прикладної статистики 2008 р. 2: 1056). Я можу собі уявити, що може бути хороша статистична база для фінансових часових рядів, але я не знаю про це.
В kml
основному пакет покладається на k-засоби, що працюють (за замовчуванням) на евклідових відстанях між вимірюваннями, що спостерігаються на особин. Що називається траєкторією тільки ряд спостережуваних значень для індивідуального , і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 ). Я не показую масштабовану версію .