Dados longitudinais: séries temporais, medidas repetidas ou algo mais?


10

Em inglês simples: tenho um modelo de regressão múltipla ou ANOVA, mas a variável de resposta para cada indivíduo é uma função curvilínea do tempo.

  • Como posso saber quais variáveis ​​do lado direito são responsáveis ​​por diferenças significativas nas formas ou deslocamentos verticais das curvas?
  • Isso é um problema de série temporal, um problema de medidas repetidas ou algo completamente diferente?
  • Quais são as práticas recomendadas para analisar esses dados (de preferência em R, mas estou aberto a usar outro software)?

Em termos mais precisos: digamos que eu tenho um modelo mas y i j k é realmente uma série de dados- pontos coletados do mesmo indivíduo k em muitos momentos t , que foram registrados como uma variável numérica. A plotagem dos dados mostra que, para cada indivíduo, y i j k tyijk=β0+β1xi+β2xj+β3xixj+ϵkyijkktyijkté uma função quadrática ou cíclica do tempo cujo deslocamento vertical, forma ou frequência (no caso cíclico) pode depender significativamente das covariáveis. As covariáveis ​​não mudam com o tempo - ou seja, um indivíduo tem um peso corporal constante ou um grupo de tratamento durante o período de coleta de dados.

Até agora, tentei as seguintes Rabordagens:

  1. Manova

    Anova(lm(YT~A*B,mydata),idata=data.frame(TIME=factor(c(1:10))),idesign=~TIME); 
    

    ... onde YTé uma matriz cujas colunas são os pontos no tempo, 10 delas neste exemplo, mas muito mais nos dados reais.

    Problema: isso trata o tempo como um fator, mas os pontos no tempo não correspondem exatamente a cada indivíduo. Além disso, existem muitos deles em relação ao tamanho da amostra, para que o modelo fique saturado. Parece que a forma da variável de resposta ao longo do tempo é ignorada.

  2. Modelo misto (como em Pinheiro e Bates, modelos de efeito misto em S e S-Plus )

    lme(fixed=Y~ A*B*TIME + sin(2*pi*TIME) + cos(2*pi*TIME), data=mydata, 
        random=~(TIME + sin(2*pi*TIME) + cos(2*pi*TIME))|ID), method='ML')
    

    ... onde IDé um fator que agrupa dados por indivíduo. Neste exemplo, a resposta é cíclica ao longo do tempo, mas poderia haver termos quadráticos ou outras funções do tempo.

    Problema: não tenho certeza se cada termo de tempo é necessário (especialmente para termos quadráticos) e quais são afetados por quais covariáveis.

    • É stepAIC()um bom método para selecioná-los?
    • Se ele remover um termo dependente do tempo, ele também será removido do randomargumento?
    • E se eu também usar uma função de autocorrelação (como corEXP()) que use uma fórmula no correlationargumento - devo fazer com que a fórmula seja corEXP()igual à que está dentro randomou apenas ~1|ID?
    • O nlmepacote raramente é mencionado no contexto de séries temporais fora de Pinheiro e Bates ... não é considerado adequado para esse problema?
  3. Ajustar um modelo quadrático ou trigonométrico a cada indivíduo e, em seguida, usar cada coeficiente como variável de resposta para regressão múltipla ou ANOVA.

    Problema: Correção de comparação múltipla necessária. Não consigo pensar em nenhum outro problema que me faça suspeitar que estou ignorando alguma coisa.

  4. Como sugerido anteriormente neste site ( Qual é o termo para uma regressão de séries temporais com mais de um preditor? ), Existem os modelos ARIMAX e de função de transferência / regressão dinâmica .

    Problema: os modelos baseados em ARMA assumem tempos discretos, não é? Quanto à regressão dinâmica, ouvi falar sobre isso pela primeira vez hoje, mas antes de me aprofundar em outro novo método que pode não dar certo, pensei que seria prudente pedir conselhos às pessoas que já fizeram isso antes.


