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 (<jautor...@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 (<jautor...@gmail.com>) >> escribió: >> >>> Estimad@s errer@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]] _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es