Estoy modelando la ocurrencia de una especie en 5 sitios diferentes de forma horaria (presencia/ausencia), basado en una serie de predictores temporales (por ejemplo, momento del año, ciclo día/noche, mareas...). Las covariables están indicadas por x1, x2, ... en el código a continuación. Para información, tengo ~70 000 puntos de datos.
Estoy utilizando una estructura de HGAM, como se introdujo en Pedersen et al. 2019. Para cada covariable, primero investigué diferentes opciones de especificación (suavizador global o no, penalización compartida o no...), y seleccioné la mejor basada en AIC y mi pregunta de investigación.
Cuando pongo todos los términos juntos en el modelo, termino con una estructura como esta:
model <- bam(response ~ offset(log(offset)) + s(year, bs="re") +
Site + s(x1, m=2, bs="cc", k=8) +
s(x1, Site, bs = "fs", xt=list(bs="cc"), m=2) +
s(x2, bs = "cc", by=Site, m=2, k=8) +
s(x3, m=2, bs="cc", k=10) +
s(x3, by = Site, bs = "cc", m=1, k=10) +
s(x4, bs = "cc", by=Site, m=2, k=8) +
s(x5, bs = "tp", by=Site, m=2, k=8), family = "binomial",
data = data.all, method="REML", cluster=cl, select=TRUE)
La devianza explicada del modelo es solo alrededor del 13%. Dada la alta resolución temporal (horaria), espero cierta autocorrelación temporal en los residuos. Leí en la documentación de bam()
, y en otros posts (aquí y allí), que esto se podría especificar usando el argumento rho en bam()
siguiendo el orden del conjunto de datos.
- Sin embargo, no estoy seguro de si esto se aplica cuando el modelo tiene una estructura jerárquica. Sé que es factible en
gamm()
, pero el problema entonces es que no puedo especificar múltiples términos de interacción suavizador-factor como está escrito actualmente en el modelo... - ¿Es algo que se podría abordar en
brms
? ¿O de alguna otra manera?
Para información, aquí está la salida de las funciones de gráficos acf
y pcaf
: