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 leaps
función de saltos de paquetes no parece hacer una regresión logística.
Cualquier ayuda o sugerencia sería muy apreciada.
Respuestas:
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
fuente
lrm
, o su libro de texto RMS para más información).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 CR2 AIC BIC
La regresión logística se estima mediante el método de máxima verosimilitud, por
leaps
lo que no se usa directamente aquí. Una extensión deleaps
aglm()
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).
fuente
R2R2 is not an appropriate goodness-of-fit measure for logistic regression take an information criterion AICAIC or BICBIC
bestglm
, se utilizaleaps
en 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!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.
fuente
stats::step
de función o el más generalMASS::stepAIC
de apoyo funciónlm
,glm
(regresión logística es decir,) yaov
de la familia de modelos.fuente