Hola a todos: Estaba pensando como explicar algo para unas personas que no son estadísticos, necesitan el número para tomar decisiones, dicen ¿cuánto sería en porcentaje? pero no conocen de modelos mixtos, no por ser ignorantes o incapaces, todo lo contrario, simplemente nadie les dijo nada al respecto y son buenos profesionales en su profesión. Por lo cuál escribí algo muy sencillo, seguramente al procesarlo se darán cuenta, no interesa el resultado, simplemente es mostrar algo que no es porcentaje pero que es útil, pero me encontré con un problema, es con el predict, seguramente al ejecutar el siguiente código en R se darán cuenta (está escrito en este). ano_nacimiento <- c(2000, 2000, 2001, 2001, 2001, 2001, 2002) ano_nacimiento <- as.factor(ano_nacimiento) sexo <- c(''macho'', ''hembra'', ''macho'', ''hembra'', ''macho'', ''hembra'', ''macho'') clima <- c(''bueno'', ''regular'', ''malo'',''bueno'', ''regular'', ''malo'', ''bueno'') peso <- c(354, 251, 327, 328, 301, 270, 330) dataset <- data.frame(ano_nacimiento, sexo, clima, peso) library(nlme) modelo <- lme(peso ~ sexo-1 +clima, random=~1|ano_nacimiento, dataset, na.action="na.exclude") summary(modelo) modelo$coefficients$fixed modelo$coefficients$random f <-fitted(modelo) r <-resid(modelo) dataset2 <- data.frame(ano_nacimiento, sexo, clima, peso, f, r) dataset2 plot(modelo) predict(modelo) # predecir por ejemplo, ano_nacimiento 2002, sexo hembra (no está en los datos), clima bueno y malo predecir <- data.frame(ano_nacimiento=2002, clima=c(''bueno'',''malo'')) predict(modelo, predecir, level=0:1) No me doy cuenta el error, ¿alguna sugerencia o material para leer? Desde ya muchas gracias. Javier Marcuzzi [[alternative HTML version deleted]]
Hola Javier, te faltó poner el sexo dentro del nuevo data.frame Luciano El 11 de julio de 2012 14:07, Marcuzzi, Javier Rubén < javier.ruben.marcuzzi@gmail.com> escribió:> ano_nacimiento <- c(2000, 2000, 2001, 2001, 2001, 2001, 2002) > ano_nacimiento <- as.factor(ano_nacimiento) > sexo <- c(''macho'', ''hembra'', ''macho'', ''hembra'', ''macho'', ''hembra'', ''macho'') > clima <- c(''bueno'', ''regular'', ''malo'',''bueno'', ''regular'', ''malo'', ''bueno'') > peso <- c(354, 251, 327, 328, 301, 270, 330) > dataset <- data.frame(ano_nacimiento, sexo, clima, peso) > library(nlme) > modelo <- lme(peso ~ sexo-1 +clima, random=~1|ano_nacimiento, dataset, > na.action="na.exclude") > summary(modelo) > modelo$coefficients$fixed > modelo$coefficients$random > f <-fitted(modelo) > r <-resid(modelo) > dataset2 <- data.frame(ano_nacimiento, sexo, clima, peso, f, r) > dataset2 > plot(modelo) > predict(modelo) > # predecir por ejemplo, ano_nacimiento 2002, sexo hembra (no está en los > datos), clima bueno y malo > predecir <- data.frame(ano_nacimiento=2002, clima=c(''bueno'',''malo'')) > predict(modelo, predecir, level=0:1) >[[alternative HTML version deleted]]
Luciano, muchísimas gracias Pero cuándo yo cometo errores los realizo en forma secuencial, no voy a equivocarme una sola vez. Utilicé su sugerencia, pero no entendí o hay otro problema, copio la salida de R en algunos intentos fallidos. # predecir por ejemplo, ano_nacimiento 2002, sexo hembra (no está en los datos), clima bueno y malo> predecir <- data.frame(ano_nacimiento=2002, clima=c(''bueno'',''malo''), sexo=''hembra'') > predict(modelo, predecir, level=0:2)Error en `[.data.frame`(grps, , i) : undefined columns selected> > # predecir por ejemplo, ano_nacimiento 2002, sexo hembra (no está en los datos), clima bueno y malo > predecir <- data.frame(ano_nacimiento=2002, clima=c(''bueno'',''malo''), sexo=''hembra'') > predict(modelo, predecir, level=0:1)Error en conLin$Xy[, ZXstart[1]:ZXend[1], drop = FALSE] %*% lmeFit$beta : argumentos no compatibles> > # predecir por ejemplo, ano_nacimiento 2002, sexo hembra (no está en los datos), clima bueno y malo > predecir <- data.frame(ano_nacimiento=2002, clima=c(''bueno'',''malo''), sexo=''hembra'') > predict(modelo, predecir, level=0)Error en X %*% fixef(object) : argumentos no compatibles From: Luciano Selzer Sent: Wednesday, July 11, 2012 2:42 PM To: Marcuzzi, Javier Rubén Cc: R-help-es@r-project.org Subject: Re: [R-es] predecir Hola Javier, te faltó poner el sexo dentro del nuevo data.frame Luciano El 11 de julio de 2012 14:07, Marcuzzi, Javier Rubén <javier.ruben.marcuzzi@gmail.com> escribió: ano_nacimiento <- c(2000, 2000, 2001, 2001, 2001, 2001, 2002) ano_nacimiento <- as.factor(ano_nacimiento) sexo <- c(''macho'', ''hembra'', ''macho'', ''hembra'', ''macho'', ''hembra'', ''macho'') clima <- c(''bueno'', ''regular'', ''malo'',''bueno'', ''regular'', ''malo'', ''bueno'') peso <- c(354, 251, 327, 328, 301, 270, 330) dataset <- data.frame(ano_nacimiento, sexo, clima, peso) library(nlme) modelo <- lme(peso ~ sexo-1 +clima, random=~1|ano_nacimiento, dataset, na.action="na.exclude") summary(modelo) modelo$coefficients$fixed modelo$coefficients$random f <-fitted(modelo) r <-resid(modelo) dataset2 <- data.frame(ano_nacimiento, sexo, clima, peso, f, r) dataset2 plot(modelo) predict(modelo) # predecir por ejemplo, ano_nacimiento 2002, sexo hembra (no está en los datos), clima bueno y malo predecir <- data.frame(ano_nacimiento=2002, clima=c(''bueno'',''malo'')) predict(modelo, predecir, level=0:1) [[alternative HTML version deleted]]
Hola. No entiendo mucho de modelos mixtos pero creo que tu error es al definir el modelo con modelo <- lme(peso ~ sexo-1 +clima, random=~1|ano_nacimiento, dataset, na.action="na.exclude") Al quitarle el intercept al sexo. Con este modelo funcionaría un nuevo data.frame que tenga tanto machos como hembras datos <- data.frame(ano_nacimiento=c(2002,2000),sexo=c(''hembra'',''macho''),clima=c(''regular'',''malo'')) predict(modelo,datos) 2002 2000 239.3431 310.8165 attr(,"label") [1] "Predicted values" Dejando el intercept en sexo modelo <- lme(peso ~ sexo +clima, random=~1|ano_nacimiento, dataset, na.action="na.exclude") datos <- data.frame(ano_nacimiento=2002,sexo=''hembra'',clima=c(''bueno'',''malo'')) predict(modelo,datos) 2002 2002 299.2495 257.7669 attr(,"label") [1] "Predicted values" Saludos El 11/07/12 19:59, Marcuzzi, Javier Rubén escribió:> Luciano, muchísimas gracias > > Pero cuándo yo cometo errores los realizo en forma secuencial, no voy a equivocarme una sola vez. Utilicé su sugerencia, pero no entendí o hay otro problema, copio la salida de R en algunos intentos fallidos. > > # predecir por ejemplo, ano_nacimiento 2002, sexo hembra (no está en los datos), clima bueno y malo >> predecir<- data.frame(ano_nacimiento=2002, clima=c(''bueno'',''malo''), sexo=''hembra'') >> predict(modelo, predecir, level=0:2) > Error en `[.data.frame`(grps, , i) : undefined columns selected >> # predecir por ejemplo, ano_nacimiento 2002, sexo hembra (no está en los datos), clima bueno y malo >> predecir<- data.frame(ano_nacimiento=2002, clima=c(''bueno'',''malo''), sexo=''hembra'') >> predict(modelo, predecir, level=0:1) > Error en conLin$Xy[, ZXstart[1]:ZXend[1], drop = FALSE] %*% lmeFit$beta : > argumentos no compatibles >> # predecir por ejemplo, ano_nacimiento 2002, sexo hembra (no está en los datos), clima bueno y malo >> predecir<- data.frame(ano_nacimiento=2002, clima=c(''bueno'',''malo''), sexo=''hembra'') >> predict(modelo, predecir, level=0) > Error en X %*% fixef(object) : argumentos no compatibles > From: Luciano Selzer > Sent: Wednesday, July 11, 2012 2:42 PM > To: Marcuzzi, Javier Rubén > Cc: R-help-es@r-project.org > Subject: Re: [R-es] predecir > > Hola Javier, te faltó poner el sexo dentro del nuevo data.frame > Luciano > > > > El 11 de julio de 2012 14:07, Marcuzzi, Javier Rubén<javier.ruben.marcuzzi@gmail.com> escribió: > > ano_nacimiento<- c(2000, 2000, 2001, 2001, 2001, 2001, 2002) > ano_nacimiento<- as.factor(ano_nacimiento) > sexo<- c(''macho'', ''hembra'', ''macho'', ''hembra'', ''macho'', ''hembra'', ''macho'') > clima<- c(''bueno'', ''regular'', ''malo'',''bueno'', ''regular'', ''malo'', ''bueno'') > peso<- c(354, 251, 327, 328, 301, 270, 330) > dataset<- data.frame(ano_nacimiento, sexo, clima, peso) > library(nlme) > modelo<- lme(peso ~ sexo-1 +clima, random=~1|ano_nacimiento, dataset, na.action="na.exclude") > summary(modelo) > modelo$coefficients$fixed > modelo$coefficients$random > f<-fitted(modelo) > r<-resid(modelo) > dataset2<- data.frame(ano_nacimiento, sexo, clima, peso, f, r) > dataset2 > plot(modelo) > predict(modelo) > # predecir por ejemplo, ano_nacimiento 2002, sexo hembra (no está en los datos), clima bueno y malo > predecir<- data.frame(ano_nacimiento=2002, clima=c(''bueno'',''malo'')) > predict(modelo, predecir, level=0:1) > > [[alternative HTML version deleted]] > > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es[[alternative HTML version deleted]]