Wie werden longitudinale Variablen gruppiert?

10

Ich habe eine Reihe von Variablen, die Längsschnittdaten von Tag 0 bis Tag 7 enthalten. Ich suche nach einem geeigneten Clustering-Ansatz, mit dem diese Längsschnittvariablen (keine Fälle) in verschiedene Gruppen gruppiert werden können. Ich habe versucht, diesen Datensatz zeitlich getrennt zu analysieren, aber das Ergebnis war ziemlich schwer zu erklären.

Ich habe die Verfügbarkeit eines SAS-Verfahrens untersucht, PROC SIMILARITYda es auf seiner Website ein Beispiel gibt . Ich denke jedoch, dass dies kein richtiger Weg ist. Einige frühere Studien verwendeten zu jedem Zeitpunkt eine explorative Faktoranalyse, aber dies ist auch in meiner Studie aufgrund unangemessener Ergebnisse keine Option.

Hoffentlich können hier einige Ideen bereitgestellt werden, und ein kompiliertes Programm wie SAS oder R kann zur Verarbeitung verfügbar sein. Jeder Vorschlag wird geschätzt !!


Hier ein kurzes Beispiel (Entschuldigung für die inkonsistente Position zwischen Daten und Variablennamen):

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
cchien
quelle
Könnten Sie die Daten etwas näher erläutern oder eine verkürzte Stichprobe bereitstellen? Wenn Sie sagen, dass die "Variablen Längsschnittdaten enthalten", bedeutet dies, dass es sich bei allen um wiederholte Messungen an derselben Person oder Sache über 7 Tage handelt (und daher wahrscheinlich korreliert).
Rosser
Zu Rosser: Ich habe einen Teil der Daten angehängt. Wie Sie erwähnt haben, handelt es sich um wiederholte Messungen: Jeder Patient (ID) hat 10 Messungen (V1 ~ V10), die mehrere Tage dauern (Tag 0 ~ Tag 7).
Cchien

Antworten:

5

Im R- HmiscPaket finden Sie die Hilfedatei für die curveRepFunktion, die für "repräsentative Kurven" steht. curveRepCluster auf Kurvenformen, Orten und Mustern fehlender Zeitpunkte.

