Comment regrouper les variables longitudinales?


10

J'ai un tas de variables qui contiennent des données longitudinales du jour 0 au jour 7. Je cherche une approche de regroupement appropriée qui peut regrouper ces variables longitudinales (pas des cas) en différents groupes. J'ai essayé d'analyser cet ensemble de données séparément par le temps, mais le résultat était assez difficile à expliquer raisonnablement.

J'ai étudié la disponibilité d'une procédure SAS PROC SIMILARITYcar il y a un exemple sur son site Web ; cependant, je pense que ce n'est pas une bonne façon. Certaines études antérieures ont utilisé une analyse factorielle exploratoire à chaque instant, mais ce n'est pas une option dans mon étude également en raison de résultats déraisonnables.

Si tout va bien quelques idées peuvent être fournies ici, et un programme compilé, tel que SAS ou R, peut être disponible pour traiter. Toute suggestion est appréciée !!


Voici un court exemple (désolé pour la position incohérente entre les données et les noms de variables):

id time   V1  V2   V3   V4   V5   V6   V7   V8   V9   V10
2    0    8    7    3    7    6    6    0    0    5    2
2    1    3    5    2    6    5    5    1    1    4    2
2    2    2    3    2    4    4    2    0    0    2    2
2    3    6    4    2    5    3    2    1    2    3    3
2    4    5    3    4    4    3    3    4    3    3    3   
2    5    6    4    5    5    6    3    3    2    2    2
2    6    7    5    2    4    4    3    3    4    4    5
2    7    7    7    2    6    4    4    0    0    4    3
4    0   10    7    0    2    2    6    7    7    0    9
4    1    8    7    0    0    0    9    3    3    7    8
4    2    8    7    0    0    0    9    3    3    7    8
4    3    8    7    0    0    0    9    3    3    7    8
4    4    5    7    0    0    0    9    3    3    7    8
4    5    5    7    0    0    0    9    3    3    7    8
4    6    5    7    0    0    0    9    3    3    7    8
4    7    5    7    0    0    0    9    3    3    7    8
5    0    9    6    1    3    2    2    2    3    3    5
5    1    7    3    1    3    1    3    2    2    1    3
5    2    6    4    0    4    2    4    2    1    2    4
5    3    6    3    2    3    2    3    3    1    3    4
5    4    8    6    0    5    3    3    2    2    3    4
5    5    9    6    0    4    3    3    2    3    2    5
5    6    8    6    0    4    3    3    2    3    2    5
5    7    8    6    0    4    3    3    2    3    2    5

