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