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