Marcuzzi, Javier Rubén
2012-Aug-21 22:08 UTC
[R-es] longitudinales, aleatorios, predicción
Hola a todos Me encuentro en una inquietud, tengo unos modelos mixtos donde a lo largo del tiempo se estima la producción, hay diferentes curvas, no habría problemas al utilizarlas en efectos fijos, donde distintas funciones (ecuaciones para las curvas) ajustan según el tiempo transcurrido, como puede ser legendre, spline, etc. Hasta ahí todo bien. Resulta que me preguntan: ¿quiero saber para cada individuo y poder conocer cuánto va a producir a lo largo del tiempo (de ahora en más)?, pues no tendría problema, coloco los individuos como efectos aleatorios, realizo en ranef(modelo) y conozco para cada individuo el valor, pero el resultado es solo un valor por individuo, lo que estaría en forma incorrecta, porque cada individuo debe tener un resultado por parámetro del modelo (o función de la curva, polinomio, legendre, spline), porque sería ilógico utilizar los mismos valores de curva para todos los individuos cuándo hay algunos que no responden como otros, debo tener una curva para cada uno. Mi solución, que no es tanta, es utilizar un modelo donde en efectos fijos y aleatorios se utiliza la función de curva, como es el ejemplo de MCMCglmm library(MCMCglmm) library(coda) data(ChickWeight) head(ChickWeight) xyplot(weight ~ Time | Chick, data = ChickWeight) prior.m <- list(R = list(V=1, n=0.0002), G=list(G1=list(V= diag(3),n=3))) m <- MCMCglmm(weight ~ Diet + poly(Time, 2, raw=TRUE), random = ~us(1+ poly (Time, 2, raw=TRUE)):Chick, data = ChickWeight, verbose = TRUE, pr=TRUE, pl=TRUE, prior = prior.m, saveX = TRUE, saveZ = TRUE) pollos<-posterior.mode(m$Sol[,c(7:56)]) W <- cBind(m$X, m$Z) prediccion <- W %*% posterior.mode(m$Sol) xyplot(weight+prediccion ~Time |Chick, data=ChickWeight) Pero uso nlme porque es REML es más rápido, no lme4 porque no permite realizar la predicción (o no tiene predict()). Resulta que al colocar el tiempo dentro de los aleatorios de minutos de cálculo paso a horas y aún no llega al resultado, y esto realizando una prueba con pocos datos. Entonces mi primer pregunta es ¿hay alguna forma de realizar los cálculos más rápido, en todos casos utilizar solo el tiempo por la función en aleatorios y no en fijos y aleatorios? ¿Alguna función de spline que puedan recomendarme? Mi segunda pregunta es sobre el predict ¿utiliza efectos fijos y aleatorios o solo fijos? Mi tercer pregunta es, leí algo que en lme4 se desarrolla un predict, pero que tiene errores son spline ¿Alguna forma para predecir en lme4, no me refiero a fitted, porque les interesa saber lo que viene, no lo que paso? Sería un modelo animal de regresiones aleatorias, pero no se conoce el pedigree de los individuos. [[alternative HTML version deleted]]