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 (< [email protected]>) 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 (<[email protected]>) > > 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 (<[email protected]>) > >> 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/ > >> > > > > -- > 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]] _______________________________________________ R-help-es mailing list [email protected] https://stat.ethz.ch/mailman/listinfo/r-help-es
