Wie finde ich Gruppierungen (Trajektorien) unter Längsschnittdaten?

11

Kontext

Ich möchte die Szene einstellen, bevor ich die Frage etwas erweitere.

Ich habe Längsschnittdaten, Messungen an Probanden ungefähr alle 3 Monate, primäres Ergebnis ist numerisch (wie kontinuierlich bis 1 dp) im Bereich von 5 bis 14, wobei der Großteil (aller Datenpunkte) zwischen 7 und 10 liegt. Wenn ich a mache Spaghetti-Plot (mit Alter auf der x-Achse und einer Linie für jede Person) ist offensichtlich ein Chaos, da ich> 1500 Probanden habe, aber es gibt einen deutlichen Schritt in Richtung höherer Werte mit zunehmendem Alter (und das ist bekannt).

Die umfassendere Frage: Wir möchten zunächst in der Lage sein, Trendgruppen zu identifizieren (diejenigen, die hoch beginnen und hoch bleiben, diejenigen, die niedrig beginnen und niedrig bleiben, diejenigen, die niedrig beginnen und auf hoch steigen usw.), und dann können wir Betrachten Sie einzelne Faktoren, die mit der Mitgliedschaft in einer Trendgruppe verbunden sind.

Meine Frage hier bezieht sich speziell auf den ersten Teil, die Gruppierung nach Trend.

Frage

  • Wie können wir einzelne Längstrajektorien gruppieren?
  • Welche Software wäre dafür geeignet?

Ich habe mir Proc Traj in SAS und M-Plus angesehen, die von einem Kollegen vorgeschlagen wurden, den ich untersuche, möchte aber wissen, was andere darüber denken.

nzcoops
quelle
1
Es ist nur ein Ausgangspunkt, aber vielleicht sehen Sie sich einige der Antworten auf diese Frage an: stats.stackexchange.com/questions/2777/…
Jeromy Anglim
Dank Jeromy ist die kml-Option interessant. Ich mag die Idee in R, bin mir aber nicht sicher, ob ich ihren Rahmen mit meinen Daten verwenden kann, da die Probanden für ihre Besuche in einem anderen Alter sind als "Besuch 1". Besuchen Sie 2 'usw. und einige haben 10 Besuche, während andere 50 + ...
nzcoops
kml Paket überprüfen - das scheint die Funktionalität zu bieten, die Sie benötigen. Das Papier in JoSS beschreibt es ausführlich. Auch kml3d& kmlShapekönnte von Interesse sein.
Radek

Antworten:

11

Ich habe den Mfuzz in R zum Clustering von Microarray-Datensätzen mit Zeitverlauf verwendet. Mfuzz verwendet "Soft-Clustering". Grundsätzlich können Einzelpersonen in mehr als einer Gruppe auftreten.

Wie @Andy im Kommentar hervorhebt, verwendet das Originalpapier CTN-Daten. Ich vermute jedoch, dass es für Ihre diskreten Daten in Ordnung sein sollte. Zumal Sie nur den Datensatz erkunden. Hier ist ein kurzes Beispiel in 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))

Gibt die folgende Handlung:

Mfuzz-Clustering

csgillespie
quelle
Vielen Dank für den Hinweis, ich war noch nie darauf gestoßen. Wäre dieser Clustering-Algorithmus für verteilte Daten mit geringer Anzahl geeignet, wie vom OP erwähnt (oder dichotome Daten)? Das Referenzpapier (Futschik & Carlisle 2005) verwendete Daten, die so transformiert wurden, dass sie kontinuierlich sind.
Andy W
@ Andy: Guter Punkt. Ich habe eine schnelle Simulation beigefügt. Alles scheint in Ordnung zu sein, aber es könnte eine optimalere Lösung geben.
Csgillespie
Danke @csgillespie, werde versuchen, dies zu versuchen. Übrigens, meine Daten sind fortlaufend, nicht diskret, nicht sicher, ob die Frage nicht klar genug war oder ob dies ein Tippfehler in Ihrer Antwort war? Müssen Sie mein R zurücksetzen, um Mfuzz zu installieren, lassen Sie den Spaß beginnen.
nzcoops
@csgillespie - das ist sehr cool. Ich spiele gerade damit an einigen realen Daten herum. Wissen Sie zufällig, ob es eine Möglichkeit gibt, die Anzahl der Gruppen zu schätzen?
Makro
4

Ich würde erwarten, dass es ein MPLUS-Paket gibt, das genau das tut, was Sie brauchen. In Psychometrika gibt es eine Arbeit zu fast genau diesem Thema

springerlink.com/content/25r110007g417187

außer dass die Daten binär sind und die Trajektorien Wahrscheinlichkeitstrajektorien sind. Die Autoren verwenden eine latente Klassenanalyse (implementiert unter Verwendung eines bestraften endlichen Mischungsmodells), um Trajektorien zu gruppieren. Ich weiß auch, dass der Erstautor vor ungefähr 10 Jahren mit Bengt Muthen (Erfinder von MPLUS) einige andere Artikel über die Analyse latenter Klassen in ähnlichen Umgebungen (mit Trajektorien) geschrieben hat. Beispielsweise,

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

klingt sehr ähnlich zu dem, wovon Sie sprechen, außer dass das Ergebnis binär ist. Der fortlaufende Fall ist viel einfacher, daher würde ich eine Rückwärtsliteratursuche durchführen (dh die Papiere betrachten, auf die sich diese Papiere beziehen), um etwas zu finden, das dem entspricht, was Sie genauer beschrieben haben.

Um mehr zu erfahren, können Sie die Eigentümer von MPLUS direkt fragen, welches Paket Sie verwenden müssen, um das zu tun, was Sie benötigen. Sie reagieren im Allgemeinen ziemlich schnell und sind sehr hilfreich:

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

Makro
quelle