Hola a todos! Tengo una duda acerca de una glm muy simple que estoy haciendo para analizar bioensayos de mortalidad con sedimento extraído en cuatro estaciones de un puerto. El modelo es el siguiente: m1<-glm (cbind (Mortalidad,Sobrev)~Muestra, family=binomial,data=dat2) summary(m1) Call: glm(formula = cbind (Mortalidad, Sobrev) ~ Muestra, family binomial, data = dat2) Deviance Residuals: Min 1Q Median 3Q Max -2.80372 -0.44368 -0.00019 0.58488 1.78081 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -20.12 2587.87 -0.008 0.994 MuestraB1 19.39 2587.87 0.007 0.994 MuestraB2 19.27 2587.87 0.007 0.994 MuestraC 17.92 2587.87 0.007 0.994 (Dispersion parameter for binomial family taken to be 1) Null deviance: 41.324 on 14 degrees of freedom Residual deviance: 19.340 on 11 degrees of freedom AIC: 51.564 Number of Fisher Scoring iterations: 17 El control (intercept) tiene mortalidad cero, lo cual explica el resultado erróneo. Me aconsejaron utilizar un aproximación numérica exacta. Alguien sabe si hay algún paquete en R que lo haga? SaludosMatias [[alternative HTML version deleted]]
Hola, ¿qué tal? ¿Cómo son tus datos? Para un modelo como el que planteas, deberían tener cuatro filas (una para cada grupo) y en tal caso, sospecho, los grados de libertad menores. ¿Tienes varias filas por grupo con proporciones de mortalidad muy desiguales? ¿Existen otras variables independientes que estás ignorando (que podrían explicar lo elevado de la varianza de tus coeficientes)? Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 3 de febrero de 2015, 16:17, Matias Ledesma <matutetote en hotmail.com> escribió:> > > > Hola a todos! > > > > Tengo una duda acerca de una glm muy simple que estoy haciendo para > analizar bioensayos de mortalidad con > sedimento extraído en cuatro estaciones de un puerto. > > > > El modelo es el siguiente: > > > > m1<-glm (cbind (Mortalidad,Sobrev)~Muestra, family=binomial,data=dat2) > > summary(m1) > > > > Call: > > glm(formula = cbind (Mortalidad, Sobrev) ~ Muestra, family > binomial, > > data = dat2) > > > > Deviance Residuals: > > Min > 1Q Median 3Q > Max > > -2.80372 -0.44368 -0.00019 0.58488 1.78081 > > > > > Coefficients: > > Estimate Std. Error z value > Pr(>|z|) > > (Intercept) -20.12 2587.87 -0.008 > 0.994 > > MuestraB1 19.39 2587.87 0.007 > 0.994 > > MuestraB2 19.27 2587.87 0.007 > 0.994 > > MuestraC > 17.92 2587.87 0.007 0.994 > > > > (Dispersion parameter for > binomial family taken to be 1) > > > > Null > deviance: 41.324 on 14 degrees of freedom > > Residual deviance: 19.340 > on 11 degrees of freedom > > AIC: 51.564 > > > > Number of Fisher Scoring > iterations: 17 > El control (intercept) tiene mortalidad cero, lo cual explica el resultado erróneo. Me aconsejaron utilizar un aproximación numérica exacta. Alguien sabe si hay algún paquete en R que lo haga? > > > SaludosMatias > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >
Hola, ¿qué tal? Leyendo con más cuidado me he dado cuenta de lo de los cero casos en control. Tu problema se puede reproducir con un ejemplo como dat <- data.frame(a = c(10, 10, 10, 10), b = c(0,2,3,4), grupo = letters[1:4]) res <- glm(cbind(a,b) ~ grupo, data = dat, family = binomial) summary(res) La culpa de todo la tiene ese cero en el primer grupo. Los coeficientes de tu modelo son los logaritmos del "odds ratio" entre tus tratamientos y control. Que es un número muy grande según tus resultados e infinito en un cálculo exacto (porque los "odds" de control son exactamente cero). Por eso creo que no te salvará un "cálculo exacto". Lo que igual te podría servir (sobre todo con un tamaño muestral pequeño) es una aproximación bayesiana en la que la priori del control no sea un cero. La función glmer (de lme4) te podría servir. Se trata de compensar tu pequeño tamaño muestral con el conocimiento "a priori" de que algún tipo de mortalidad tiene que haber en el grupo de control, aunque por "accidente" no se haya registrado muerte alguna en él. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 3 de febrero de 2015, 16:17, Matias Ledesma <matutetote en hotmail.com> escribió:> > > > Hola a todos! > > > > Tengo una duda acerca de una glm muy simple que estoy haciendo para > analizar bioensayos de mortalidad con > sedimento extraído en cuatro estaciones de un puerto. > > > > El modelo es el siguiente: > > > > m1<-glm (cbind (Mortalidad,Sobrev)~Muestra, family=binomial,data=dat2) > > summary(m1) > > > > Call: > > glm(formula = cbind (Mortalidad, Sobrev) ~ Muestra, family > binomial, > > data = dat2) > > > > Deviance Residuals: > > Min > 1Q Median 3Q > Max > > -2.80372 -0.44368 -0.00019 0.58488 1.78081 > > > > > Coefficients: > > Estimate Std. Error z value > Pr(>|z|) > > (Intercept) -20.12 2587.87 -0.008 > 0.994 > > MuestraB1 19.39 2587.87 0.007 > 0.994 > > MuestraB2 19.27 2587.87 0.007 > 0.994 > > MuestraC > 17.92 2587.87 0.007 0.994 > > > > (Dispersion parameter for > binomial family taken to be 1) > > > > Null > deviance: 41.324 on 14 degrees of freedom > > Residual deviance: 19.340 > on 11 degrees of freedom > > AIC: 51.564 > > > > Number of Fisher Scoring > iterations: 17 > El control (intercept) tiene mortalidad cero, lo cual explica el resultado erróneo. Me aconsejaron utilizar un aproximación numérica exacta. Alguien sabe si hay algún paquete en R que lo haga? > > > SaludosMatias > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >