¿Cómo hacer la selección del subconjunto de regresión logística?


47

Estoy ajustando una glm familiar binomial en R, y tengo toda una serie de variables explicativas, y necesito encontrar la mejor (R al cuadrado como medida está bien). A falta de escribir un guión para recorrer diferentes combinaciones aleatorias de las variables explicativas y luego registrar cuál funciona mejor, realmente no sé qué hacer. Y la leapsfunción de saltos de paquetes no parece hacer una regresión logística.

Cualquier ayuda o sugerencia sería muy apreciada.


Existen funciones que realizan búsquedas automáticas. Deberías echar un vistazo a la función de paso . La sección 5.4 ilustra ese punto: data.princeton.edu/R/glms.html
ocram

Lo siento, pero mi publicación ha sido editada para que ya no haga mi pregunta. Tengo 35 (26 significativas) variables explicativas en mi modelo de regresión logística. Necesito la mejor combinación posible de 8, no el mejor subconjunto, y en ningún momento me interesó un enfoque de estilo gradual o de todos los subconjuntos. No hay margen de maniobra en este 8. Simplemente pensé que alguien podría saber cómo podría encajar todas las combinaciones de 8 variables explicativas y podría decirme cuál maximiza la probabilidad (perdón por el pedo cerebral R-cuadrado pero AIC tampoco es relevante ya que Tengo un número fijo de parámetros, 8).
Leendert

Puede volver a la versión anterior de su publicación o combinar ambas ediciones. Estoy seguro de que @mpiktas fue de buena intención al intentar mejorar su apariencia y simplemente no notó los parámetros No.
chl

@ Todos: Muchas gracias. Al final utilicé muchas cosas diferentes con la esperanza de que todos dieran respuestas similares. Y lo hicieron. Utilicé los paquetes BMA, bestglm y glmnet, así como la función de paso. Modelos ajustados con todos ellos, y no hubo discrepancia en lo que BMA con maxcol = 9 y paso consideró el mejor modelo. Todos los expertos en el campo a mi alrededor parecían muy contentos con las variables, y sintieron que era bastante progresivo. Así que gracias por toda la entrada. Realmente lo usé todo.
Leendert

glmulti también es un buen paquete para la mejor selección de subconjuntos, y ese le permite especificar el número máximo de variables en su modelo, y también le permite a uno considerar todos los posibles efectos de interacción de primer orden
Tom Wenseleers

Respuestas:


28

Los métodos paso a paso y "todos los subconjuntos" son generalmente malos. Consulte Detener paso a paso: por qué los métodos por pasos son malos y qué debe usar David Cassell y yo (usamos SAS, pero se aplica la lección) o Estrategias de modelado de regresión de Frank Harrell. Si necesita un método automático, le recomiendo LASSO o LAR. Un paquete LASSO para regresión logística está disponible aquí , otro artículo interesante está en el LASSO iterado para logística


66
(+1) Acerca de los paquetes R, también hay glmnet (implementación con algoritmo de descenso de coordenadas, Friedman y coll.) Y penalizado (permite mantener algunas variedades sin convertir). Es de destacar que F. Harrell proporciona una estimación de ML penalizada para GLM (ver lrm, o su libro de texto RMS para más información).
chl

(+1) Buen artículo, parece que tengo que comenzar a ir mucho más allá de los estados del autor en la pregunta (no la primera vez que no lo hice). @chl (+1) sugerencias alternativas perfectas también.
Dmitrij Celov

@chl: +1 para glmnet, ese es un gran paquete.
Zach

1
@chl ¡Gracias! Uno de los problemas con R es hacer un seguimiento de los paquetes (¡hay tantos!) Y cuáles son los mejores. Las vistas de tareas sí ayudan
Peter Flom - Restablece a Monica

2
Si sus variables son colineales, es mejor usar una red elástica usando glmnet, digamos con alpha = 0.5, ya que LASSO tiende a expulsar al azar variables altamente colineales del modelo
Tom Wenseleers

15

En primer lugar, no es una medida de bondad de ajuste adecuada para la regresión logística, tome un criterio de información o , por ejemplo, como una buena alternativa. A I C B I CR2AICBIC

