En modelos de clasificación, especialmente en regresión logística, muchas veces queremos responder preguntas como estas:
El Odds Ratio (OR) nos ayuda a traducir los resultados del modelo a lenguaje de negocio.
Idea clave: el Odds Ratio compara cuántas veces cambian los odds del evento cuando cambia una variable explicativa.
La probabilidad responde:
De cada 100 casos, ¿cuántos esperamos que ocurra el evento?
Los odds responden:
¿Cuántas veces ocurre el evento en comparación con que no ocurra?
Por ejemplo, si la probabilidad de compra es 75%:
## [1] 3
Interpretación:
Si la probabilidad de compra es 75%, los odds son 3. Es decir, por cada caso donde no ocurre la compra, hay 3 casos donde sí ocurre.
No confundir: un OR de 2 no significa necesariamente “el doble de probabilidad”. Significa “el doble de odds”. Suena parecido, pero estadísticamente no es lo mismo. Aquí es donde muchos modelos se van al multiverso.
En una regresión logística, el modelo suele entregar coeficientes en escala logarítmica. Para interpretarlos mejor, los transformamos con la función exponencial:
## [1] 1.499303
La lectura general es:
OR > 1: los odds del evento
aumentan.OR < 1: los odds del evento
disminuyen.OR = 1: no hay cambio en los odds.Una variable cuantitativa puede ser edad, años de experiencia, ingreso, número de compras, ticket promedio, visitas a la app, entre otras.
Supongamos que analizamos el efecto de los años de experiencia sobre la probabilidad de que una persona esté en bajo riesgo crediticio.
Ejemplo
## [1] 50
Interpretación tradicional:
Por cada año adicional de experiencia, los odds de estar en bajo riesgo aumentan en 50%.
También se puede decir:
Por cada año adicional de experiencia, los odds de estar en bajo riesgo son 1.5 veces los odds anteriores.
Traducción ejecutiva: más experiencia está asociada con mejores odds de bajo riesgo. No es poesía, es logística.
A veces conviene interpretar el efecto inverso: ¿qué pasa si la variable disminuye una unidad?
## [1] 0.6666667
## [1] 33.33333
Interpretación:
Por cada año menos de experiencia, los odds de estar en bajo riesgo son aproximadamente 0.67 veces los odds anteriores; es decir, disminuyen en aproximadamente 33.3%.
Ahora supongamos que el OR asociado a una variable cuantitativa es 0.8.
## [1] 20
Interpretación tradicional:
Por cada unidad adicional en la variable independiente, los odds del evento disminuyen en 20%.
Ejemplo aplicado:
Por cada año adicional de antigüedad en mora, los odds de estar en bajo riesgo disminuyen en 20%.
Una variable cualitativa suele representar grupos o categorías. Por ejemplo:
Regla de oro: en variables cualitativas, siempre debes tener claro cuál es el grupo base. Sin grupo base, la interpretación queda coja. Y una interpretación coja en comité ejecutivo no camina.
Supongamos una variable llamada casado, donde:
Y el OR estimado es 2.0.
## [1] 100
Interpretación tradicional:
Las personas casadas tienen 100% más odds de estar en bajo riesgo que las personas solteras.
También se puede decir:
Las personas casadas tienen 2 veces los odds de estar en bajo riesgo en comparación con las personas solteras.
Supongamos que el OR para casado es 0.6.
## [1] 40
Interpretación tradicional:
Las personas casadas tienen 40% menos odds de estar en bajo riesgo que las personas solteras.
También se puede decir:
Las personas casadas tienen 0.6 veces los odds de estar en bajo riesgo respecto a las personas solteras.
| Tipo_de_variable | Situacion | Interpretacion | Lectura_con_reciproco |
|---|---|---|---|
| Cuantitativa | OR > 1 | Cada unidad adicional aumenta los odds del evento. | Cada unidad menor disminuye los odds del evento. |
| Cuantitativa | OR < 1 | Cada unidad adicional disminuye los odds del evento. | Cada unidad menor aumenta los odds del evento. |
| Cualitativa | OR > 1 | El grupo 1 tiene más odds del evento que el grupo 0. | El grupo 0 tiene menos odds que el grupo 1. |
| Cualitativa | OR < 1 | El grupo 1 tiene menos odds del evento que el grupo 0. | El grupo 0 tiene más odds que el grupo 1. |
Usamos:
Ejemplo:
## [1] 80
Interpretación:
Los odds aumentan en 80%.
Supongamos que una empresa retail quiere explicar la probabilidad de que un cliente responda a una campaña promocional.
La variable dependiente es:
responde_campaña = 1: el cliente compró luego de
recibir la campaña.responde_campaña = 0: el cliente no compró.Variables explicativas:
visitas_app: número de visitas a la app durante el
último mes.cliente_premium: 1 = cliente premium, 0 = cliente
regular.edad: edad del cliente.resultados <- data.frame(
Variable = c("visitas_app", "cliente_premium", "edad"),
OR = c(1.12, 1.85, 0.97)
)
resultados$Interpretacion_porcentual <- ifelse(
resultados$OR > 1,
paste0("Aumenta los odds en ", round((resultados$OR - 1) * 100, 1), "%"),
paste0("Disminuye los odds en ", round((1 - resultados$OR) * 100, 1), "%")
)
kable(resultados, caption = "Ejemplo de interpretación de OR en una campaña retail")| Variable | OR | Interpretacion_porcentual |
|---|---|---|
| visitas_app | 1.12 | Aumenta los odds en 12% |
| cliente_premium | 1.85 | Aumenta los odds en 85% |
| edad | 0.97 | Disminuye los odds en 3% |
Lectura de negocio:
Lectura gerencial: la actividad digital y la pertenencia al segmento premium parecen asociarse positivamente con la respuesta a campaña. La edad muestra una relación negativa leve. El modelo está diciendo: “mírame a los digitales y premium primero”.
Una entidad financiera estima un modelo logístico para explicar si un cliente tiene bajo riesgo crediticio.
La variable dependiente es:
bajo_riesgo = 1: el cliente es de bajo riesgo.bajo_riesgo = 0: el cliente no es de bajo riesgo.Se obtienen los siguientes Odds Ratio:
| Variable | Descripcion | OR |
|---|---|---|
| ingreso_mensual | Ingreso mensual del cliente, en miles de soles | 1.35 |
| tiene_tarjeta_credito | 1 = tiene tarjeta de crédito, 0 = no tiene | 2.10 |
| edad | Edad del cliente en años | 0.98 |
| mora_ultimos_12m | Número de meses con mora en los últimos 12 meses | 0.72 |
ingreso_mensual.tiene_tarjeta_credito.edad.mora_ultimos_12m.ejercicio$Cambio_porcentual <- ifelse(
ejercicio$OR > 1,
round((ejercicio$OR - 1) * 100, 1),
round((1 - ejercicio$OR) * 100, 1)
)
ejercicio$Direccion <- ifelse(ejercicio$OR > 1, "Aumenta", "Disminuye")
kable(ejercicio, caption = "Solución referencial: dirección y magnitud del efecto")| Variable | Descripcion | OR | Cambio_porcentual | Direccion |
|---|---|---|---|---|
| ingreso_mensual | Ingreso mensual del cliente, en miles de soles | 1.35 | 35 | Aumenta |
| tiene_tarjeta_credito | 1 = tiene tarjeta de crédito, 0 = no tiene | 2.10 | 110 | Aumenta |
| edad | Edad del cliente en años | 0.98 | 2 | Disminuye |
| mora_ultimos_12m | Número de meses con mora en los últimos 12 meses | 0.72 | 28 | Disminuye |
Interpretaciones:
ingreso_mensual: por cada mil soles adicionales de
ingreso mensual, los odds de bajo riesgo aumentan en 35%.tiene_tarjeta_credito: los clientes con tarjeta de
crédito tienen 110% más odds de ser de bajo riesgo que los clientes sin
tarjeta.edad: por cada año adicional de edad, los odds de bajo
riesgo disminuyen en 2%.mora_ultimos_12m: por cada mes adicional con mora, los
odds de bajo riesgo disminuyen en 28%.El Odds Ratio es una herramienta poderosa porque permite convertir resultados estadísticos en mensajes accionables.
Frase para llevar: no basta con decir que una variable es significativa; hay que explicar cuánto mueve los odds, en qué dirección y qué decisión de negocio sugiere.