Estoy tratando de predecir un resultado binario utilizando 50 variables explicativas continuas (el rango de la mayoría de las variables es $-\infty$ a $\infty$). Mi conjunto de datos tiene casi 24,000 filas. Cuando ejecuto glm
en R, obtengo:
Mensajes de advertencia:
1: glm.fit: el algoritmo no convergió
2: glm.fit: se produjeron probabilidades ajustadas numéricamente 0 o 1
He leído las otras respuestas que sugieren que podría estar ocurriendo una separación perfecta, pero estoy seguro de que ese no es el caso en mis datos (aunque podría existir una separación cuasi completa; ¿cómo puedo verificar si ese es el caso?). Si elimino algunas variables, es posible que desaparezca el error de "no convergió". Pero eso no siempre sucede.
Intenté usar las mismas variables en una función bayesglm
y obtuve los mismos errores.
¿Qué pasos tomarías para averiguar exactamente qué está pasando aquí? ¿Cómo descubres qué variables están causando los problemas?
7 votos
¿Por qué estás seguro de que no está ocurriendo separación? En el artículo
bayesglm
, argumentan que la separación es "un problema común, incluso cuando el tamaño de la muestra es grande y el número de predictores es pequeño"2 votos
Otra idea:
bayesglm
intenta evitar la separación agregando un anterior, pero con 24,000 filas, es probable que el anterior esté siendo aplastado por la verosimilitud. Intente reducirprior.scale
, posiblemente en gran medida. También considere aumentar los grados de libertad del anterior, lo que ayudará a descartar los valores grandes asociados con la separación.0 votos
Gracias por las sugerencias David. No creo que haya separación porque cuando ordeno cada una de las variables explicativas, la variable dependiente no siempre es verdadera o falsa para valores altos o bajos de las variables explicativas. A menos que esto se considere separación: la variable dependiente es verdadera para todos los x7 > 32 pero x7 es solo > 32 en 10 casos. ¿Hay alguna manera de verificar la separación fuera de una regresión logística? ¿O ver qué variable está causando la separación? Intenté tus sugerencias bayesglm (establecí prior.scale a 1 y prior.df a Inf) y aún así obtuve errores de Hauck Donner.
1 votos
relacionado preguntas
0 votos
"¿Cómo descubres qué variables están causando los problemas?" La búsqueda binaria siempre es una buena opción. Solo tienes 50 variables, así que si está perfectamente separado por una variable individual, 6 iteraciones encontrarán al culpable. Si son dos variables, como máximo se necesitarán 49+6=55 iteraciones para encontrarlo, en el peor de los casos.
0 votos
También ver mi demo, aquí
0 votos
Tuve un problema similar y ajusté el modelo con la función brglm en el paquete brglm en R. Misma sintaxis y todo y el modelo convergió y dio respuestas similares a glm en datos no problemáticos.