Contexto
Esta pregunta usa R, pero trata sobre cuestiones estadísticas generales.
Estoy analizando los efectos de los factores de mortalidad (% de mortalidad por enfermedad y parasitismo) en la tasa de crecimiento de la población de polillas a lo largo del tiempo, donde se tomaron muestras de las poblaciones de larvas de 12 sitios una vez al año durante 8 años. Los datos de la tasa de crecimiento de la población muestran una tendencia cíclica clara pero irregular a lo largo del tiempo.
Los residuos de un modelo lineal generalizado simple (tasa de crecimiento ~% enfermedad +% parasitismo + año) mostraron una tendencia cíclica igualmente clara pero irregular a lo largo del tiempo. Por lo tanto, los modelos de mínimos cuadrados generalizados de la misma forma también se ajustaron a los datos con estructuras de correlación apropiadas para tratar la autocorrelación temporal, por ejemplo, simetría compuesta, orden de proceso autorregresivo 1 y estructuras de correlación de media móvil autorregresiva.
Todos los modelos contenían los mismos efectos fijos, se compararon usando AIC y se ajustaron mediante REML (para permitir la comparación de diferentes estructuras de correlación por AIC). Estoy usando el paquete R nlme y la función gls.
Pregunta 1
Los residuos de los modelos GLS todavía muestran patrones cíclicos casi idénticos cuando se trazan contra el tiempo. ¿Permanecerán siempre tales patrones, incluso en modelos que representan con precisión la estructura de autocorrelación?
He simulado algunos datos simplificados pero similares en R debajo de mi segunda pregunta, que muestra el problema basado en mi comprensión actual de los métodos necesarios para evaluar patrones temporalmente autocorrelacionados en los residuos del modelo , que ahora sé que están equivocados (ver respuesta).
Pregunta 2
He ajustado modelos GLS con todas las posibles estructuras de correlación plausibles a mis datos, pero en realidad ninguno es sustancialmente mejor que el GLM sin ninguna estructura de correlación: solo un modelo GLS es marginalmente mejor (puntaje AIC = 1.8 menor), mientras que el resto tiene valores de AIC más altos. Sin embargo, este es solo el caso cuando REML ajusta todos los modelos, no ML donde los modelos GLS son claramente mucho mejores, pero entiendo de los libros de estadísticas que solo debe usar REML para comparar modelos con diferentes estructuras de correlación y los mismos efectos fijos por razones No detallaré aquí.
Dada la naturaleza claramente autocorrelacionada temporalmente de los datos, si ningún modelo es incluso moderadamente mejor que el GLM simple, ¿cuál es la forma más adecuada de decidir qué modelo usar para la inferencia, suponiendo que esté usando un método apropiado (eventualmente quiero usar AIC para comparar diferentes combinaciones de variables)?
Q1 'simulación' que explora patrones residuales en modelos con y sin estructuras de correlación apropiadas
Genere una variable de respuesta simulada con un efecto cíclico de 'tiempo' y un efecto lineal positivo de 'x':
time <- 1:50
x <- sample(rep(1:25,each=2),50)
y <- rnorm(50,5,5) + (5 + 15*sin(2*pi*time/25)) + (x/1)
y debe mostrar una tendencia cíclica a lo largo del 'tiempo' con variación aleatoria:
plot(time,y)
Y una relación lineal positiva con 'x' con variación aleatoria:
plot(x,y)
Cree un modelo aditivo lineal simple de "y ~ time + x":
require(nlme)
m1 <- gls(y ~ time + x, method="REML")
El modelo muestra patrones cíclicos claros en los residuos cuando se grafica contra el 'tiempo', como se esperaría:
plot(time, m1$residuals)
Y lo que debería ser una falta clara y agradable de cualquier patrón o tendencia en los residuos cuando se traza contra 'x':
plot(x, m1$residuals)
Un modelo simple de "y ~ tiempo + x" que incluye una estructura de correlación autorregresiva de orden 1 debería ajustarse a los datos mucho mejor que el modelo anterior debido a la estructura de autocorrelación, cuando se evalúa usando AIC:
m2 <- gls(y ~ time + x, correlation = corAR1(form=~time), method="REML")
AIC(m1,m2)
Sin embargo, el modelo aún debería mostrar residuos autocorrelacionados casi idénticamente 'temporalmente':
plot(time, m2$residuals)
Muchas gracias por cualquier consejo.