Tengo un conjunto de datos con tasa de crecimiento como variable de respuesta (resp
en el ejemplo) y de la temperatura, la disponibilidad de alimentos, y de la salinidad como variables predictoras (pred1
través pred3
en el ejemplo). Las variables predictoras son "continua" con intervalos semanales y tienen diferentes unidades. Las mediciones span semanal (con valores perdidos para algunos ejemplos) a lo largo de un año (week
en el ejemplo; definido desde el principio del experimento). Tengo varias muestras y quiero cuantificar (por encima de todas las muestras):
- Cuánto de cada variable predictora explica la variación en la tasa de crecimiento
- El efecto relativo de cada variable de predicción en la tasa de crecimiento
Entiendo que los lineales de los modelos mixtos podría ser una solución para este problema ya que tengo varias muestras y dependiente de las mediciones a lo largo del tiempo. Mi pregunta es: ¿Cuál sería el modelo óptimo de formulaciones que utilizan lme4
paquete de R?
Ejemplo de datos está disponible aquí. Y aquí está un resumen de la misma:
library(ggplot2)
tmp <- melt(X, id = c("Sample", "weeks"))
ggplot(tmp, aes(x = weeks, y = value)) + geom_line() + facet_wrap(Sample ~ variable, scales = "free_y")
He intentado siguiente:
Como una solución para el punto 1:
library("lme4")
library("MuMIn")
p1 <- lmer(resp ~ pred1 + (1|Sample) + (1|weeks), data = X)
p2 <- lmer(resp ~ pred2 + (1|Sample) + (1|weeks), data = X)
p3 <- lmer(resp ~ pred3 + (1|Sample) + (1|weeks), data = X)
margr2 <- data.frame(Pred = c("pred1", "pred2", "pred3"), marginal.R2 = c(r.squaredGLMM(p1)[[1]], r.squaredGLMM(p2)[[1]], r.squaredGLMM(p3)[[1]]))
ggplot(margr2, aes(x = Pred, y = marginal.R2)) + geom_bar(stat = "identity")
Marginal $R^2$ calculado por el método publicado aquí debe indicar el total de varianza explicada por cada variable predictora hasta donde tengo entendido, y suponiendo que mi modelo formulaciones son correctos.
Para el efecto relativo (punto 2), creo que primero hay que tener las variables predictoras en una misma escala. Sólo entonces puedo comparar por tener todos ellos en el modelo y la eliminación de los interceptos:
Xs <- X
Xs[4:6] <- scale(Xs[4:6])
mod <- lmer(resp ~ pred1 + pred2 + pred3 - 1 + (1|weeks) + (1|Sample), data = Xs)
cis <- confint(mod)[4:6,]
releff <- data.frame(par = rownames(cis), lower = cis[,1], est = fixef(mod), upper = cis[,2])
Con el fin de hacer la interpretación más intuitiva, yo escala de los efectos de máximo valor absoluto de a través de los intervalos de confianza (yo sólo estoy interesado en efecto relativo):
tmp <- c(releff$lower,releff$upper)
add <- 100*releff[c("lower", "est", "upper")]/max(abs(tmp))
colnames(add) <- paste0("rel.", colnames(add))
releff <- cbind(releff, add)
ggplot(releff, aes(x = par, y = rel.est, ymin = rel.lower, ymax = rel.upper)) + geom_pointrange() + geom_hline(yintercept = 0)
Las variables predictoras son "significativos", donde el CIs no cruce la línea horizontal (a mi entender). No estoy seguro de si estos enfoques tienen mucho sentido, y por eso estoy pidiendo ayuda.