Un ejemplo con un modelo más simple:
He especificado este modelo:
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:
(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
[1] 0.5467416
Si transformo los coeficientes:
(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 en 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 en gmail.com>)
escribió:
Estimad en s errer en 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/