[R-es] Cómo aplicar weights a las observaciones en un GLM binomial

Jose Luis Cañadas Reche canadasreche en gmail.com
Vie Nov 14 11:23:36 CET 2014


Hola.
Hay varias opciones de aplicar ponderaciones a las observaciones en un glm.
Utilizar svyglm dentro de la librería survey. Esta función calcula 
correctamente los errores estándar de los coeficientes.

Sería algo como .

library(survey)

# objeto del diseño muestral

ddatos <- svydesign(id=~1, weights =~ tus.pesos, data = tus.datos)

# en caso de una reg logística

modelo <- svyglm(respuesta~ var1 + var2, family = binomial, design = ddatos)


Otra opción sería la librería rms

library(rms)
# reg logistica
modelo.lrm <- lrm(respuesta ~ var1 + var2, weights = tus.pesos)

Y alguna más que puede servir si tienes pocas variables predictoras

tabla <- with(tus.datos, xtabs(tus.pesos ~ respuesta + var1 + var2)

datos.nuevos <- data.frame(tabla)

modelo <- glm(respuesta ~ var1 + var2, family=binomial, weights=Freq, 
data=datos.nuevos)

Compara los resultados con lo que te sale al usar glm con la opción 
weights. Para mí, la mejor opción es usar la librería survey, ya que 
permite utilizar no sólo ponderaciones sino también diseños muestrales 
complejos.

Espero que te sirva.

El 14/11/14 a las 10:46, Isa García Barón escribió:
> Hola, espero ser clara en el mensaje ya que es la primera vez que recurro a
> este tipo de ayudas, explico mi duda:
>
> Tengo un dataset con 4505 observaciones en el que la variable dependiente
> son presencias (n=97 y clasificadas como 1) y ausencias (n=4408 y
> clasificadas como 0). Mi primer paso fue realizar un GLM con una muestra
> compensada de ausencias y presencias para la variable dependiente, es decir
> 97 presencias y 97 ausencias. Sin embargo, como todo lo que tengo son
> ausencias y no pseudoausencias me recomendaron utilizar las 97 presencias
> frente a todas las ausencias, aquí viene el problema. Si realizo un GLM con
> ausencia/presencia como variable dependiente no siendo ésta proporcional
> entre 1 y 0 debo ponderar las observaciones, lo cuál creo que se realiza
> añadiendo el vector "weights" a la función, quedando asi:
>
> modelo <- glm(v_dependiente ~ v1 + v2 + v3, data = datset, weights="x",
> family = binomial (link=logit)
>
> Mi duda es cómo calcular el factor de ponderación de las presencias y las
> ausencias para crear el vector que pueda introducir en la función weights.
>
> Muchas gracias! Un saludo
>
> *-------------*
> *Isabel García Barón*
>
> 	[[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



Más información sobre la lista de distribución R-help-es