[R-es] predict nlme

javier.ruben.marcuzzi en gmail.com javier.ruben.marcuzzi en gmail.com
Dom Mayo 3 00:28:16 CEST 2015


Estimado Oliver Nuñez




Claro, ahora funciona,  cometí un error al escribirlo, ahora comparto la solución que usted dio, con la que yo pensé pero bien escrita (#Dieta y Dieta respectivamente).


grid <- expand.grid(Tiempo=4:6,
                      # Dieta=factor(c(1:3),levels = 1:4),
                       Dieta=c("1","2","3"),
                       Insu=c("Mg", "Cu"),                     
                       Factor="A")


Muchas gracias




Javier Rubén Marcuzzi





De: Olivier Nuñez
Enviado el: ‎sábado‎, ‎02‎ de ‎mayo‎ de ‎2015 ‎01‎:‎29‎ ‎p.m.
Para: Javier Ruben Marcuzzi
CC: R-help-es en r-project.org






Javier,





a la hora de predecir, los factores en el nuevo data.frame han de tener el mismo numero de niveles que en el data.frame original:. 


Por ejemplo, para el modelo

> fit=lme(weight~Time+Diet,random=~1|Chick,data=ChickWeight)
> nuevo=expand.grid(Time=4:6, Diet=c(1:2))
> predict(fit,nuevo,level=0)
Error in X %*% fixef(object) : non-conformable arguments




Pero si escribes:
> nuevo=expand.grid(Time=4:6, Diet=factor(c(1:2),levels=1:4))
> predict(fit,nuevo,level=0)
[1] 46.11262 54.82983 63.54705 62.32261 71.03982 79.75703
attr(,"label")
[1] "Predicted values"


















De: "javier ruben marcuzzi" <javier.ruben.marcuzzi en gmail.com>
Para: "Olivier Nuñez" <onunez en unex.es>
CC: "R-help-es en r-project.org" <r-help-es en r-project.org>
Enviados: Jueves, 30 de Abril 2015 16:15:26
Asunto: Re: [R-es] predict nlme





Estimado Oliver Nuñez




Envío un ejemplo reproducible.




Javier Marcuzzi




# de donde tomo datos, y tiene el modelo (en el pdf)
library(MCMCglmm)
# librería con las funciónes que voy a usar
library(nlme)
datos0<-ChickWeight 
# creo algunos datos que agrego a los origonales
Factor<-as.numeric(datos0$Chick)
Factor[Factor > 0  & Factor <= 10] <- 'A'
Factor[Factor > 10 & Factor <= 20] <- 'B'
Factor[Factor > 20 & Factor <= 30] <- 'A'
Factor[Factor > 30 & Factor <= 40] <- 'B'
Factor[Factor > 40 & Factor <= 50] <- 'A'




Insu<-as.numeric(datos0$Chick)
Insu[Insu > 0  & Insu <= 35] <- 'Mg'
Insu[Insu > 35 & Insu <= 50] <- 'Cu'




# datos para el modelo
datos <- data.frame(ChickWeight$Chick,ChickWeight$weight, ChickWeight$Time,  ChickWeight$Diet, Factor, Insu)
colnames(datos) <- c("Ave","Peso","Tiempo",  "Dieta", "Factor", "Insu")
datos




# modelo
m2 <- lme(Peso ~ poly(Tiempo,2, raw = TRUE)+ Factor + Dieta + Insu-1
          ,random=~poly(Tiempo,2, raw = TRUE)|Ave , datos, na.action="na.exclude"
          ,control=lmeControl(opt='optim', msVerbose = TRUE))
res2 <-fixef(m2)
res2
#####        preguntas ########################################################
# una pregunta nueva Insu-1, porque deseo que me exprese el valor para casa Insu y no
# mu + un valor de diferencia entre algunos y este
# si tengo un solo efecto fijo (quito factor y dieta) no hay problelas, si en los tres




# este funciona, los siguientes no
predict(object = m2)




grid <- expand.grid(Tiempo=4:6, Factor=c("A"), Insu=c("Mg","Cu"), Dieta=c(1:2))
predict(object = m2, newdata =grid)
predict(object = m2, newdata =grid, level = 0)













De: Olivier Nuñez
Enviado el: ‎jueves‎, ‎30‎ de ‎abril‎ de ‎2015 ‎05‎:‎58‎ ‎a.m.
Para: Javier Ruben Marcuzzi
CC: R-help-es en r-project.org










----- Mensaje original -----
De: "javier ruben marcuzzi" <javier.ruben.marcuzzi en gmail.com>
Para: "R-help-es en r-project.org" <r-help-es en r-project.org>
Enviados: Jueves, 30 de Abril 2015 4:07:35
Asunto: [R-es] predict nlme



Estimados




Tengo un error que me desconcierta, es un código que simplifiqué de otro trabajo donde no hay problemas, sin embargo me da un error.



Mándanos el modelo y tal vez podremos detectar el error.
Un saludo. Olivier







Una diferencia es que en mi otro trabajo uso spline y ahora polinomio, este es de segundo grado y se encuentra tanto en efectos fijos como aleatorios, el modelo es correcto, corre con MCMCglmm pero no con nlme.











grid <- expand.grid(Tiempo=4:6, Factor=c("A"), Insu=c(1:3))
predict(object = m2, newdata =grid)




Error in predict.lme(object = m2, newdata = grid) : 
  cannot evaluate groups for desired levels on 'newdata'







De otra forma



 predict(object = m2, newdata =grid, level = 0)
Error in X %*% fixef(object) : non-conformable arguments




Me perdí en el error, estaré cansado (es de noche) o mi código es obsoleto, pero mi trabajo de unos tres años del cuál realicé algunas simplificaciones, en el original funciona en la predicción.




¿Alguna idea?




Javier Rubén Marcuzzi
 [[alternative HTML version deleted]]



_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es
	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es