Isa García Barón
2014-Nov-14 09:46 UTC
[R-es] Cómo aplicar weights a las observaciones en un GLM binomial
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]]
Jose Luis Cañadas Reche
2014-Nov-14 10:23 UTC
[R-es] Cómo aplicar weights a las observaciones en un GLM binomial
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
Víctor Granda García
2014-Nov-14 11:14 UTC
[R-es] Cómo aplicar weights a las observaciones en un GLM binomial
Hola Isa. No se si te servirá, pero también puedes probar con una distribución Zero Inflated Negative Binomial. Tienes una buena descripción y aplicación en R en esta página: http://www.ats.ucla.edu/stat/r/dae/zinbreg.htm Espero que te sirva. El Fri Nov 14 2014 at 11:24:43, Jose Luis Cañadas Reche (< canadasreche en gmail.com>) escribió:> 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 > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Carlos J. Gil Bellosta
2014-Nov-14 13:39 UTC
[R-es] Cómo aplicar weights a las observaciones en un GLM binomial
Hola, ¿qué tal? Yo te recomendaría echarle un vistazo a http://gking.harvard.edu/files/0s.pdf y en particular, a la sección 4.1. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 14 de noviembre de 2014, 10:46, Isa García Barón <xanamb en gmail.com> 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