[R-es] Coeficientes GLM binomial

Álvaro Hernández Vicente @|v@rohv @end|ng |rom um@e@
Jue Dic 5 09:16:24 CET 2019


Hola, Jaume:

En la asignación de 'prob' te falta un signo menos (al no dejar espacios 
es algo difícil de ver) y no evalúas con los mismos datos que pones en 
el predict (tem = 25, pot = 0, time = 3). Cambiando eso ahora sí sale lo 
mismo, como debería.

> prob <- -1.89521331 - 0.02303313*25 + 4.74499714*0 + 0.02043222*3
> prob
[1] -2.409745
> exp(prob)/(1+exp(prob))
[1] 0.08243261

Un saludo
Álvaro

El 5/12/19 a las 7:28, Jaume Tormo escribió:
> Un ejemplo con un modelo más simple:
> He especificado este modelo:
>> formula(m2.pile)
> ger ~ tem + pot + time
> Si hago predict me da:
>> predict(m2.pile,newdata=data.frame(tem=25,pot=0,time=3),type="response")
> 0.08243262
> Extraigo los coeficientes:
>> coef(m2.pile)
> (Intercept)         tem         pot        time
> -1.89521331 -0.02303313  4.74499714  0.02043222
> Ahora calculo la probabilidad usando los coeficientes
>> prob<-1.89521331-0.02303313*(15)+4.74499714*(-0.3)+0.02043222*(3)
>> prob
> [1] 0.1875139
> Transformo la probabilidad por que no está en la forma de la respuesta
> antilogit<-function(x){exp(x)/(1+exp(x))} #función para transformar
>> antilogit(prob)
> [1] 0.5467416
>
> Si transformo los coeficientes:
>> antilogit(coef(m2.pile))
> (Intercept)         tem         pot        time
>    0.1306512   0.4942420   0.9913799   0.5051079
> Y aplico la formula
>> prob<-0.1306512-0.4942420*(15)+0.9913799*(-0.3)+0.5051079*(3)
>> prob
> [1] -6.065069
> Tampoco da nada parecido
>
> Como veis, en ningún caso, el resultado se parece en nada al valor del
> predict, no veo que estoy haciendo mal.
> ¿Alguna idea?
>
> Jaume.
>
> El jue., 5 dic. 2019 a las 6:44, Jaume Tormo (<jautorbla using gmail.com>)
> escribió:
>
>> Muchas gracias Marcelino y Manuel,
>>
>> He seguido vuestros consejos, pero sigo teniendo el mismo problema.
>> Creo que lo que me ocurre es que no se como montar la formula con los
>> valores de temperatura, potencial y tiempo.
>> Lo que quiero decir es:
>> Yo a R le especifico que el modelo es así:
>> ger~tem+pot+time+I(tem^2)+I(tem^2):pot
>> Pero para hacer eso a mano, con los valores de mis variables (temperatura,
>> potencial y tiempo) ¿La formula que debería usar es esta?
>> 0,0006077 + 0,7043138*temp + 0,9962766*pot + 0,5060756*time +
>> 0,4923288*temp^2 + 0,4997649*temp^2*pot
>> Donde los números son los valores de los coeficientes y temp, pot y time
>> son los valores de mis variables, los que cambio en la formula para
>> predecir la germinación en distintas condiciones.
>> Al hacer el predict me da valores entre 0 y 1 que son probabilidades, pero
>> al aplicar esta formula me da valores mayores de 1, no tiene sentido.
>> Preguntado de otra forma ¿Si en R pone I(tem^2):pot eso equivale a
>> 0,4997649*temp^2*pot? Siendo 0,4997649 el valor del coeficiente.
>>
>> Muchas gracias.
>>
>> Jaume.
>>
>>
>>
>> El jue., 28 nov. 2019 a las 13:27, Jaume Tormo (<jautorbla using gmail.com>)
>> escribió:
>>
>>> Estimad using s errer using s
>>>
>>> He hecho este modelo glm
>>> m1.pile<-glm(ger~tem+pot+time+I(tem^2)+I(tem^2):pot
>>>               ,family="binomial"
>>>               ,data=long.PILE
>>>               )
>>> Que nos da la probabilidad de germinación de una semilla en función de
>>> tem (Temperatura), pot (Humedad del suelo) y time (Tiempo que la semilla
>>> pasa en esas condiciones).
>>> Ahora quiero, para diferentes tem, pot y time, predecir la probabilidad
>>> de germinación.
>>> Para eso uso:
>>>
>>> predict(m1.pile,newdata=data.frame(tem=15,pot=-0.3,time=3),type="response")
>>> Con esto me da valores de probabilidad de germinación lógicos y
>>> razonables.
>>>
>>> Por razones ajenas a mi voluntad, necesito poder hacer esto mismo usando
>>> los coeficientes del modelo.
>>> Extraigo los coeficientes mediante:
>>> x<-coefficients(m1.pile)
>>> y los destransformo por que el GLM los transforma al decirle que es
>>> binomial (es lo mismo que hace “response” en el predict()... creo)
>>> Coeficientes buenos <- exp(x)/(1+exp(x))
>>>
>>> Hasta aquí todo teóricamente correcto ¿No?
>>> Al reconstruir la formula del modelo con los coeficientes buenos me queda
>>> esto:
>>> 0,0006077 + 0,7043138*temp + 0,9962766*pot + 0,5060756*time +
>>> 0,4923288*temp^2 + 0,4997649*temp^2*pot
>>>
>>> Pero al calcular esta formula con unos valores concretos de temp, pot y
>>> time, no me da los mismos valores que el predict con el mismo imput de
>>> temp, pot y time.
>>>
>>> Mi pregunta es ¿Lo que hay especificado en el modelo se corresponde con
>>> esta fórmula que yo he escrito aquí? Esa podría ser una causa del error.
>>> Mi otra pregunta es ¿Está bien el proceso que he hecho?
>>>
>>> Muchas gracias.
>>>
>>> Jaume.
>>>
>>> Dr. Jaume Tormo.
>>> Area of Ecology
>>> Departament of Agrarian and Environmental Sciences
>>> Technological College. Agri-food and Environment
>>> University of Zaragoza, Spain
>>> 0034 974292678
>>> https://es.linkedin.com/in/jaumetormo
>>> https://acercad.wordpress.com/
>>>
>>>
>>>
>>> --
>>> Jaume Tormo.
>>> https://es.linkedin.com/in/jaumetormo
>>> https://acercad.wordpress.com/
>>>
>>
>> --
>> Jaume Tormo.
>> https://es.linkedin.com/in/jaumetormo
>> https://acercad.wordpress.com/
>>
>

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es