Regresión logística ponderada de casos

9

Estoy viendo algunos problemas de regresión logística. ("regular" y "condicional").

Idealmente, me gustaría ponderar cada uno de los casos de entrada para que la glm se centre más en predecir correctamente los casos con mayor ponderación a expensas de posiblemente clasificar erróneamente los casos con menor ponderación.

Seguramente esto ya se ha hecho antes. ¿Alguien puede señalarme alguna literatura relevante (O posiblemente sugerir una función de probabilidad modificada).

¡Gracias!

Noé
fuente
1
Asume que la meta es la clasificación, en lugar de la predicción. Para una estimación óptima de las probabilidades, no necesita volver a pesar nada. Los "falsos negativos" y los "falsos positivos" solo ocurren con elecciones forzadas, y generalmente nadie está forzando una elección puramente binaria.
Frank Harrell
@ Frank Has hecho un buen punto. Finalmente, el objetivo de este proyecto es predecir el resultado de más eventos. (Por lo tanto, supongo que puede considerarse como una experiencia de aprendizaje automático con datos de entrenamiento). Algunos resultados son más "importantes" que otros, por lo que estaba buscando una forma de ponderarlos en consecuencia. La sugerencia de Nick para la función de probabilidad tiene sentido y debe ser bastante trivial de implementar en el código.
Noah
1
Parece que necesita exactamente un modelo de probabilidad sin necesidad de pesas.
Frank Harrell
1
Derecho; conecte la función de costo y use la probabilidad pronosticada y tendrá una decisión óptima.
Frank Harrell
1
Con un modelo de probabilidad bien calibrado no hay "errores", solo hay aleatoriedad que no se puede predecir. Las decisiones óptimas son una función de la probabilidad pronosticada y la función de costo para tomar varias decisiones para actuar.
Frank Harrell

Respuestas:

3

glmcontiene un parámetro weightsexactamente para este propósito. Le proporciona un vector de números en cualquier escala, que contiene el mismo número de pesos que tiene observaciones.

Solo ahora me doy cuenta de que tal vez no estés hablando R. Si no, es posible que desee.

Nick Sabbe
fuente
Estoy muy familiarizado con R, sin embargo, me gustaría entender las matemáticas detrás de la función de probabilidad. Podría codificar esto en C ++ o en algún otro lenguaje. (Solo confiar en la "caja negra" de la función glm no siempre es la mejor solución)
Noah
Ah Bien en ti. Bueno, hasta donde yo sé, los pesos simplemente se usan para multiplicar la probabilidad de observación por observación con. Entonces, si ha escrito una versión no ponderada, agregar los pesos debería ser un obstáculo. Tenga en cuenta también que siempre puede mirar el código fuente para glm(probablemente) encontrar una implementación en C.
Nick Sabbe
2
3,.57,.53,7
3
Aquí hay una discusión del argumento de 'pesos' en un tablero de mensajes: r.789695.n4.nabble.com/Weights-in-binomial-glm-td1991249.html
Macro
@Macro: gracias! Muy aseado. Una de las cosas que podría haberme golpeado en los dientes si lo hubiera usado antes de tu comentario :-)
Nick Sabbe
1

Si tiene acceso a SAS, esto se logra muy fácilmente usando PROC GENMOD. Siempre que cada observación tenga una variable de peso, el uso de la declaración de peso le permitirá realizar el tipo de análisis que está buscando. Principalmente lo he usado usando ponderaciones de probabilidad de tratamiento inversa, pero no veo ninguna razón por la que no pueda asignar ponderaciones a sus datos para enfatizar ciertos tipos de casos, siempre y cuando se asegure de que su N permanezca constante. También querrá asegurarse de incluir algún tipo de variable de ID, porque técnicamente los casos ponderados son observaciones repetidas. Código de ejemplo, con un ID de observación de 'id' y una variable de peso de 'wt':

proc genmod data=work.dataset descending;
    class id;
    model exposure = outcome covariate / dist=bin link=logit;
    weight wt;
    repeated subject=id/type=ind;
run;
Fomite
fuente