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

