¿Qué es la razón de momios u odds ratio?

| Última modificación: 24 de octubre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

La razón de momios se define como el cociente entre dos probabilidades; su valor está en el rango [0, ∞].

Muchos sitios traducen el concepto del inglés odds ratio por razón de probabilidades, pero en realidad no es una probabilidad lo que está en juego, sino el ratio, como bien lo indica la palabra. El ratio se traduce a cómo de probable es respecto a cómo de no probable es. En este post aprenderás sobre la razón de momios.

¿En qué consiste la razón de momios?

A continuación verás cómo se puede definir la razón de momios y cómo calcular odds ratio.

razón de momios

Tenemos un modelo de regresión lineal, señalada en el cuadro rojo, y le estamos aplicando la transformación señalada en el cuadro verde.

Si queremos calcular esto, ¿cómo lo podríamos resolver?

Pues podríamos dividir p entre 1 – p, el resultado, después de distintas operaciones, quedaría como el señalado en el recuadro azul, que representa la razón de momios y el resultado de calcular odds ratio:

Este resultado de calcular odds ratio es igual a la razón de momios o razón de odds.

Si aplicamos logaritmo a la izquierda y a la derecha, nos queda que el logaritmo de la razón de momios es igual a la regresión lineal.

Si aplicamos el logaritmo a la razón de monomios, tenemos un valor que está en el rango [-, ]:

La función de coste de la razón de momios o razón de odds que vamos a tratar de minimizar será:

Que transformamos y optimizamos en:

Aquí no miramos el error cuadrático medio, como lo hacíamos en otros ejercicios, sino que únicamente se optimiza hasta quedar en la fórmula de la imagen anterior.

Cuando queremos minimizar la función de coste, que es el error cuadrático medio y sigue un tipo distintivo de distribución, el resultado que obtenemos es la misma función de coste, pero transformada.

In [5] : summary (radar.train)
summary (radar.test)
distanciapotenciatipotipo.n
Min. : 16.0Min. : 0.002959ruido : 22Min : 0.0000
1st Qu. : 88.01st Qu. : 0.064261avion : 201st Qu. : 0.0000
Median : 152.0Median : 0.129854Median : 0.0000
Mean : 201.7Mean : 0.150611Mean : 0.4762
3rd Qu. : 340.23rd Qu. : 0.2535193rd Qu. : 1.0000
Max. : 485.0Max. : 0.315358Max : 1.0000
distanciapotenciatipotipo.n
Min. : 47.0Min. : 0.02761ruido : 7Min : 0.0000
1st Qu. : 142.51st Qu. : 0.07513avion : 11st Qu. : 0.0000
Median : 259.0Median : 0.16085Median : 1.0000
Mean : 261.0Mean : 0.15101Mean : 0.6111
3rd Qu. : 384.03rd Qu. : 0.199943rd Qu. : 1.0000
Max. : 453.0Max. : 0.31463Max : 1.0000

Vamos a ejecutar el modelo de razón de momios o razón de odds:

In [6] : model <- glm (data = radar.train, formula = tipo ~ distancia + potencia, family = binomial (link = "logit"))

betalg <- model$coefficients

ggplot (radar.train, aes (x = distancia, y = potencia, color = tipo)) + geom_point (size = 3) + geom_abline (intercept = (0.5 -beta [1]) / beta [3], slope = beta [2] / beta[3], color = "red") + geom_abline (intercept = betalg [1] / betalg [3], slope = -betalg [2] / betalg [3], color = "blue")

En este caso, hemos hecho la comparación de cómo saldría si hacíamos un modelo con regresión lineal y uno con regresión logística. El modelo de regresión logística sale un poco mejor.

El modelo de logística es el umbral que separa el decir sí (puntos azules) del decir no (puntos rosas). La línea roja corresponde a la regresión lineal y la línea azul hace referencia a la regresión logística.

La salida del modelo es log (odds) de la razón de odds:

Si queremos la probabilidad, tenemos que aplicar un poco de cálculo:

Cuando hacemos un predict, el resultado es el log de las odds o de la razón de momios (señalado con el recuadro naranja):

Así, los valores van a ir entre –, siendo 0 el punto donde las probabilidades son iguales.

In [7] : out <- radar.test
out ["y"] <- predict (model, radar.test)
ggplot (out, aes (x = y, color = tipo)) + geom_histogram (aes (fill = tipo)) + xlab ("odds")

‘stat_bin()’ using ‘bins = 30’. Pick better value with ‘binwidth’.

Si no queremos ver este histograma, tenemos varias opciones. Una de ellas es hacer la transformación a mano:

In [15] : out <- radar.test
out ["y"] <- predict (model, radar.test)
#out ["probs"] < exp (out ["y"]) / (1 + exp (out ["y"]))
out ("probs"] <- 1 / (1 + exp(- out ["y"]))

ggplot (out.aes (x = probs.color = tipo)) + geom_density ()

Y otra opción es usar el predict:

In [13] : out ["probs"] <- predict (model, radar.test, type = "response")

ggplot (out, aes (x = probs, color = tipo)) + geom_density ()

Este ejercicio de la razón de momios se puede evaluar con una matriz de confusión.

Si quieres seguir aprendiendo y entender cómo funciona la matriz de confusión y cómo podemos evaluar la razón de momios a través de ella, te invitamos a inscribirte en nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, con el que, en pocos meses, aprenderás todo lo necesario para incursionar en el gran mundo del Gig Data. ¡Anímate a cambiar tu vida y solicita más información!

Sandra Navarro

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado