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" <[email protected]> Para: "Olivier Nuñez" <[email protected]> CC: "[email protected]" <[email protected]> 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: [email protected] ----- Mensaje original ----- De: "javier ruben marcuzzi" <[email protected]> Para: "[email protected]" <[email protected]> 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 [email protected] https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list [email protected] https://stat.ethz.ch/mailman/listinfo/r-help-es
