[R-es] predict nlme

Olivier Nuñez onunez en unex.es
Sab Mayo 2 18:29:19 CEST 2015


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" 






----- Mensaje original -----

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