Agregar pesos a la regresión logística para datos desequilibrados

21

Quiero modelar una regresión logística con datos desequilibrados (9: 1). Quería probar la opción de pesos en la glmfunción en R, pero no estoy 100% seguro de lo que hace.

Digamos que mi variable de salida es c(0,0,0,0,0,0,0,0,0,1). ahora quiero darle al "1" 10 veces más peso. entonces doy el argumento de los pesos weights=c(1,1,1,1,1,1,1,1,1,1,1,10).

Cuando haga eso, se considerará en el cálculo de la probabilidad máxima. Estoy en lo cierto? La clasificación incorrecta de "1" es solo 10 veces peor que la clasificación incorrecta de un "0".

ching
fuente

Respuestas:

11

Ching, no tiene que equilibrar su conjunto de datos en términos de 1 y 0. Todo lo que necesita es un número suficiente de 1 para que converja la probabilidad máxima. Si observa la distribución de 1 (100,000) en su conjunto de datos, no debería tener ningún problema. Puedes hacer un experimento simple aquí

  1. Pruebe el 10% de los 1 y el 10% de los 0 y use un peso de 10 para ambos
  2. Pruebe el 100% de los 1 y el 10% de los 0 y use un peso de 10 para los 0

En ambos casos, obtendrá estimaciones idénticas. Nuevamente, la idea de ponderación está relacionada con el muestreo. Si está utilizando todo el conjunto de datos, no debe ponderarlo. Si yo fuera usted, usaría el 10% de los 1 y el 10% de los 0.

En R, lo usarías glm. Aquí hay un código de muestra:

glm(y ~ x1 + x2, weights = wt, data =data, family = binomial("logit"))

En su conjunto de datos debe haber una variable wtpara los pesos.

Si usa el 10% de ambos 0 y 1, su wtvariable tendrá un valor de 10.

Si usa el 10% de los 0 y el 100% de los 1: la wtvariable tendrá un valor de 10 para observaciones con y = 0 y 1 para observaciones con y = 1

subra
fuente
12

La ponderación es un procedimiento que pondera los datos para compensar las diferencias en la muestra y la población (King 2001). Por ejemplo, en eventos raros (como fraude en el riesgo de crédito, muertes en la literatura médica) tendemos a muestrear todos los 1 (eventos raros) y una fracción de 0 (no eventos). En tales casos, tenemos que ponderar las observaciones en consecuencia.

Ejemplo: Digamos, en una población de 500,000 transacciones hay 50 transacciones fraudulentas. En este caso lo harías

  1. Muestra de las 50 transacciones de fraudes (100% del fraude)
  2. 10% de las transacciones buenas (10% de 500,000 son 50,000 transacciones buenas)

En este caso, asignaría un peso de 1 para transacciones fraudulentas y un peso de 10 para transacciones buenas. Esto se llama método ponderado de máxima verosimilitud. La conclusión importante es que la ponderación está relacionada con las proporciones de muestreo

Consulte: Regresión logística en datos de eventos raros (King 2001)

subra
fuente
hola subra !!! muchas gracias por el enfoque del rey !! ¡No he oído hablar de eso! en mi caso tengo 1 millón de transacciones! (900.000 son "0" y 100.000 son "1"). Entonces, ¿debería probar el 10% de mi "0"? entonces tengo casi un conjunto de datos equilibrado. entonces tengo que ponderar el "0" diez veces más que el "1" ¿verdad? y la función en R glm () en el paquete MASS hace exactamente eso? Si pongo en cuenta mis observaciones, ¿calcularé la probabilidad máxima ponderada? ¡gracias! realmente aprecio tu respuesta y ayuda
ching
Realmente pienso mucho en este problema. ¿Qué pasa si digo: ahora uso todos mis datos para construir un modelo logit (con los datos desequilibrados 9: 1). y luego peso diez veces mi "1", aunque en realidad no tengo más datos y NO es el 10% de mis datos. es como si actuara como si lo hubiera hecho ... así que ahora, cuando R calcula el modelo, piensa que solo uso el 10% de mi "1" y lo considera en el cálculo de la probabilidad. ¿Tiene eso algún sentido?
ching