Como agrupar variáveis ​​longitudinais?


10

Eu tenho um monte de variáveis ​​que contêm dados longitudinais do dia 0 ao dia 7. Estou procurando uma abordagem de cluster apropriada que possa agrupar essas variáveis ​​longitudinais (não casos) em grupos diferentes. Tentei analisar esses dados separadamente por tempo, mas o resultado foi bastante difícil de ser razoavelmente explicado.

Eu investiguei a disponibilidade de um procedimento SAS PROC SIMILARITYporque há um exemplo em seu site ; no entanto, acho que não é o caminho certo. Alguns estudos anteriores usaram análise fatorial exploratória em cada momento, mas essa também não é uma opção em meu estudo devido a resultados irracionais.

Esperamos que algumas idéias possam ser fornecidas aqui, e um programa compilado, como SAS ou R, esteja disponível para processamento. Qualquer sugestão é apreciada !!


Aqui está um pequeno exemplo (desculpe a posição inconsistente entre dados e nomes de variáveis):

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

Você poderia explicar um pouco mais os dados ou talvez fornecer uma amostra reduzida? Quando você diz que "as variáveis ​​contêm dados longitudinais", você quer dizer que todas são medidas repetidas na mesma pessoa ou coisa durante 7 dias (e, portanto, provavelmente correlacionadas).
31411 rosser

Para rosser: anexei uma parte dos dados. Como você mencionou, são medições repetidas: cada paciente (DI) tem 10 medições (V1 ~ V10) com duração de vários dias (dia0 ~ dia7).
cchien

Respostas:


5

No Hmiscpacote R , consulte o arquivo de ajuda da curveRepfunção, que significa "curvas representativas". curveRepagrupamentos em formas de curvas, locais e padrões de pontos de tempo ausentes.


Obrigada pelo Conselho. Parece factível. Vou ler o manual imediatamente.
cchien

Frank. O exemplo no manual não parece funcionar. Existe um erro de digitação? Eu queria dar o exemplo para ter uma ideia. Aqui está o código: set.seed (1) N <- 200 nc <- amostra (1:10, N, TRUE) id <- rep (1: N, nc) x <- y <- id para (i in 1: N) {x [id == i] <- se (iy [id == i] <- i + 10 * (x [id == i] - .5) + runif (nc [i], - 10, 10)}
B_Miner 1/11/11

11
Ops. Esqueci que um sinal de porcentagem em um arquivo de ajuda do R precisava ser escapado. Isso fez com que uma linha no exemplo fosse truncada. Substitua a linha incompleta por: x[id==i] <- if(i %% 2) runif(nc[i]) else runif(nc[i], c(.25, .75))
Frank Harrell

Eu não tenho certeza do que "p: número de pontos no qual se avalia cada curva para clustering" significa em curveRep (x, y, id, kxdist = 2, p = 10)
greg121

11
p>3p=10p

5

Não tenho certeza de que é isso que você está procurando, mas o pacote kmlem R usa k-means para agrupar seqüências de medidas repetidas. Aqui está um link para a página do pacote e para o artigo (infelizmente, está fechado). Só funciona bem se você tiver um conjunto de dados bastante pequeno (algumas centenas de seqüências).

Aqui está uma versão não bloqueada do artigo (sem problemas de referência): http://christophe.genolini.free.fr/recherche/aTelecharger/genolini2011.pdf


Na verdade, revi esse método antes de postar esta pergunta. Presumi que a abordagem kml é uma forma de agrupar grupos de indivíduos a partir de alguns exemplos de seu artigo original. Vou dar uma olhada novamente. Obrigado!!
cchien

@ccchien sim, eles o usam para agrupar trajetórias individuais, mas você pode assumir que possui dez trajetórias por indivíduo (uma para cada uma de suas variáveis). Você provavelmente precisaria normalizar suas variáveis ​​para que o procedimento kml funcionasse corretamente. O problema é que, tanto quanto eu sei, não há como dizer ao kml que suas trajetórias estão aninhadas nos indivíduos. Portanto, pode acabar não sendo exatamente adequado ao que você está tentando alcançar.
Antoine Vernet

@ greg121, obrigado pelo link para a versão disponível gratuitamente do artigo. Parece que as referências no texto foram descartadas, talvez o arquivo Latex deva ser recompilado mais uma vez (a lista de referências está lá).
Antoine Vernet

@AntoineVernet sim, você está certo. Mas eu não poderia encontrar qualquer outra versão
greg121

4

Portanto, você tem variáveis p medidas cada t vezes nos mesmos n indivíduos. Uma maneira de proceder é computar as matrizes de (des) similaridade de pXp e aplicar a escala multidimensional do modelo INDSCAL. Ele fornecerá dois mapas de baixa dimensão (digamos, de 2 dimensões). O primeiro mapa mostra as coordenadas das variáveis p no espaço das dimensões e reflete os agrupamentos entre elas, se houver alguma. O segundo mapa mostra pesos (isto é, importância ou saliência) das dimensões em cada matriz de t .

insira a descrição da imagem aqui


Eu também tenho a idéia de converter a dimensão n em duas dimensões, mas simplesmente não tenho nenhuma idéia de método específico que possa fazer isso. Agora eu achei SAS pode ter um procedimento pode implementá-lo. Vou aprender a ver sua disponibilidade ao usar meus dados.
cchien

Qual é a melhor maneira de interpretar os pesos?
Ming K

O peso mostra o quanto uma dimensão é relevante ou discriminatória para essa fonte específica (as fontes são indivíduos ou, como neste exemplo, os tempos). Na figura do tempo1, por exemplo, a dimensão II é forte ou relevante e a dimensão I é fraca.
ttnphns
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.