Pourriez-vous expliquer un peu plus les données ou peut-être fournir un échantillon raccourci? Lorsque vous dites que les «variables contiennent des données longitudinales», voulez-vous dire que ce sont toutes des mesures répétées sur la même personne ou la même chose sur 7 jours (et donc susceptibles d'être corrélées).
Ross

Pour rosser: j'ai ajouté une partie des données. Comme vous l'avez mentionné, ce sont des mesures répétées: chaque patient (ID) a 10 mesures (V1 ~ V10) d'une durée de plusieurs jours (jour0 ~ jour7).
cchien

Réponses:


5

Dans le Hmiscpackage R , consultez le fichier d'aide de la curveRepfonction, qui signifie «courbes représentatives». curveRepdes grappes sur des formes de courbes, des emplacements et des motifs de points temporels manquants.


Merci pour vos conseils. Cela semble faisable. Je vais lire tout de suite son manuel.
cchien

Franc. L'exemple du manuel ne semble pas fonctionner. Y a-t-il une faute de frappe? Je voulais exécuter l'exemple pour me faire une idée. Voici le code: set.seed (1) N <- 200 nc <- sample (1:10, N, TRUE) id <- rep (1: N, nc) x <- y <- id for (i in 1: N) {x [id == i] <- if (iy [id == i] <- i + 10 * (x [id == i] - .5) + runif (nc [i], - 10, 10)}
B_Miner

1
Oups. J'ai oublié qu'un signe de pourcentage dans un fichier d'aide R devait être échappé. Cela a provoqué la coupure d'une ligne dans l'exemple. Remplacez la ligne incomplète par: x[id==i] <- if(i %% 2) runif(nc[i]) else runif(nc[i], c(.25, .75))
Frank Harrell

Je ne sais pas ce que "p: nombre de points où évaluer chaque courbe pour le clustering" représente dans curveRep (x, y, id, kxdist = 2, p = 10)
greg121

1
Chaque sujet (courbe) est profilé en y ajustant un lissage de faible profondeur et en évaluant le lissage sur une grille de points fixe, au cas où différentes courbes auraient des temps d'échantillonnage différents. Deux points caractériseraient une relation linéaire, trois un quadratique. est généralement recommandé et n'est pas un mauvais choix. L'ordonnée interpolée à la grille de points est introduite dans l'algorithme de clustering avec l'intervalle de temps maximum, le nombre de valeurs manquantes et d'autres choses. peut être plus grand que nécessaire sans faire beaucoup de mal; il est correct que certaines caractérisations soient redondantes. p = 10 pp>3p=10p
Frank Harrell

5

Je ne suis pas sûr que ce soit ce que vous recherchez, mais le package kmlde R utilise k-means pour regrouper des séquences de mesures répétées. Voici un lien vers la page du package et vers le papier (malheureusement, il est fermé). Cela ne fonctionne bien que si vous avez un ensemble de données assez petit (quelques centaines de séquences).

voici une version non fermée du document (sans problème de référence): http://christophe.genolini.free.fr/recherche/aTelecharger/genolini2011.pdf


J'ai en fait revu cette méthode avant de poster cette question. J'ai supposé que l'approche kml est une façon de regrouper des individus à partir de quelques exemples de son article original. J'y reviendrai. Merci!!
cchien

@ccchien oui, ils l'utilisent pour regrouper les trajectoires individuelles, mais vous pouvez supposer que vous avez dix trajectoires par individu (une pour chacune de vos variables). Vous auriez probablement besoin de normaliser vos variables pour que la procédure kml fonctionne correctement. Le problème est que, pour autant que je sache, il n'y a aucun moyen de dire à kml que vos trajectoires sont imbriquées chez des individus. Il se peut donc que cela ne soit pas exactement adapté à ce que vous essayez de réaliser.
Antoine Vernet

@ greg121, merci pour le lien vers la version gratuite du document. Il semble que les références dans le texte aient été supprimées, peut-être que le fichier Latex devrait être recompilé une fois de plus (la liste de références est là cependant).
Antoine Vernet

@AntoineVernet oui, vous avez raison. Mais je n'ai trouvé aucune autre version
greg121

4

Donc, vous avez p variables mesurées chaque t fois sur les mêmes n individus. Une façon de procéder consiste à calculer les matrices de (dis) similitude t pXp et à appliquer l'échelle multidimensionnelle du modèle INDSCAL. Il vous donnera deux cartes de faible dimension (disons, de 2 dimensions). La première carte montre les coordonnées de p variables dans l'espace des dimensions et reflète les regroupements entre elles, s'il y en a. La deuxième carte montre les poids (c.-à-d. L'importance ou la saillance) des dimensions dans chaque matrice de t .

entrez la description de l'image ici


J'ai également l'idée de convertir la n-dimension en 2-dimension, mais je n'ai tout simplement aucune idée de méthode spécifique qui puisse accomplir cela. Maintenant, j'ai trouvé que SAS pouvait avoir une procédure pour l'implémenter. Je l'apprendrai pour voir sa disponibilité lors de l'utilisation de mes données.
cchien

Quelle est la meilleure façon d'interpréter les poids?
Ming K

Le poids montre à quel point une dimension est pertinente ou discriminante pour cette source particulière (les sources sont des individus ou, comme dans cet exemple, des temps). Sur l'image du temps1, par exemple, la dimension II est forte ou pertinente et la dimension I est faible.
ttnphns
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.