Hola. ¿Alguien sabe como elegir sólo el efecto lineal cuando tengo un factor ordenado de 4 categorías? Pongo un ejemplo, mejor. Tengo la variable nivelest que en origen es de tipo factor Con contrasts veo las variables dicotómicas que usará R por ejemplo en un modelo lineal. > contrasts(datos.bin$nivelest) Primaria Secundaria y F.P Universitaria o superior Analfabetos 0 0 0 Primaria 1 0 0 Secundaria y F.P 0 1 0 Universitaria o superior 0 0 1 La convierto a tipo ordered > datos.bin$nivelest <- ordered(datos.bin$nivelest) > class(datos.bin$nivelest) [1] "ordered" "factor" > contrasts(datos.bin$nivelest) .L .Q .C [1,] -0.67082 0.5 -0.22361 [2,] -0.22361 -0.5 0.67082 [3,] 0.22361 -0.5 -0.67082 [4,] 0.67082 0.5 0.22361 Y la utilizo por ejemplo en un glm > res <- glm(uso_int ~ nivelest, data=datos.bin, family=binomial) > summary(res) Call: glm(formula = uso_int ~ nivelest, family = binomial, data = datos.bin) Deviance Residuals: Min 1Q Median 3Q Max -2.265 -0.853 -0.144 0.559 3.024 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -0.281 0.155 -1.81 0.07 . nivelest.L 5.309 0.408 13.01 < 2e-16 *** nivelest.Q -1.515 0.309 -4.90 9.7e-07 *** nivelest.C -0.171 0.157 -1.09 0.28 --- Signif. codes: 0 ?***? 0.001 ?**? 0.01 ?*? 0.05 ?.? 0.1 ? ? 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 4817 on 3484 degrees of freedom Residual deviance: 3379 on 3481 degrees of freedom AIC: 3387 Number of Fisher Scoring iterations: 7 ¿Cómo hago para ajustar un modelo sólo con nivelest.L? Saludos.
Estimado Jose Luis Cañadas No se si entiendo correctamente, pero ¿porque no escribe un modelo para cada nivel que le interesa?, o dicho de otro modo, a partir de datos.bin crea un data.frame para cada nivel que desea y utiliza el mismo modelo (cambiando el data.frame). O utilizar un modelo donde se trabaja de otra forma, pero como yo no uso glm no sabría si es correcto, pero la idea va por utilizar el factor en (fijos y aleatorios) ambas partes. Javier Marcuzzi El 29 de abril de 2013 15:41, Jose Luis Cañadas <canadasreche@gmail.com>escribió:> Hola. > > ¿Alguien sabe como elegir sólo el efecto lineal cuando tengo un factor > ordenado de 4 categorías? > > Pongo un ejemplo, mejor. > > Tengo la variable nivelest que en origen es de tipo factor > > Con contrasts veo las variables dicotómicas que usará R por ejemplo en un > modelo lineal. > > > contrasts(datos.bin$nivelest) > Primaria Secundaria y F.P Universitaria o superior > Analfabetos 0 0 0 > Primaria 1 0 0 > Secundaria y F.P 0 1 0 > Universitaria o superior 0 0 1 > > La convierto a tipo ordered > > > datos.bin$nivelest <- ordered(datos.bin$nivelest) > > class(datos.bin$nivelest) > [1] "ordered" "factor" > > contrasts(datos.bin$nivelest) > .L .Q .C > [1,] -0.67082 0.5 -0.22361 > [2,] -0.22361 -0.5 0.67082 > [3,] 0.22361 -0.5 -0.67082 > [4,] 0.67082 0.5 0.22361 > > Y la utilizo por ejemplo en un glm > > > res <- glm(uso_int ~ nivelest, data=datos.bin, family=binomial) > > summary(res) > > Call: > glm(formula = uso_int ~ nivelest, family = binomial, data = datos.bin) > > Deviance Residuals: > Min 1Q Median 3Q Max > -2.265 -0.853 -0.144 0.559 3.024 > > Coefficients: > Estimate Std. Error z value Pr(>|z|) > (Intercept) -0.281 0.155 -1.81 0.07 . > nivelest.L 5.309 0.408 13.01 < 2e-16 *** > nivelest.Q -1.515 0.309 -4.90 9.7e-07 *** > nivelest.C -0.171 0.157 -1.09 0.28 > --- > Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 > > (Dispersion parameter for binomial family taken to be 1) > > Null deviance: 4817 on 3484 degrees of freedom > Residual deviance: 3379 on 3481 degrees of freedom > AIC: 3387 > > Number of Fisher Scoring iterations: 7 > > ¿Cómo hago para ajustar un modelo sólo con nivelest.L? > > Saludos. > > ______________________________**_________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/**listinfo/r-help-es<https://stat.ethz.ch/mailman/listinfo/r-help-es> >[[alternative HTML version deleted]]
Hola Javier. La idea es que, al ser un factor ordenado, lo trata como si fuera una variable continua, pero en el modelo introduce el equivalente a nivelest, nivelest^2 y nivelest^3, pero sólo quiero el efecto lineal. Supongo que lo más sencillo sería crear una nueva variable donde si nivelest=="Analfabetos" nueva.variable==-0.67082 y así sucesivamente. Pero quizá haya una forma de decirle que se quede con una de las variables, en mi caso con nivelest.L. Saludos El 29/04/13 21:44, Javier Marcuzzi escribió:> Estimado Jose Luis Cañadas > > No se si entiendo correctamente, pero ¿porque no escribe un modelo > para cada nivel que le interesa?, o dicho de otro modo, a partir de > datos.bin crea un data.frame para cada nivel que desea y utiliza el > mismo modelo (cambiando el data.frame). > > O utilizar un modelo donde se trabaja de otra forma, pero como yo no > uso glm no sabría si es correcto, pero la idea va por utilizar el > factor en (fijos y aleatorios) ambas partes. > > Javier Marcuzzi > > > El 29 de abril de 2013 15:41, Jose Luis Cañadas > <canadasreche@gmail.com <mailto:canadasreche@gmail.com>> escribió: > > Hola. > > ¿Alguien sabe como elegir sólo el efecto lineal cuando tengo un > factor ordenado de 4 categorías? > > Pongo un ejemplo, mejor. > > Tengo la variable nivelest que en origen es de tipo factor > > Con contrasts veo las variables dicotómicas que usará R por > ejemplo en un modelo lineal. > > > contrasts(datos.bin$nivelest) > Primaria Secundaria y F.P Universitaria o superior > Analfabetos 0 0 0 > Primaria 1 0 0 > Secundaria y F.P 0 1 0 > Universitaria o superior 0 0 1 > > La convierto a tipo ordered > > > datos.bin$nivelest <- ordered(datos.bin$nivelest) > > class(datos.bin$nivelest) > [1] "ordered" "factor" > > contrasts(datos.bin$nivelest) > .L .Q .C > [1,] -0.67082 0.5 -0.22361 > [2,] -0.22361 -0.5 0.67082 > [3,] 0.22361 -0.5 -0.67082 > [4,] 0.67082 0.5 0.22361 > > Y la utilizo por ejemplo en un glm > > > res <- glm(uso_int ~ nivelest, data=datos.bin, family=binomial) > > summary(res) > > Call: > glm(formula = uso_int ~ nivelest, family = binomial, data = datos.bin) > > Deviance Residuals: > Min 1Q Median 3Q Max > -2.265 -0.853 -0.144 0.559 3.024 > > Coefficients: > Estimate Std. Error z value Pr(>|z|) > (Intercept) -0.281 0.155 -1.81 0.07 . > nivelest.L 5.309 0.408 13.01 < 2e-16 *** > nivelest.Q -1.515 0.309 -4.90 9.7e-07 *** > nivelest.C -0.171 0.157 -1.09 0.28 > --- > Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 > > (Dispersion parameter for binomial family taken to be 1) > > Null deviance: 4817 on 3484 degrees of freedom > Residual deviance: 3379 on 3481 degrees of freedom > AIC: 3387 > > Number of Fisher Scoring iterations: 7 > > ¿Cómo hago para ajustar un modelo sólo con nivelest.L? > > Saludos. > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org <mailto:R-help-es@r-project.org> > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
Aver si ahora entiendo, ¿sería como extraer solo algunos coeficientes? Hay un pequeño escrito en: http://stackoverflow.com/questions/4780152/extract-coefficients-from-glm-in-r Javier El 29 de abril de 2013 17:20, Jose Luis Cañadas <canadasreche@gmail.com>escribió:> Hola Javier. > La idea es que, al ser un factor ordenado, lo trata como si fuera una > variable continua, > pero en el modelo introduce el equivalente a nivelest, nivelest^2 y > nivelest^3, pero sólo quiero el efecto lineal. Supongo que lo más sencillo > sería crear una nueva variable donde si nivelest=="Analfabetos" > nueva.variable==-0.67082 y así sucesivamente. > Pero quizá haya una forma de decirle que se quede con una de las > variables, en mi caso con nivelest.L. > > Saludos > El 29/04/13 21:44, Javier Marcuzzi escribió: > > Estimado Jose Luis Cañadas > > No se si entiendo correctamente, pero ¿porque no escribe un modelo para > cada nivel que le interesa?, o dicho de otro modo, a partir de datos.bin > crea un data.frame para cada nivel que desea y utiliza el mismo modelo > (cambiando el data.frame). > > O utilizar un modelo donde se trabaja de otra forma, pero como yo no uso > glm no sabría si es correcto, pero la idea va por utilizar el factor en > (fijos y aleatorios) ambas partes. > > Javier Marcuzzi > > > El 29 de abril de 2013 15:41, Jose Luis Cañadas <canadasreche@gmail.com>escribió: > >> Hola. >> >> ¿Alguien sabe como elegir sólo el efecto lineal cuando tengo un factor >> ordenado de 4 categorías? >> >> Pongo un ejemplo, mejor. >> >> Tengo la variable nivelest que en origen es de tipo factor >> >> Con contrasts veo las variables dicotómicas que usará R por ejemplo en un >> modelo lineal. >> >> > contrasts(datos.bin$nivelest) >> Primaria Secundaria y F.P Universitaria o superior >> Analfabetos 0 0 0 >> Primaria 1 0 0 >> Secundaria y F.P 0 1 0 >> Universitaria o superior 0 0 1 >> >> La convierto a tipo ordered >> >> > datos.bin$nivelest <- ordered(datos.bin$nivelest) >> > class(datos.bin$nivelest) >> [1] "ordered" "factor" >> > contrasts(datos.bin$nivelest) >> .L .Q .C >> [1,] -0.67082 0.5 -0.22361 >> [2,] -0.22361 -0.5 0.67082 >> [3,] 0.22361 -0.5 -0.67082 >> [4,] 0.67082 0.5 0.22361 >> >> Y la utilizo por ejemplo en un glm >> >> > res <- glm(uso_int ~ nivelest, data=datos.bin, family=binomial) >> > summary(res) >> >> Call: >> glm(formula = uso_int ~ nivelest, family = binomial, data = datos.bin) >> >> Deviance Residuals: >> Min 1Q Median 3Q Max >> -2.265 -0.853 -0.144 0.559 3.024 >> >> Coefficients: >> Estimate Std. Error z value Pr(>|z|) >> (Intercept) -0.281 0.155 -1.81 0.07 . >> nivelest.L 5.309 0.408 13.01 < 2e-16 *** >> nivelest.Q -1.515 0.309 -4.90 9.7e-07 *** >> nivelest.C -0.171 0.157 -1.09 0.28 >> --- >> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 >> >> (Dispersion parameter for binomial family taken to be 1) >> >> Null deviance: 4817 on 3484 degrees of freedom >> Residual deviance: 3379 on 3481 degrees of freedom >> AIC: 3387 >> >> Number of Fisher Scoring iterations: 7 >> >> ¿Cómo hago para ajustar un modelo sólo con nivelest.L? >> >> Saludos. >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> > > >[[alternative HTML version deleted]]
No sería eso, ya que el coeficiente asociado a nivelest.L es distinto si en el modelo están nivelest.Q y nivelest.C que si sólo está nivelest.L. Lo dicho, una forma de hacerlo es codificando manualmente. nivelest.ord[nivelest == "Analfabetos"] <- -0.67082 nivelest.ord[nivelest == "Primarios"] <- -0.22361 y así sucesivamente, aunque bastaría con hacer nivelest.ord <- as.numeric(nivelest) en cuyo caso codifica de 1 a 4 . Lo que no sé es si hay una forma de sencilla de partiendo de un factor ordenado, elegir la codificación .L o la .Q para introducirla en el modelo. Viendo la ayuda de model.matrix he dado con una solución. datos.bin$nivelest.lineal <- model.matrix( ~ datos.bin$nivelest)[,2] y luego meter nivelest.lineal en el modelo. res <- glm (uso_int ~ nivelest.lineal, data=datos.bin, family=binomial) > summary(res) Call: glm(formula = uso_int ~ nivelest.lineal, family = binomial, data = datos.bin) Deviance Residuals: Min 1Q Median 3Q Max -2.710 -0.855 -0.304 0.660 2.489 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 0.2971 0.0486 6.11 9.7e-10 *** nivelest.lineal 4.9920 0.1885 26.48 < 2e-16 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 4817.0 on 3484 degrees of freedom Residual deviance: 3434.1 on 3483 degrees of freedom AIC: 3438 Number of Fisher Scoring iterations: 5 Saludos.. El 29/04/13 22:31, Javier Marcuzzi escribió:> Aver si ahora entiendo, ¿sería como extraer solo algunos coeficientes? > Hay un pequeño escrito en: > http://stackoverflow.com/questions/4780152/extract-coefficients-from-glm-in-r > > Javier > > > El 29 de abril de 2013 17:20, Jose Luis Cañadas > <canadasreche@gmail.com <mailto:canadasreche@gmail.com>> escribió: > > Hola Javier. > La idea es que, al ser un factor ordenado, lo trata como si fuera > una variable continua, > pero en el modelo introduce el equivalente a nivelest, nivelest^2 > y nivelest^3, pero sólo quiero el efecto lineal. Supongo que lo > más sencillo sería crear una nueva variable donde si > nivelest=="Analfabetos" nueva.variable==-0.67082 y así sucesivamente. > Pero quizá haya una forma de decirle que se quede con una de las > variables, en mi caso con nivelest.L. > > Saludos > El 29/04/13 21:44, Javier Marcuzzi escribió: >> Estimado Jose Luis Cañadas >> >> No se si entiendo correctamente, pero ¿porque no escribe un >> modelo para cada nivel que le interesa?, o dicho de otro modo, a >> partir de datos.bin crea un data.frame para cada nivel que desea >> y utiliza el mismo modelo (cambiando el data.frame). >> >> O utilizar un modelo donde se trabaja de otra forma, pero como yo >> no uso glm no sabría si es correcto, pero la idea va por utilizar >> el factor en (fijos y aleatorios) ambas partes. >> >> Javier Marcuzzi >> >> >> El 29 de abril de 2013 15:41, Jose Luis Cañadas >> <canadasreche@gmail.com <mailto:canadasreche@gmail.com>> escribió: >> >> Hola. >> >> ¿Alguien sabe como elegir sólo el efecto lineal cuando tengo >> un factor ordenado de 4 categorías? >> >> Pongo un ejemplo, mejor. >> >> Tengo la variable nivelest que en origen es de tipo factor >> >> Con contrasts veo las variables dicotómicas que usará R por >> ejemplo en un modelo lineal. >> >> > contrasts(datos.bin$nivelest) >> Primaria Secundaria y F.P Universitaria o superior >> Analfabetos 0 0 0 >> Primaria 1 0 0 >> Secundaria y F.P 0 1 0 >> Universitaria o superior 0 0 1 >> >> La convierto a tipo ordered >> >> > datos.bin$nivelest <- ordered(datos.bin$nivelest) >> > class(datos.bin$nivelest) >> [1] "ordered" "factor" >> > contrasts(datos.bin$nivelest) >> .L .Q .C >> [1,] -0.67082 0.5 -0.22361 >> [2,] -0.22361 -0.5 0.67082 >> [3,] 0.22361 -0.5 -0.67082 >> [4,] 0.67082 0.5 0.22361 >> >> Y la utilizo por ejemplo en un glm >> >> > res <- glm(uso_int ~ nivelest, data=datos.bin, family=binomial) >> > summary(res) >> >> Call: >> glm(formula = uso_int ~ nivelest, family = binomial, data >> datos.bin) >> >> Deviance Residuals: >> Min 1Q Median 3Q Max >> -2.265 -0.853 -0.144 0.559 3.024 >> >> Coefficients: >> Estimate Std. Error z value Pr(>|z|) >> (Intercept) -0.281 0.155 -1.81 0.07 . >> nivelest.L 5.309 0.408 13.01 < 2e-16 *** >> nivelest.Q -1.515 0.309 -4.90 9.7e-07 *** >> nivelest.C -0.171 0.157 -1.09 0.28 >> --- >> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 >> >> (Dispersion parameter for binomial family taken to be 1) >> >> Null deviance: 4817 on 3484 degrees of freedom >> Residual deviance: 3379 on 3481 degrees of freedom >> AIC: 3387 >> >> Number of Fisher Scoring iterations: 7 >> >> ¿Cómo hago para ajustar un modelo sólo con nivelest.L? >> >> Saludos. >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es@r-project.org <mailto:R-help-es@r-project.org> >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> >> > >[[alternative HTML version deleted]]
Ahora entendí De los cuatro valores solo utiliza el almacenado en [,2] descartando [,1] [,3] y [,4]. Y a ese valor lo introduce en el modelo. Claro, hay un proceso previo para conocer [,2]. Es una solución interesante, por lo menos para mi que uso mucho data.frame El 29 de abril de 2013 18:02, Jose Luis Cañadas <canadasreche@gmail.com>escribió:> No sería eso, ya que el coeficiente asociado a nivelest.L es distinto si > en el modelo están nivelest.Q y nivelest.C que si sólo está nivelest.L. Lo > dicho, una forma de hacerlo es codificando manualmente. > > nivelest.ord[nivelest == "Analfabetos"] <- -0.67082 > nivelest.ord[nivelest == "Primarios"] <- -0.22361 > > y así sucesivamente, aunque bastaría con hacer > nivelest.ord <- as.numeric(nivelest) > en cuyo caso codifica de 1 a 4 . > > Lo que no sé es si hay una forma de sencilla de partiendo de un factor > ordenado, elegir la codificación .L o la .Q para introducirla en el modelo. > > Viendo la ayuda de model.matrix he dado con una solución. > > datos.bin$nivelest.lineal <- model.matrix( ~ datos.bin$nivelest)[,2] > > y luego meter nivelest.lineal en el modelo. > > res <- glm (uso_int ~ nivelest.lineal, data=datos.bin, family=binomial) > > summary(res) > > Call: > glm(formula = uso_int ~ nivelest.lineal, family = binomial, data > datos.bin) > > > Deviance Residuals: > Min 1Q Median 3Q Max > -2.710 -0.855 -0.304 0.660 2.489 > > Coefficients: > Estimate Std. Error z value Pr(>|z|) > (Intercept) 0.2971 0.0486 6.11 9.7e-10 *** > nivelest.lineal 4.9920 0.1885 26.48 < 2e-16 *** > > --- > Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 > > (Dispersion parameter for binomial family taken to be 1) > > Null deviance: 4817.0 on 3484 degrees of freedom > Residual deviance: 3434.1 on 3483 degrees of freedom > AIC: 3438 > > Number of Fisher Scoring iterations: 5 > > Saludos.. > > El 29/04/13 22:31, Javier Marcuzzi escribió: > > Aver si ahora entiendo, ¿sería como extraer solo algunos coeficientes? > Hay un pequeño escrito en: > http://stackoverflow.com/questions/4780152/extract-coefficients-from-glm-in-r > > Javier > > > El 29 de abril de 2013 17:20, Jose Luis Cañadas <canadasreche@gmail.com>escribió: > >> Hola Javier. >> La idea es que, al ser un factor ordenado, lo trata como si fuera una >> variable continua, >> pero en el modelo introduce el equivalente a nivelest, nivelest^2 y >> nivelest^3, pero sólo quiero el efecto lineal. Supongo que lo más sencillo >> sería crear una nueva variable donde si nivelest=="Analfabetos" >> nueva.variable==-0.67082 y así sucesivamente. >> Pero quizá haya una forma de decirle que se quede con una de las >> variables, en mi caso con nivelest.L. >> >> Saludos >> El 29/04/13 21:44, Javier Marcuzzi escribió: >> >> Estimado Jose Luis Cañadas >> >> No se si entiendo correctamente, pero ¿porque no escribe un modelo para >> cada nivel que le interesa?, o dicho de otro modo, a partir de datos.bin >> crea un data.frame para cada nivel que desea y utiliza el mismo modelo >> (cambiando el data.frame). >> >> O utilizar un modelo donde se trabaja de otra forma, pero como yo no >> uso glm no sabría si es correcto, pero la idea va por utilizar el factor en >> (fijos y aleatorios) ambas partes. >> >> Javier Marcuzzi >> >> >> El 29 de abril de 2013 15:41, Jose Luis Cañadas <canadasreche@gmail.com>escribió: >> >>> Hola. >>> >>> ¿Alguien sabe como elegir sólo el efecto lineal cuando tengo un factor >>> ordenado de 4 categorías? >>> >>> Pongo un ejemplo, mejor. >>> >>> Tengo la variable nivelest que en origen es de tipo factor >>> >>> Con contrasts veo las variables dicotómicas que usará R por ejemplo en >>> un modelo lineal. >>> >>> > contrasts(datos.bin$nivelest) >>> Primaria Secundaria y F.P Universitaria o superior >>> Analfabetos 0 0 0 >>> Primaria 1 0 0 >>> Secundaria y F.P 0 1 0 >>> Universitaria o superior 0 0 1 >>> >>> La convierto a tipo ordered >>> >>> > datos.bin$nivelest <- ordered(datos.bin$nivelest) >>> > class(datos.bin$nivelest) >>> [1] "ordered" "factor" >>> > contrasts(datos.bin$nivelest) >>> .L .Q .C >>> [1,] -0.67082 0.5 -0.22361 >>> [2,] -0.22361 -0.5 0.67082 >>> [3,] 0.22361 -0.5 -0.67082 >>> [4,] 0.67082 0.5 0.22361 >>> >>> Y la utilizo por ejemplo en un glm >>> >>> > res <- glm(uso_int ~ nivelest, data=datos.bin, family=binomial) >>> > summary(res) >>> >>> Call: >>> glm(formula = uso_int ~ nivelest, family = binomial, data = datos.bin) >>> >>> Deviance Residuals: >>> Min 1Q Median 3Q Max >>> -2.265 -0.853 -0.144 0.559 3.024 >>> >>> Coefficients: >>> Estimate Std. Error z value Pr(>|z|) >>> (Intercept) -0.281 0.155 -1.81 0.07 . >>> nivelest.L 5.309 0.408 13.01 < 2e-16 *** >>> nivelest.Q -1.515 0.309 -4.90 9.7e-07 *** >>> nivelest.C -0.171 0.157 -1.09 0.28 >>> --- >>> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 >>> >>> (Dispersion parameter for binomial family taken to be 1) >>> >>> Null deviance: 4817 on 3484 degrees of freedom >>> Residual deviance: 3379 on 3481 degrees of freedom >>> AIC: 3387 >>> >>> Number of Fisher Scoring iterations: 7 >>> >>> ¿Cómo hago para ajustar un modelo sólo con nivelest.L? >>> >>> Saludos. >>> >>> _______________________________________________ >>> R-help-es mailing list >>> R-help-es@r-project.org >>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>> >> >> >> > >[[alternative HTML version deleted]]
mire inline abajo. 2013/4/29 Javier Marcuzzi <javier.ruben.marcuzzi en gmail.com>:> Aver si ahora entiendo, ¿sería como extraer solo algunos coeficientes? > Hay un pequeño escrito en: > http://stackoverflow.com/questions/4780152/extract-coefficients-from-glm-in-r > > JavierNo, creo que quiere solo estimar constante+efecto lineal. Esto se puede hacer, olvidé los detalles, construyendo el matrixz de contrastes al mano, o talvez usar el estandar, pero omitir unas columnas! Kjetil> > > El 29 de abril de 2013 17:20, Jose Luis Cañadas > <canadasreche en gmail.com>escribió: > >> Hola Javier. >> La idea es que, al ser un factor ordenado, lo trata como si fuera una >> variable continua, >> pero en el modelo introduce el equivalente a nivelest, nivelest^2 y >> nivelest^3, pero sólo quiero el efecto lineal. Supongo que lo más sencillo >> sería crear una nueva variable donde si nivelest=="Analfabetos" >> nueva.variable==-0.67082 y así sucesivamente. >> Pero quizá haya una forma de decirle que se quede con una de las >> variables, en mi caso con nivelest.L. >> >> Saludos >> El 29/04/13 21:44, Javier Marcuzzi escribió: >> >> Estimado Jose Luis Cañadas >> >> No se si entiendo correctamente, pero ¿porque no escribe un modelo para >> cada nivel que le interesa?, o dicho de otro modo, a partir de datos.bin >> crea un data.frame para cada nivel que desea y utiliza el mismo modelo >> (cambiando el data.frame). >> >> O utilizar un modelo donde se trabaja de otra forma, pero como yo no uso >> glm no sabría si es correcto, pero la idea va por utilizar el factor en >> (fijos y aleatorios) ambas partes. >> >> Javier Marcuzzi >> >> >> El 29 de abril de 2013 15:41, Jose Luis Cañadas <canadasreche en gmail.com>escribió: >> >>> Hola. >>> >>> ¿Alguien sabe como elegir sólo el efecto lineal cuando tengo un factor >>> ordenado de 4 categorías? >>> >>> Pongo un ejemplo, mejor. >>> >>> Tengo la variable nivelest que en origen es de tipo factor >>> >>> Con contrasts veo las variables dicotómicas que usará R por ejemplo en un >>> modelo lineal. >>> >>> > contrasts(datos.bin$nivelest) >>> Primaria Secundaria y F.P Universitaria o superior >>> Analfabetos 0 0 0 >>> Primaria 1 0 0 >>> Secundaria y F.P 0 1 0 >>> Universitaria o superior 0 0 1 >>> >>> La convierto a tipo ordered >>> >>> > datos.bin$nivelest <- ordered(datos.bin$nivelest) >>> > class(datos.bin$nivelest) >>> [1] "ordered" "factor" >>> > contrasts(datos.bin$nivelest) >>> .L .Q .C >>> [1,] -0.67082 0.5 -0.22361 >>> [2,] -0.22361 -0.5 0.67082 >>> [3,] 0.22361 -0.5 -0.67082 >>> [4,] 0.67082 0.5 0.22361 >>> >>> Y la utilizo por ejemplo en un glm >>> >>> > res <- glm(uso_int ~ nivelest, data=datos.bin, family=binomial) >>> > summary(res) >>> >>> Call: >>> glm(formula = uso_int ~ nivelest, family = binomial, data = datos.bin) >>> >>> Deviance Residuals: >>> Min 1Q Median 3Q Max >>> -2.265 -0.853 -0.144 0.559 3.024 >>> >>> Coefficients: >>> Estimate Std. Error z value Pr(>|z|) >>> (Intercept) -0.281 0.155 -1.81 0.07 . >>> nivelest.L 5.309 0.408 13.01 < 2e-16 *** >>> nivelest.Q -1.515 0.309 -4.90 9.7e-07 *** >>> nivelest.C -0.171 0.157 -1.09 0.28 >>> --- >>> Signif. codes: 0 ?***? 0.001 ?**? 0.01 ?*? 0.05 ?.? 0.1 ? ? 1 >>> >>> (Dispersion parameter for binomial family taken to be 1) >>> >>> Null deviance: 4817 on 3484 degrees of freedom >>> Residual deviance: 3379 on 3481 degrees of freedom >>> AIC: 3387 >>> >>> Number of Fisher Scoring iterations: 7 >>> >>> ¿Cómo hago para ajustar un modelo sólo con nivelest.L? >>> >>> Saludos. >>> >>> _______________________________________________ >>> 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]] > > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- "If you want a picture of the future - imagine a boot stamping on the human face - forever." George Orwell (1984)