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]]