La regresión logística se estima mediante el método de máxima verosimilitud, por leapslo que no se usa directamente aquí. Una extensión de leapsa glm()las funciones es la bestglm paquete (como se suele seguir la recomendación, consulte viñetas allí).

También te puede interesar el artículo de David W. Hosmer, Borko Jovanovic y Stanley Lemeshow. Los mejores subconjuntos Regresión logística // Biometrics vol. 45, núm. 4 (diciembre de 1989), págs. 1265-1270 (generalmente accesible a través de las redes universitarias).


2
Si bien su comentario sobre es peor que es útil en general, en realidad no hace ninguna diferencia a menos que esté comparando modelos de diferentes tamaños. El OP establece claramente que solo les interesan modelos variables, por lo que y volverán a elegir el modelo con la mayor probabilidad. Esto es equivalente a la adaptación . B I C , A I C 8 B I C A I C R 2R2BIC,AIC8BICAICR2
probabilityislogic

Gracias por el comentario, pero los comentarios de chl a continuación explican por qué es peligroso el número fijo de variables explicativas. Por cierto, la respuesta apareció antes que el comentario con respecto a (¿hasta?) Variables rstriction;)8
Dmitrij Celov

cualquier referencia académica paraR2R2 is not an appropriate goodness-of-fit measure for logistic regression take an information criterion AICAIC or BICBIC
SIslam

Una nota sobre bestglm, se utiliza leapsen el back-end para el cálculo! Por lo tanto, fallará si hay NA en el conjunto de datos y aparecerá un mensaje como `` Error in leaps.setup(x, y, wt = weights, nbest = nbest, nvmax = nvmax, : NA/NaN/Inf in foreign function call (arg 3) Pero lo que es interesante, mi conjunto de datos no tiene NA, más bien algunos ceros, ¡sin embargo, esta función se queja y da ese mensaje exacto!
SIslam

glmnet también es bueno, y también puede hacer modelos que consideren todos los posibles efectos de interacción de primer orden
Tom Wenseleers

6

Una idea sería usar un bosque aleatorio y luego usar las medidas de importancia variable que genera para elegir sus mejores 8 variables. Otra idea sería utilizar el paquete "boruta" para repetir este proceso unos cientos de veces para encontrar las 8 variables que son consistentemente más importantes para el modelo.


@Zach ¿Sugiere confiar en los RF para realizar la selección de funciones y luego aplicar un GLM, en este caso, existe el riesgo de sobreajuste o optimismo excesivo, o usar RF (con medidas estándar de importancia variable, o selección relevante) como una herramienta independiente?
chl

@chl: Estaba sugiriendo usar los RF para realizar la selección de funciones y luego aplicar el GLM. Estoy de acuerdo en que existe el riesgo de un ajuste excesivo, pero el OP dijo que necesitaba exactamente 8 variables.
Zach

1
@Zach "exactamente 8 variables" ... Entonces, estás haciendo un umbral suave de las variables potenciales de interés en función de una medida de importancia variable (que, debido a que se basa en la permutación y el doble muestreo, se supone que está libre de sesgos) y luego reinyectarlos en un GLM. En mi humilde opinión, rompes el control sobre el sobreajuste ejercido a través del embolsado. Esto también se describe en ESLII de Hastie et al .: la selección de características, si corresponde, debe incluirse en el procedimiento de validación cruzada (donde la validación cruzada incluye la evaluación del rendimiento del modelo).
chl

@chl: ¿El paquete r "boruta" no se valida al ejecutar el bosque aleatorio varias veces? Básicamente, ¿está diciendo que necesitamos "validación cruzada meta", donde hace la selección de variables y ajusta su modelo en subconjuntos aleatorios de datos?
Zach

3
@Zach Mi punto fue que el ensacado, o en particular las RF, evitan el sobreajuste (hasta cierto punto) siempre que permanezca en la misma cadena de herramientas. Si usa los resultados de RF y luego ve cómo se comportaría otro modelo con los mismos datos, entonces rompe el bucle CV. Pero, ¿por qué no usar RF directamente para la clasificación? Otra solución sería usar RF en una muestra de entrenamiento y luego aplicar el GLM en una muestra retenida (que también podría ser validada de forma cruzada).
chl

0

stats::stepde función o el más general MASS::stepAICde apoyo función lm, glm(regresión logística es decir,) y aovde la familia de modelos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.