5
@ f1r3br4and Pode ajudar se você adicionar alguns detalhes sobre exatamente quais são seus dados? Ou seja, quantos casos medidos em quantos momentos? Os casos estão em condições diferentes? ou algo diferente?
perfil completo de Jeromy Anglim

Você perdeu sua conta? Nesse caso, registre um novo, possivelmente com seu endereço do Gmail, para que eu possa encontrar facilmente o que mesclar.

11
@ f-tussel e @ jeromy-anglim: Os dados são várias medidas não invasivas coletadas de animais de laboratório ao longo de suas vidas úteis naturais, geralmente combinadas com informações estáticas, como genótipo, sexo ou o tipo de dieta que eles recebem. Por "muitos" pontos, quero dizer de 20 a várias centenas. Não estou tentando analisar apenas um conjunto de dados, mas aprender a analisar um tipo de dados que está se tornando muito comum no meu grupo. Modelos mistos com fatores dentro do grupo são recomendados apenas para amostras menores?
F1r3br4 /

Respostas:


5

Como Jeromy Anglim disse, ajudaria a saber o número de pontos no tempo que você tem para cada indivíduo; como você disse "muitos", arriscaria que a análise funcional possa ser uma alternativa viável. Você pode verificar o pacote R fda e ver o livro de Ramsay e Silverman .


A análise funcional parece promissora a longo prazo, mas parece que haverá uma curva de aprendizado bastante antes de eu ter certeza de que não estou obtendo resultados sem sentido ou tendenciosos. Então, enquanto estou me atualizando sobre isso, as nlmeabordagens mais familiares (itens 2 e 3 no OP) são pelo menos válidas para usar nos dados por enquanto?
F1r3br4

2

Desde que fiz essa pergunta, cheguei à conclusão de que modelos de efeito misto com sujeitos como fator de bloqueio aleatório são a solução prática para esse problema, ou seja, a opção 2 no meu post original. Se o randomargumento to lmefor definido como ~1|ID(onde IDidentifica observações provenientes do mesmo sujeito de teste), um modelo de interceptação aleatória é ajustado. Se estiver definido para, ~TIME|IDentão, um modelo aleatório de inclinação e interceptação é instalado. Qualquer fórmula do lado direito que contém variáveis ​​que variam dentro do mesmo indivíduo pode ser colocada entre a ~e a |ID, mas as fórmulas excessivamente complicadas resultarão em um modelo saturado e / ou em vários erros numéricos. Portanto, pode-se usar um teste de razão de verossimilhança (anova(myModel, update(myModel,random=~TIME|ID))) para comparar um modelo de interceptação aleatória a uma inclinação aleatória e modelo de interceptação ou outros modelos candidatos de efeito aleatório. Se a diferença no ajuste não for significativa, siga o modelo mais simples. Foi um exagero para mim entrar em funções aleatórias no meu post original.

A outra questão que levantei foi sobre a seleção de modelos. Parece que as pessoas não gostam de seleção de modelo de nenhum tipo, mas ninguém tem alternativas práticas. Se você acredita cegamente no pesquisador que coletou os dados sobre o que são variáveis ​​explicativas e as que não são relevantes, geralmente aceitará cegamente suas suposições não testadas. Se você levar em consideração todas as informações possíveis, frequentemente acabará com um modelo saturado. Se você escolher arbitrariamente um modelo e variáveis ​​específicos por serem fáceis, novamente aceitará suposições não testadas, desta vez suas.

Portanto, em resumo, para medidas repetidas, são lmemodelos seguidos por recorte via MASS:::stepAICou MuMIn:::dredgee / ou nlme:::anova.lmeaté e a menos que alguém tenha uma idéia melhor.

Vou deixar essa resposta por um tempo antes de aceitá-la para ver se alguém tem alguma refutação. Obrigado pelo seu tempo, e se você estiver lendo isso, porque você tem o mesmo tipo de pergunta que eu tenho, boa sorte e bem-vindo ao território semi-desconhecido.

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.