[R-es] Coeficientes GLM binomial

Jaume Tormo j@utorb|@ @end|ng |rom gm@||@com
Vie Dic 13 13:24:19 CET 2019


Hola de nuevo,

Ya está resuelto ¡Muchísimas gracias a los tres!

Jaume.


El jue., 5 dic. 2019 a las 10:19, Marcelino De La Cruz Rot (<
marcelino.delacruz using urjc.es>) escribió:

> Hola Jaume:
> Los datos que pones en la fórmula son diferentes de los que introduces
> en el newdata en la función predict(). Además, el Intercept en la
> fórmula lo lo has metido cambiado de signo. Si lo haces correctamente,
> coinciden el resultado del predict y el resultado de la fórmula:
>
>  > prob<- -1.89521331-0.02303313*(25)+4.74499714*(0)+0.02043222*(3)
>  > antilogit(prob)
> [1] 0.08243261
>  >
>
> Saludos,
>
> MArcelino
>
> El 05/12/2019 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/
> >>
> >
>
> --
> Marcelino de la Cruz Rot
> Depto. de Biología y Geología
> Física y Química Inorgánica
> Universidad Rey Juan Carlos
> Móstoles España
>
>

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