Datos longitudinales: series temporales, medidas repetidas o algo más.

10

En inglés simple: tengo un modelo de regresión múltiple o ANOVA, pero la variable de respuesta para cada individuo es una función curvilínea del tiempo.

  • ¿Cómo puedo saber cuál de las variables del lado derecho es responsable de las diferencias significativas en las formas o los desplazamientos verticales de las curvas?
  • ¿Es este un problema de series de tiempo, un problema de medidas repetidas o algo completamente diferente?
  • ¿Cuáles son las mejores prácticas para analizar dichos datos (preferiblemente en R, pero estoy abierto a usar otro software)?

En términos más precisos: Digamos que tengo un modelo pero es en realidad una serie de puntos de datos recopilados de mismo individuo en muchos puntos de tiempo , que se registraron como una variable numérica. El trazado de los datos muestra que para cada individuo es una función de tiempo cuadrática o cíclica cuyo desplazamiento vertical, forma o frecuencia (en el caso cíclico) podría depender significativamente de las covariables. Las covariables no cambian con el tiempo, es decir, un individuo tiene un peso corporal constante o un grupo de tratamiento durante el período de recopilación de datos.yijk=β0+β1xi+β2xj+β3xixj+ϵkyijkktyijkt

Hasta ahora he intentado los siguientes Renfoques:

  1. Manova

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

    ... donde YThay una matriz cuyas columnas son los puntos de tiempo, 10 de ellas en este ejemplo, pero mucho más en los datos reales.

    Problema: esto trata el tiempo como un factor, pero los puntos de tiempo no coinciden exactamente para cada individuo. Además, hay muchos de ellos en relación con el tamaño de la muestra, por lo que el modelo se satura. Parece que se ignora la forma de la variable de respuesta a lo largo del tiempo.

  2. Modelo mixto (como en Pinheiro y Bates, Modelos de efectos mixtos en S y 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')
    

    ... donde IDes un factor que agrupa los datos por individuo. En este ejemplo, la respuesta es cíclica a lo largo del tiempo, pero podría haber términos cuadráticos u otras funciones del tiempo.

    Problema: no estoy seguro de si cada término de tiempo es necesario (especialmente para términos cuadráticos) y cuáles son afectados por qué covariables.

    • ¿Es stepAIC()un buen método para seleccionarlos?
    • Si elimina un término dependiente del tiempo, ¿también lo eliminará del randomargumento?
    • ¿Qué corEXP()sucede si también uso una función de autocorrelación (como ) que toma una fórmula en el correlationargumento, ¿debo hacer que la fórmula sea corEXP()igual a la que está en randomo solo ~1|ID?
    • El nlmepaquete rara vez se menciona en el contexto de series de tiempo fuera de Pinheiro y Bates ... ¿no se considera adecuado para este problema?
  3. Ajustar un modelo cuadrático o trigonométrico a cada individuo y luego usar cada coeficiente como variable de respuesta para regresión múltiple o ANOVA.

    Problema: es necesaria una corrección de comparación múltiple. No puedo pensar en ningún otro problema que me haga sospechar que estoy pasando por alto algo.

  4. Como se sugirió anteriormente en este sitio ( ¿Cuál es el término para una regresión de series de tiempo que tiene más de un predictor? ), Existen ARIMAX y modelos de función de transferencia / regresión dinámica .

    Problema: los modelos basados ​​en ARMA asumen tiempos discretos, ¿no? En cuanto a la regresión dinámica, lo escuché por primera vez hoy, pero antes de profundizar en otro método nuevo que podría no funcionar después de todo, pensé que sería prudente pedir consejo a las personas que han hecho esto antes.

f1r3br4nd
fuente
55
@ f1r3br4y ¿Puede ayudar si agrega algunos detalles sobre exactamente cuáles son sus datos? Es decir, ¿cuántos casos medidos en cuántos puntos de tiempo? ¿Los casos están en condiciones diferentes? o algo diferente?
Jeromy Anglim
¿Has perdido tu cuenta? Si es así, registre uno nuevo, posiblemente con su dirección de Gmail para que pueda encontrar fácilmente qué combinar.
1
@ f-tussel y @ jeromy-anglim: los datos son varias mediciones no invasivas recopiladas de animales de laboratorio a lo largo de su vida natural, a menudo junto con información estática como el genotipo, el sexo o el tipo de dieta que se alimentan. Por "muchos" puntos quiero decir de 20 a varios cientos. No solo estoy tratando de analizar un conjunto de datos, sino aprender a analizar un tipo de datos que se está volviendo muy común en mi grupo. ¿Los modelos mixtos con factores dentro del grupo solo se recomiendan para tamaños de muestra más pequeños?
f1r3br4nd

Respuestas:

5

Como dijo Jeromy Anglim, sería útil saber la cantidad de puntos de tiempo que tiene para cada individuo; como dijiste "muchos", me aventuraría a que el análisis funcional podría ser una alternativa viable. Es posible que desee consultar el paquete R de la FDA y mirar el libro de Ramsay y Silverman .

F. Tusell
fuente
El análisis funcional parece prometedor a largo plazo, pero parece que habrá una gran curva de aprendizaje antes de confiar en que no obtendré resultados sin sentido o sesgados. Entonces, mientras me estoy poniendo al día con esto, ¿son los nlmeenfoques más familiares (elementos 2 y 3 en el OP) al menos válidos para usar en los datos por el momento?
f1r3br4nd
2

Desde que originalmente planteé esta pregunta, llegué a la conclusión de que los modelos de efectos mixtos con sujetos como factor de bloqueo aleatorio son la solución práctica a este problema, es decir, la opción # 2 en mi publicación original. Si el randomargumento to lmese establece en ~1|ID(donde IDidentifica las observaciones que provienen del mismo sujeto de prueba), entonces se ajusta un modelo de intercepción aleatoria. Si se establece en, se ajusta ~TIME|IDun modelo aleatorio de pendiente e intercepción. Cualquier fórmula del lado derecho que contenga variables que varían dentro del mismo individuo se puede colocar entre ~y |ID, pero las fórmulas demasiado complicadas darán como resultado un modelo saturado y / o varios errores numéricos. Por lo tanto, uno puede usar una prueba de razón de verosimilitud (anova(myModel, update(myModel,random=~TIME|ID))) para comparar un modelo de intercepción aleatorio con un modelo de pendiente e intercepción aleatorio u otros modelos de efectos aleatorios candidatos. Si la diferencia en el ajuste no es significativa, entonces quédese con el modelo más simple. Fue excesivo para mí entrar en funciones trigonométricas aleatorias en mi publicación original.

La otra cuestión que planteé fue la de la selección del modelo. Parece que a la gente no le gusta la selección de modelos de ningún tipo, pero nadie tiene alternativas prácticas. Si cree ciegamente al investigador que recopiló los datos sobre qué variables explicativas son y no son relevantes, a menudo aceptará ciegamente sus supuestos no probados. Si tiene en cuenta cada bit de información posible, a menudo terminará con un modelo saturado. Si elige arbitrariamente un modelo y variables particulares porque son fáciles, volverá a aceptar supuestos no probados, esta vez los suyos.

Entonces, en resumen, para medidas repetidas son lmemodelos seguidos de recortes mediante MASS:::stepAICo MuMIn:::dredgey / o nlme:::anova.lmehasta y a menos que alguien tenga una mejor idea.

Dejaré esta respuesta por un tiempo antes de aceptarla para ver si alguien tiene alguna refutación. Gracias por su tiempo, y si está leyendo esto porque tiene el mismo tipo de pregunta que tengo, buena suerte y bienvenido a territorio semi-inexplorado.

f1r3br4nd
fuente