4 votos

¿Puede R geeglm manejar datos de proporción?

Quiero ajustar un modelo de regresión para ver si hay cambios en la proporción de estudiantes de primer año a lo largo de los años. Tengo datos de recuento para el recuento total de estudiantes de primer año (FirstTimeStudents) y el recuento total de todos los estudiantes (TotalStudents). Quiero ajustar un modelo GEE con estos datos y escribí el siguiente código. Mis resultados para los coeficientes son todos NA

combFirstYear = geeglm(cbind(data$FirstTimeStudents, data$TotalStudents -
data$FirstTimeStudents) ~ Year, family=binomial(logit), data=data, id=DeptID,
corstr="independence")

summary(combFirstYear)

La razón por la que ajusté el modelo de esta manera es porque leí en este sitio web sobre hacer algo similar usando glm y funciona. Pero por algunas razones, no funciona con geeglm. Si a alguien se le ocurre otra forma de responder a esta pregunta en términos de proporción, también lo agradecería.

Dice: "R puede manejar esto usando glm con la familia binomial(link="logit"), con una variable dependiente que es en realidad un objeto de dos vectores, siendo el primero el número de "éxitos" y el segundo el número de "fracasos"."

Este es un ejemplo de la modelización de la cobertura de la cicuta con respecto a la total. El ejemplo es un poco forzado (ya que no son muestras reales de individuos) pero se entiende la idea. Comenzamos generando la cobertura sumada de todas las especies para cada parcela:

sumcover = tapply(dat $ cover,dat $plotID,sum)`

coverdat = data.frame(names(sumcover),sumcover)

Ahora fusionamos estos datos con nuestro objeto hemlock dat5, basado en plotID:

dat6 = merge(dat5,coverdat,all.x=T,by.x=1,by.y=1)

Y crear nuestras variables de respuesta de cobertura de cicuta (éxitos) y cobertura total menos cobertura de cicuta (fracasos):

cover.y = cbind(dat6$cover,dat6$sumcover-dat6$cover)

Ahora podemos modelar estos datos como un proceso binomial de número variable de ensayos por observación: glm6 = glm(cover.y~disturb*elev,data=dat6,family=binomial)

summary(glm6)

2voto

RyanFrost Puntos 310

Puede utilizar el weights parámetro de geeglm para incorporar los recuentos totales. Esta formulación del modelo requiere que la respuesta sea la proporción (en lugar de los recuentos brutos), con el weights ajustado a los recuentos totales.

En este caso, la llamada sería así:

data$FirstTimeProp <- data$FirstTimeStudents / data$TotalStudents

combFirstYear <- geeglm(data$FirstTimeProp ~ Year, family=binomial(logit), 
                        data=data, id=DeptID, corstr="independence",
                        weights = data$TotalStudents)

Este enfoque también funciona con el glm función.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X