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 >