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 té 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 R
abordagens:
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.
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
random
argumento? - E se eu também usar uma função de autocorrelação (como
corEXP()
) que use uma fórmula nocorrelation
argumento - devo fazer com que a fórmula sejacorEXP()
igual à que está dentrorandom
ou apenas~1|ID
? - O
nlme
pacote raramente é mencionado no contexto de séries temporais fora de Pinheiro e Bates ... não é considerado adequado para esse problema?
- É
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.
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.
Respostas:
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 .
fonte
nlme
abordagens mais familiares (itens 2 e 3 no OP) são pelo menos válidas para usar nos dados por enquanto?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
random
argumento tolme
for definido como~1|ID
(ondeID
identifica observações provenientes do mesmo sujeito de teste), um modelo de interceptação aleatória é ajustado. Se estiver definido para,~TIME|ID
entã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
lme
modelos seguidos por recorte viaMASS:::stepAIC
ouMuMIn:::dredge
e / ounlme:::anova.lme
até 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.
fonte