Як знайти групування (траєкторії) серед поздовжніх даних?


11

Контекст

Я хочу встановити сцену, перш ніж дещо розширювати питання.

У мене є поздовжні дані, вимірювання, проведені на суб'єктах приблизно кожні 3 місяці, первинний результат є числовим (як у безперервному до 1dp) в межах від 5 до 14, а основна маса (усіх точок даних) становить від 7 до 10. Якщо я роблю сюжет спагетті (з віком на осі x та лінією для кожної людини) - це безлад, очевидно, як у мене> 1500 предметів, але чітко йде в бік вищих значень із збільшенням віку (і це відомо).

Питання ширше: що ми хотіли б зробити, це спершу бути в змозі визначити трендові групи (ті, які починаються з високих і залишаються високими, ті, які починаються низькими і залишаються низькими, ті, що починаються низькими і збільшуються до високих тощо), а потім ми можемо подивіться на окремі фактори, пов'язані з членством у «тренд-групі».

Моє запитання тут стосується першої частини, групування за тенденцією.

Питання

  • Як можна згрупувати окремі поздовжні траєкторії?
  • Яке програмне забезпечення було б придатне для цього?

Я подивився на Proc Traj в SAS та M-Plus, запропонованому колегою, якого я розглядаю, але хотів би знати, що думають інші щодо цього.


1
Це лише відправна точка, але, можливо, ознайомтеся з деякими відповідями на це питання: stats.stackexchange.com/questions/2777/…
Джеромі Англім

Дякую, Єромі, варіант kml цікавий, мені подобається ідея, що його дано в R, але я не впевнений, що я можу використовувати їхні рамки зі своїми даними, враховуючи, що суб'єкти відвідують різні епохи для своїх відвідувань на відміну від «відвідування 1». відвідати 2 'тощо, а деякі - 10 відвідувань, а інші - 50 + ...
nzcoops

Перевірте kml пакет - який, здається, забезпечує необхідну функціональність. Папір у JoSS описує це докладно. Також kml3dі kmlShapeможе становити інтерес.
radek

Відповіді:


11

Я використовував Mfuzz в R для кластеризації наборів даних мікромасив часу. Mfuzz використовує "м'яку кластеризацію". В основному особи можуть з’являтися в більш ніж одній групі.

Як в коментарі вказує @Andy, в оригінальному документі використовуються дані CTN. Однак я підозрюю, що він повинен працювати добре для ваших дискретних даних. Тим більше, що ви просто вивчаєте набір даних. Ось короткий приклад на R:

##It's a bioconductor package
library(Mfuzz)
library(Biobase)

## Simulate some data
## 6 time points and 90 individuals
tps = 6;cases = 90
d = rpois(tps*cases, 1)  ##Poisson distribution with mean 1
m = matrix(d, ncol=tps, nrow=cases)

##First 30 individuals have increasing trends
m[1:30,] = t(apply(m[1:30,], 1, cumsum))

##Next 30 have decreasing trends
##A bit hacky, sorry
m[31:60,] = t(apply(t(apply(m[31:60,], 1, cumsum)), 1, rev))

##Last 30 individuals have random numbers from a Po(1)

##Create an expressionSet object
tmp_expr = new('ExpressionSet', exprs=m)

##Specify c=3 clusters
cl = mfuzz(tmp_expr, c=3, m=1.25)
mfuzz.plot(tmp_expr,cl=cl, mfrow=c(2, 2))

Надає наступний сюжет:

Кластеризація Mfuzz


Дякую за довідку, я раніше не стикався з цим. Чи буде цей алгоритм кластеризації доцільним для розподілених даних з низькою кількістю, як згадували ОП (або дихотомічні дані)? У довідковому документі (Futschik & Carlisle 2005) використовувались дані, які перетворювались на безперервне.
Andy W

@Andy: Гарний момент. Я включив швидке моделювання. Все здається нормальним, але може бути і більш оптимальне рішення.
csgillespie

Дякуємо @csgillespie, будемо схоті спробувати це. До речі, мої дані безперервно не дискретні, не впевнені, що питання було недостатньо чітким чи це була помилка у вашій відповіді? Доведеться відкатати мій R, щоб встановити Mfuzz, нехай починається веселощі.
nzcoops

@csgillespie - це дуже круто. Я зараз пограю з цим на деяких реальних даних. Чи знаєте ви, чи існує спосіб його оцінити кількість груп?
Макрос

4

Я б очікував, що є пакет MPLUS, щоб зробити все, що вам потрібно. У «Психометріці» є документ про майже саме цю тему

springerlink.com/content/25r110007g417187

крім даних є бінарними, а траєкторії є траєкторіями ймовірності. Автори використовують прихований аналіз класу (реалізований із застосуванням пенізованої моделі кінцевих сумішей) для групування траєкторій. Я також знаю, що перший автор написав кілька інших робіт близько 10 років тому з Бенгтом Мутен (творець MPLUS) про аналіз прихованих класів у подібних умовах (з траєкторіями). Наприклад,

http://onlinelibrary.wiley.com/doi/10.1111/j.0006-341X.1999.00463.x/ab Abstract

звучить дуже схоже на те, про що ви говорите, за винятком того, що результат є двійковим. Безперервний випадок набагато простіший, тому я б здійснив пошук літератури в зворотному напрямку (тобто перегляньте статті, на які посилаються ці статті), щоб знайти щось, що відповідає тому, що ви описали точніше.

Щоб дізнатися більше, ви можете запитати власників MPLUS безпосередньо, який пакунок потрібно використовувати, щоб зробити те, що вам потрібно. Вони, як правило, досить швидко реагують і дуже корисні:

http://www.statmodel.com/cgi-bin/discus/discus.cgi

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.