Comment trouver des regroupements (trajectoires) parmi les données longitudinales?

11

Le contexte

Je veux planter le décor avant d'étendre quelque peu la question.

J'ai des données longitudinales, des mesures sont prises sur des sujets environ tous les 3 mois, le résultat principal est numérique (comme en continu à 1dp) dans la plage de 5 à 14, la masse (de tous les points de données) étant comprise entre 7 et 10. Si je fais un l'intrigue des spaghettis (avec l'âge sur l'axe des x et une ligne pour chaque personne), c'est évidemment un gâchis car j'ai> 1500 sujets, mais il y a une voie claire vers des valeurs plus élevées avec un âge accru (et cela est connu).

La question plus large: ce que nous aimerions faire, c'est d'abord être en mesure d'identifier les groupes de tendance (ceux qui commencent haut et restent haut, ceux qui commencent bas et restent bas, ceux qui commencent bas et augmentent jusqu'à etc.) et ensuite nous pouvons examiner les facteurs individuels associés à l'appartenance à un «groupe de tendance».

Ma question ici concerne spécifiquement la première partie, le regroupement par tendance.

Question

  • Comment regrouper les trajectoires longitudinales individuelles?
  • Quel logiciel conviendrait pour l'implémenter?

J'ai examiné Proc Traj dans SAS et M-Plus suggéré par un collègue, que j'examine, mais j'aimerais savoir ce que les autres pensent à ce sujet.

nzcoops
la source
1
Ce n'est qu'un point de départ, mais peut-être consultez quelques-unes des réponses à cette question: stats.stackexchange.com/questions/2777/…
Jeromy Anglim
Merci Jeromy, l'option kml est intéressante, j'aime l'idée étant donné qu'elle est en R, mais je ne suis pas sûr de pouvoir utiliser leur cadre avec mes données, étant donné que les sujets viennent à des âges différents pour leurs visites, par opposition à `` visite 1 ''. visite 2 'etc et certains ont 10 visites tandis que d'autres ont 50 + ...
nzcoops
Vérifiez le kml package - qui semble fournir les fonctionnalités dont vous avez besoin. Le papier dans JoSS le décrit en détail. Aussi kml3d& kmlShapepourrait être d'intérêt.
radek

Réponses:

11

J'ai utilisé le Mfuzz dans R pour regrouper des ensembles de données de puces à ADN. Mfuzz utilise le "soft-clustering". Fondamentalement, les individus peuvent apparaître dans plus d'un groupe.

Comme @Andy le fait remarquer dans le commentaire, l'article original utilise des données CTN. Cependant, je soupçonne que cela devrait fonctionner correctement pour vos données discrètes. D'autant plus que vous explorez simplement l'ensemble de données. Voici un exemple rapide dans 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))

Donne l'intrigue suivante:

Clustering Mfuzz

csgillespie
la source
Merci pour la référence, je ne l'avais jamais rencontré auparavant. Cet algorithme de regroupement serait-il approprié avec des données distribuées à faible nombre comme l'OP l'avait mentionné (ou des données dichotomiques)? Le document de référence (Futschik et Carlisle 2005) a utilisé des données qui ont été transformées pour être continues.
Andy W
@Andy: Bon point. J'ai inclus une simulation rapide. Tout semble OK, mais il pourrait y avoir une solution plus optimale.
csgillespie
Merci @csgillespie, cherchera à essayer. Au fait, mes données sont continues et non discrètes, vous ne savez pas si la question n'était pas assez claire ou si c'était une faute de frappe dans votre réponse? Je dois restaurer mon R pour installer Mfuzz, que le plaisir commence.
nzcoops
@csgillespie - c'est très cool. Je joue avec elle en ce moment sur des données réelles. Savez-vous par hasard s'il existe un moyen d'estimer le nombre de groupes?
Macro
4

Je m'attends à ce qu'il y ait un package MPLUS pour faire ce dont vous avez besoin. Il y a un article dans Psychometrika sur presque exactement ce sujet

springerlink.com/content/25r110007g417187

sauf que les données sont binaires et les trajectoires sont des trajectoires de probabilité. Les auteurs utilisent l'analyse de classe latente (mise en œuvre en utilisant un modèle de mélange fini pénalisé) pour regrouper les trajectoires. Je sais aussi que le premier auteur a écrit d'autres articles il y a environ 10 ans avec Bengt Muthen (créateur de MPLUS) sur l'analyse des classes latentes dans des contextes similaires (avec des trajectoires). Par exemple,

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

semble très similaire à ce dont vous parlez, sauf que le résultat est binaire. Le cas continu est beaucoup plus simple, donc je ferais une recherche documentaire à l'envers (c.-à-d. Regarde les articles auxquels ces articles font référence) pour trouver quelque chose qui correspond à ce que vous avez décrit plus précisément.

Pour en savoir plus, vous pouvez demander directement aux propriétaires de MPLUS quel package vous devez utiliser pour faire ce dont vous avez besoin. Ils sont généralement assez rapides pour répondre et sont très utiles:

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

Macro
la source