Frank Harrell
quelle
Danke für deinen Rat. Es klingt machbar. Ich werde das Handbuch sofort lesen.
Cchien
Frank. Das Beispiel im Handbuch scheint nicht zu funktionieren. Gibt es einen Tippfehler? Ich wollte das Beispiel ausführen, um ein Gefühl dafür zu bekommen. Hier ist der Code: set.seed (1) N <- 200 nc <- sample (1:10, N, TRUE) id <- rep (1: N, nc) x <- y <- id für (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
Hoppla. Ich habe vergessen, dass ein Prozentzeichen in einer R-Hilfedatei maskiert werden musste. Dies führte dazu, dass eine Zeile im Beispiel abgeschnitten wurde. Ersetzen Sie die unvollständige Zeile durch: x[id==i] <- if(i %% 2) runif(nc[i]) else runif(nc[i], c(.25, .75))
Frank Harrell
Ich bin nicht sicher, wofür "p: Anzahl der Punkte, an denen jede Kurve für das Clustering ausgewertet werden soll" in kurveRep (x, y, id, kxdist = 2, p = 10)
greg121
1
Jedes Motiv (Kurve) wird profiliert, indem eine niedrige Glättung daran angepasst und die Glättung über ein festes Punktgitter ausgewertet wird, falls unterschiedliche Kurven unterschiedliche Abtastzeiten hatten. Zwei Punkte würden eine lineare Beziehung charakterisieren, drei eine quadratische. wird normalerweise empfohlen und ist keine schlechte Wahl. Die interpolierte Ordinate am Punktgitter wird zusammen mit der maximalen Zeitlücke, der Anzahl fehlender Werte und anderen Dingen in den Clustering-Algorithmus eingespeist. kann größer als nötig sein, ohne viel Schaden anzurichten; Es ist in Ordnung, wenn einige Charakterisierungen redundant sind. p = 10 pp>3p=10p
Frank Harrell
5

Ich bin nicht sicher, ob es das ist, wonach Sie suchen, aber das Paket kmlin R verwendet k-means, um Sequenzen wiederholter Messungen zu gruppieren. Hier ist ein Link auf die Paket - Seite und auf das Papier (leider ist es gated). Es funktioniert nur gut, wenn Sie einen relativ kleinen Datensatz haben (einige hundert Sequenzen).

Hier ist eine nicht geschlossene Version des Papiers (ohne Referenzprobleme): http://christophe.genolini.free.fr/recherche/aTelecharger/genolini2011.pdf

Antoine Vernet
quelle
Ich habe diese Methode tatsächlich überprüft, bevor ich diese Frage gestellt habe. Ich nahm an, dass der kml-Ansatz eine Cluster-Methode ist, um Einzelpersonen anhand einiger Beispiele des Originalpapiers zu gruppieren. Ich werde es mir noch einmal ansehen. Vielen Dank!!
Cchien
@ccchien Ja, sie verwenden es, um einzelne Trajektorien zu gruppieren, aber Sie können davon ausgehen, dass Sie zehn Trajektorien pro Person haben (eine für jede Ihrer Variablen). Sie müssten wahrscheinlich Ihre Variablen normalisieren, damit die kml-Prozedur ordnungsgemäß funktioniert. Das Problem ist, dass es meines Wissens keine Möglichkeit gibt, kml mitzuteilen, dass Ihre Flugbahnen in Einzelpersonen verschachtelt sind. Es könnte also sein, dass es nicht genau zu dem passt, was Sie erreichen möchten.
Antoine Vernet
@ greg121, danke für den Link zur frei verfügbaren Version des Papiers. Es scheint, dass die In-Text-Referenzen gelöscht wurden. Vielleicht sollte die Latex-Datei noch einmal neu kompiliert werden (die Referenzliste ist jedoch vorhanden).
Antoine Vernet
@AntoineVernet ja, du hast recht. Aber ich konnte keine andere Version finden
greg121
4

Sie haben also p Variablen, die jeweils t- mal an denselben n Individuen gemessen werden . Eine Möglichkeit besteht darin, t pXp (Dis-) Ähnlichkeitsmatrizen zu berechnen und die multidimentionale Skalierung nach dem INDSCAL-Modell anzuwenden. Sie erhalten zwei niedrigdimensionale Karten (z. B. mit zwei Dimensionen). Die erste Karte zeigt die Koordinaten von p Variablen im Raum der Dimensionen und spiegelt Gruppierungen zwischen ihnen wider, falls vorhanden. Die zweite Karte zeigt Gewichte (dh Wichtigkeit oder Bedeutung) der Dimensionen in jeder Matrix von t .

Geben Sie hier die Bildbeschreibung ein

ttnphns
quelle
Ich habe auch die Idee, die n-Dimension in die 2-Dimension umzuwandeln, habe aber keine Vorstellung von einer bestimmten Methode, mit der dies erreicht werden kann. Jetzt habe ich festgestellt, dass SAS möglicherweise eine Prozedur hat, die es implementieren kann. Ich werde es lernen, um seine Verfügbarkeit zu sehen, wenn ich meine Daten verwende.
Cchien
Was ist der beste Weg, um die Gewichte zu interpretieren?
Ming K
Das Gewicht gibt an, inwieweit eine Dimension für diese bestimmte Quelle relevant oder diskriminierend ist (Quellen sind Einzelpersonen oder, wie in diesem Beispiel, Zeiten). Auf dem Bild für Zeit1 ist beispielsweise Dimension II stark oder relevant und Dimension I schwach.
ttnphns