Come raggruppare le variabili longitudinali?


10

Ho un sacco di variabili che contengono dati longitudinali dal giorno 0 al giorno 7. Sto cercando un approccio di raggruppamento appropriato che possa raggruppare queste variabili longitudinali (non i casi) in diversi gruppi. Ho cercato di analizzare questo set di dati separatamente per tempo, ma il risultato è stato piuttosto difficile da spiegare ragionevolmente.

Ho esaminato la disponibilità di una procedura SAS PROC SIMILARITYperché esiste un esempio sul suo sito Web ; tuttavia, penso che non sia la strada giusta. Alcuni studi precedenti hanno utilizzato l'analisi fattoriale esplorativa in ogni momento, ma questa non è un'opzione anche nel mio studio a causa di risultati irragionevoli.

Eventualmente alcune idee possono essere fornite qui e un programma compilato, come SAS o R, può essere disponibile per l'elaborazione. Ogni suggerimento è apprezzato !!


Ecco un breve esempio (scusate la posizione incoerente tra i dati e i nomi delle variabili):

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

Potresti spiegare un po 'di più i dati o forse fornire un campione abbreviato? Quando dici che le "variabili contengono dati longitudinali", intendi che sono tutte misurazioni ripetute sulla stessa persona o cosa per 7 giorni (e quindi probabilmente correlate).
Rosser,

A Rosser: ho aggiunto una parte dei dati. Come hai già detto, sono misurazioni ripetute: ogni paziente (ID) ha 10 misurazioni (V1 ~ V10) della durata di diversi giorni (giorno 0 ~ giorno7).
cchien,

Risposte:


5

Nel Hmiscpacchetto R vedere il file della guida per la curveRepfunzione, che sta per "curve rappresentative". curveRepcluster su forme di curve, posizioni e modelli di punti temporali mancanti.


Grazie per il tuo consiglio. Sembra fattibile. Leggerò subito il suo manuale.
cchien,

Franco. L'esempio nel manuale non sembra funzionare. C'è un errore di battitura? Volevo dare l'esempio per averne un'idea. Ecco il codice: set.seed (1) N <- 200 nc <- sample (1:10, N, TRUE) id <- rep (1: N, nc) x <- y <- id per (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
Ops. Ho dimenticato che un segno di percentuale in un file di aiuto R doveva essere salvato. Ciò ha causato il troncamento di una riga nell'esempio. Sostituisci la riga incompleta con: x[id==i] <- if(i %% 2) runif(nc[i]) else runif(nc[i], c(.25, .75))
Frank Harrell

Non sono sicuro di quale "p: numero di punti in cui valutare ogni curva per il raggruppamento" sta per in curveRep (x, y, id, kxdist = 2, p = 10)
greg121

1
Ogni soggetto (curva) viene profilato inserendo un lowess smooth su di esso e valutando il smooth su una griglia fissa di punti, nel caso in cui curve diverse abbiano tempi di campionamento diversi. Due punti caratterizzerebbero una relazione lineare, tre quadratici. è generalmente raccomandato e non è una cattiva scelta. L'ordinata interpolata nella griglia dei punti viene inserita nell'algoritmo di raggruppamento insieme al divario temporale massimo, al numero di valori mancanti e ad altre cose. può essere più grande del necessario senza fare molto danno; va bene che alcune caratterizzazioni siano ridondanti. p = 10 pp>3p=10p
Frank Harrell,

5

Non sono sicuro che sia quello che stai cercando, ma il pacchetto kmlin R usa k-mean per raggruppare sequenze di misure ripetute. Ecco un link alla pagina del pacchetto e al documento (purtroppo è chiuso). Funziona bene solo se hai un set di dati abbastanza piccolo (poche centinaia di sequenze).

ecco una versione non gated del documento (senza problemi di riferimento): http://christophe.genolini.free.fr/recherche/aTelecharger/genolini2011.pdf


In realtà ho esaminato questo metodo prima di pubblicare questa domanda. Ho ipotizzato che l'approccio kml sia un modo cluster per raggruppare gli individui da alcuni esempi del suo documento originale. Lo darò di nuovo un'occhiata. Grazie!!
cchien

@ccchien sì, lo usano per raggruppare le singole traiettorie insieme, ma puoi supporre che tu abbia dieci traiettorie per individuo (uno per ciascuna delle tue variabili). Probabilmente avresti bisogno di normalizzare le tue variabili affinché la procedura kml funzioni correttamente. Il problema è che, per quanto ne so, non c'è modo di dire a kml che le tue traiettorie sono nidificate negli individui. Quindi potrebbe finire per non essere esattamente adattato a ciò che stai cercando di ottenere.
Antoine Vernet,

@ greg121, grazie per il link alla versione disponibile gratuitamente del documento. Sembra che i riferimenti nel testo siano stati eliminati, forse il file Latex dovrebbe essere ricompilato ancora una volta (l'elenco dei riferimenti è lì).
Antoine Vernet,

@AntoineVernet sì, hai ragione. Ma non sono riuscito a trovare un'altra versione
greg121

4

Quindi, hai p variabili misurate ogni t volte sullo stesso n individui. Un modo per procedere è calcolare le matrici di somiglianza p pp (dis) e applicare il ridimensionamento multidimensionale del modello INDSCAL. Ti darà due mappe a bassa dimensione (diciamo, di 2 dimensioni). La prima mappa mostra le coordinate di p variabili nello spazio delle dimensioni e riflette i raggruppamenti tra loro, se ce ne sono. La seconda mappa mostra i pesi (cioè importanza o salienza) delle dimensioni in ciascuna matrice di t .

inserisci qui la descrizione dell'immagine


Ho anche l'idea di convertire la n-dimensione in 2-dimensione, ma non ho idea di un metodo specifico in grado di ottenere questo risultato. Ora ho scoperto che SAS potrebbe avere una procedura in grado di implementarlo. Lo imparerò per vedere la sua disponibilità quando utilizzo i miei dati.
cchien,

Qual è il modo migliore per interpretare i pesi?
Ming K,

Il peso mostra quanto una dimensione sia pertinente o discriminante per questa particolare fonte (le fonti sono individui o, come in questo esempio, i tempi). Nell'immagine per time1, ad esempio, la dimensione II è forte o rilevante e la dimensione I è debole.
ttnphns,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.