logo

Introducción

En el análisis estadístico, muchas situaciones prácticas no se ajustan a los supuestos de la regresión lineal. Esto ocurre cuando el fenómeno que deseamos explicar no se mide en una escala continua, sino que implica decisiones, categorías o eventos dicotómicos: aprobar o reprobar, comprar o no comprar, estar enfermo o sano, contratar o no contratar. En este tipo de casos, el modelo lineal clásico deja de ser apropiado porque puede generar predicciones fuera del rango lógico, y no captura adecuadamente la naturaleza probabilística del evento.

La regresión logística surge precisamente para abordar este tipo de problemas. Se trata de un método diseñado para estimar la probabilidad de ocurrencia de un evento, en función de una o varias variables explicativas. A diferencia de la regresión lineal, que busca ajustar una recta, la regresión logística emplea una función sigmoide (o en forma de “S”) que restringe los valores posibles entre 0 y 1, permitiendo así interpretar los resultados como probabilidades.

Desde el punto de vista práctico, este modelo permite comprender qué factores aumentan o disminuyen la probabilidad de que ocurra un determinado resultado, y cuantificar la fuerza de esa relación. Por ejemplo:

  • En mercadeo, puede utilizarse para estimar la probabilidad de que un cliente realice una compra.

  • En salud, para evaluar el riesgo de padecer una enfermedad.

  • En educación, para identificar qué variables influyen en la probabilidad de éxito académico.


Estructura del modelo

La regresión logística utiliza la misma lógica que la regresión lineal: se busca establecer una relación entre una variable dependiente y un conjunto de variables independientes. La diferencia fundamental es que, en este caso, la variable dependiente \(Y\) es binaria (toma solo los valores 0 o 1).

El modelo parte de la idea de estimar la probabilidad de que ocurra el evento \(Y = 1\), denotada como \(P(Y=1)\). Sin embargo, modelar directamente la probabilidad puede ser problemático, ya que debe estar siempre entre 0 y 1.
Para resolver esto, la regresión logística utiliza el logaritmo de las probabilidades relativas, también llamado logit:

\[ \text{logit}(p) = \ln\left(\frac{p}{1-p}\right) \]

donde:

  • \(p\): probabilidad de que ocurra el evento (\(Y=1\))
  • \(1-p\): probabilidad de que no ocurra el evento (\(Y=0\))

El logit transforma las probabilidades (que están acotadas entre 0 y 1), en una escala continua que puede tomar cualquier valor real, lo cual permite aplicar un modelo lineal de la forma:

\[ \ln\left(\frac{p}{1-p}\right) = \beta_0 + \beta_1X_1 + \dots + \beta_kX_k \]

A partir de esta ecuación, se despeja \(p\) y se obtiene la forma logística del modelo:

\[ p = \frac{e^{\beta_0 + \beta_1X_1 + \dots + \beta_kX_k}}{1 + e^{\beta_0 + \beta_1X_1 + \dots + \beta_kX_k}} \]

Esta formulación garantiza que todas las predicciones del modelo estén en el rango de 0 a 1 y que los efectos de las variables se interpreten como cambios en la razón de probabilidades.


Interpretación de los coeficientes

En la regresión logística, cada coeficiente \(\beta_i\) refleja el efecto que tiene la variable explicativa \(X_i\) sobre el logit de la probabilidad del evento, manteniendo las demás variables constantes. Aunque el modelo se estima en la escala logarítmica, los coeficientes pueden interpretarse de dos formas complementarias: en términos del logit o del odds ratio.


Interpretación escala logit

En esta escala, el coeficiente \(\beta_i\) indica cuánto cambia el logaritmo de la razón de probabilidades cuando \(X_i\) aumenta en una unidad.

Por ejemplo, si \(\beta_1 = 0.5\), significa que por cada unidad adicional en \(X_1\), el logit de la probabilidad de que ocurra el evento aumenta en 0.5 unidades. Sin embargo, esta interpretación suele ser poco intuitiva, por lo que normalmente se transforma el coeficiente mediante la función exponencial.


Interpretación escala odds ratio

El odds ratio (OR) se obtiene como \(e^{\beta_i}\) y ofrece una interpretación más directa:

  • Si \(e^{\beta_i} > 1\): el incremento en \(X_i\) aumenta la probabilidad del evento.
  • Si \(e^{\beta_i} < 1\): el incremento en \(X_i\) disminuye la probabilidad del evento.
  • Si \(e^{\beta_i} = 1\): \(X_i\) no tiene efecto sobre la probabilidad del evento.

Por ejemplo, si \(\beta_1 = 0.7\), entonces \(e^{0.7} \approx 2.01\).
Esto significa que por cada unidad que aumenta \(X_1\), la razón de probabilidades de que ocurra el evento es 2.01 veces mayor que la de que no ocurra.


Casos con variables categóricas

Cuando una variable independiente es categórica, su interpretación se realiza en comparación con una categoría de referencia.

Por ejemplo, si una variable Género tiene las categorías Hombre (referencia) y Mujer, y el modelo arroja \(\beta_{\text{Mujer}} = 0.4\):

\[ e^{0.4} \approx 1.49 \]

Esto se interpreta como que las mujeres tienen 1.49 veces más probabilidades de que ocurra el evento en comparación con los hombres, manteniendo las demás variables constantes.


Ejemplo motivador

Imaginemos que un banco desea identificar qué factores influyen para que un cliente solicite un préstamo.
Para ello, construye un modelo de regresión logística donde la variable dependiente es:

  • \(Y = 1\): el cliente solicita el préstamo
  • \(Y = 0\): el cliente no solicita el préstamo

Y considera como variables independientes:

  • Ingreso mensual (en miles de dólares)
  • Nivel de endeudamiento (porcentaje del ingreso comprometido)
  • Historial crediticio (Bueno = 1, Malo = 0)

Supongamos que el modelo estimado arroja los siguientes coeficientes:

Variable Coeficiente (\(\beta\)) Odds Ratio (\(e^{\beta}\))
Intercepto -2.0 0.14
Ingreso mensual 0.8 2.23
Nivel de endeudamiento -1.1 0.33
Historial crediticio (Bueno) 1.5 4.48

Interpretaciones:

  • Intercepto: odds ratio asociado al intercepto (\(e^{-2.0} = 0.14\)) representa la razón de probabilidades base de solicitar un préstamo cuando todas las variables explicativas son cero. Aunque esta situación no es realista, el intercepto funciona como un punto de referencia: la probabilidad base de que un cliente solicite un préstamo es muy baja (solo el \(14\%\) respecto a la probabilidad de no solicitarlo) antes de considerar los efectos de las demás variables.

  • Ingreso mensual: por cada aumento de una unidad en el ingreso (mil dólares adicionales), la razón de probabilidades de solicitar un préstamo se multiplica por \(2.23\), manteniendo las demás variables constantes. Es decir, la probabilidad de hacer un préstamo aumenta un \(123\%\) respecto a no hacerlo \((2.23-1=1.23)\). Esto implica que los clientes con mayor ingreso tienen más disposición a solicitarlo.

  • Nivel de endeudamiento: a medida que aumenta el nivel de endeudamiento, la razón de probabilidades de solicitar un préstamo se multiplica por \(0.33\). Es decir, la probabilidad de hacer un préstamo disminuye un \(67\%\) respecto a no hacerlo \((1-0.33=0.67)\). En otras palabras, los clientes más endeudados son menos propensos a solicitar nuevos créditos.

  • Historial crediticio: los clientes con historial crediticio de referencia (bueno) tienen \(4.48\) veces más probabilidades de solicitar un préstamo que aquellos con historial malo, manteniendo las demás variables constantes. Es decir, la probabilidad de hacer el préstamo aumenta en \(348\%\) respecto a no hacerlo \((4.48 - 1 = 3.48)\).


Implementación en R

A continuación se presentan diferentes contextos de aplicación y su implementación en R.


Ejemplo 1

En Puerto Rico, los constantes aumentos en la factura eléctrica y la frecuencia de apagones han llevado a muchos hogares a considerar la instalación de sistemas solares con batería. Un investigador desea analizar qué factores influyen en la decisión de instalar o no instalar el sistema, utilizando información de 500 hogares.

La variable dependiente representa la decisión del hogar:

  • 1: el hogar instaló un sistema solar con batería.
  • 0: el hogar no lo instaló.

Las variables explicativas son tres indicadores numéricos:

  • Factura eléctrica mensual (factura): medida en centenas de dólares (cada 1 = $100).
  • Horas sin luz al mes (apagones): en bloques de 10 horas.
  • Tasa de interés (interes): tasa de financiamiento del préstamo solar en puntos porcentuales (cada 1 = 1 pp).

El interés principal es determinar cómo cambian las probabilidades de instalar un sistema solar según estas condiciones.

Datos simulados

## Datos simulados

set.seed(2025)
n <- 500
factura   <- pmax(0, round(rnorm(n, mean = 4.0, sd = 1.2), 1))  
apagones  <- pmax(0, round(rnorm(n, mean = 2.2, sd = 1.0), 1)) 
interes   <- pmax(0, round(rnorm(n, mean = 9.0, sd = 2.5), 1))  

b0 <- -2.2              
b1 <-  0.26             
b2 <-  0.41             
b3 <- -0.29             

eta     <- b0 + b1*factura + b2*apagones + b3*interes
p       <- 1/(1 + exp(-eta))
instala <- rbinom(n, 1, p)

data1  <- data.frame(instala,factura,apagones,interes)
head(data1)
##   instala factura apagones interes
## 1       0     4.7      0.9    11.2
## 2       0     4.0      4.2     3.8
## 3       0     4.9      2.7     7.5
## 4       1     5.5      3.2     5.4
## 5       0     4.4      3.6     7.2
## 6       0     3.8      1.4     7.2

Modelo logístico ajustado:

# Ajuste del modelo logístico
modelo1 <- glm(instala ~ factura + apagones + interes, family = binomial, data=data1)


coefs <- summary(modelo1)$coefficients

# Tabla de resultados
tabla_mod1   <- data.frame(
  Termino    = rownames(coefs),
  Logit      = round(coefs[, 1], 3),
  Odds_Ratio = round(exp(coefs[, 1]), 3),
  row.names = NULL)

tabla_mod1
##       Termino  Logit Odds_Ratio
## 1 (Intercept) -1.576      0.207
## 2     factura  0.203      1.226
## 3    apagones  0.431      1.538
## 4     interes -0.333      0.716

Interpretación de los resultados:

  • Intercepto: (\(OR = 0.207\)) indica que, en ausencia de los demás factores (factura, apagones e interés), la probabilidad base de instalar el sistema es baja, es decir, el hogar tiende a no instalarlo.
  • Factura eléctrica: por cada \(\$100\) adicionales en la factura eléctrica, la probabilidad de instalar el sistema aumenta en aproximadamente \(23\%\) respecto a no instalarlo (\(1.226 - 1 = 0.226\)), manteniendo constante las demás variables.
  • Apagones: por cada \(10\) horas adicionales sin luz al mes, la probabilidad de instalar el sistema aumenta en \(54\%\) respecto a no instalarlo (\(1.538 - 1 = 0.538\)), manteniendo constante las demás variables.
  • Tasa de interés: por cada punto adicional en la tasa de interés, la probabilidad de instalar el sistema disminuye en \(28\%\) respecto a no instalarlo (\(1 - 0.716 = 0.284\)), manteniendo constante las demás variables.

Ejemplo 2

En los últimos años, Puerto Rico ha experimentado olas de calor cada vez más intensas, afectando la jornada escolar y el rendimiento de los estudiantes. Ante esta situación, algunas escuelas han decidido ajustar sus horarios para reducir la exposición al calor extremo. El objetivo del análisis es identificar qué factores aumentan la probabilidad de adoptar un horario reducido.

La variable dependiente representa la decisión de la escuela:

  • 1: la escuela adopta horario reducido.
  • 0: la escuela no adopta horario reducido.

Las variables explicativas son categóricas:

  • Región (region): Metro, Norte, Sur (referencia: Metro).
  • Nivel escolar (nivel): Elemental, Intermedia, Superior (referencia: Elemental).
  • Planta física (planta): A/C central, A/C parcial, sin A/C (referencia: A/C central).

El interés principal es determinar qué condiciones institucionales y ambientales se asocian con una mayor probabilidad de que una escuela adopte un horario reducido.

Datos simulados

## Datos simulados

set.seed(2025)
n <- 800

region <- factor(
  sample(c("Metro","Norte","Sur"), n, replace = TRUE, prob = c(0.5, 0.25, 0.25)),
  levels = c("Metro","Norte","Sur")
)

nivel <- factor(
  sample(c("Elemental","Intermedia","Superior"), n, replace = TRUE, prob = c(0.4, 0.3, 0.3)),
  levels = c("Elemental","Intermedia","Superior")
)

planta <- factor(
  sample(c("AC_central","AC_parcial","SinAC"), n, replace = TRUE, prob = c(0.35, 0.35, 0.30)),
  levels = c("AC_central","AC_parcial","SinAC")
)

# Coeficientes 
b0    <- -1.2                 
b_Nor <- log(1.10)           
b_Sur <- log(1.90)            
b_Int <- log(1.20)            
b_Sup <- log(1.60)            
b_ACp <- log(1.40)            
b_Sin <- log(3.10)            

eta <- b0 + ifelse(region == "Norte", b_Nor, 0) + ifelse(region == "Sur",   b_Sur, 0) + ifelse(nivel  == "Intermedia", b_Int, 0) + ifelse(nivel  == "Superior",   b_Sup, 0) + ifelse(planta == "AC_parcial", b_ACp, 0) +  ifelse(planta == "SinAC",      b_Sin, 0)

p <- 1 / (1 + exp(-eta))
adopta <- rbinom(n, 1, p)

data2 <- data.frame(adopta, region, nivel, planta)
head(data2)
##   adopta region     nivel     planta
## 1      1    Sur  Superior AC_central
## 2      0  Metro  Superior AC_central
## 3      0    Sur Elemental AC_central
## 4      0  Metro Elemental      SinAC
## 5      0  Norte Elemental      SinAC
## 6      1    Sur Elemental AC_central

Modelo logístico ajustado:

# Ajuste del modelo
modelo2 <- glm(adopta ~ region + nivel + planta, family = binomial, data = data2)

coefs2 <- summary(modelo2)$coefficients

# Tabla 
tabla_mod2 <- data.frame(
  Termino    = rownames(coefs2),
  Logit      = round(coefs2[, "Estimate"], 3),
  Odds_Ratio = round(exp(coefs2[, "Estimate"]), 3),
  row.names  = NULL,
  check.names = FALSE
)
tabla_mod2
##            Termino  Logit Odds_Ratio
## 1      (Intercept) -1.026      0.358
## 2      regionNorte  0.125      1.133
## 3        regionSur  0.778      2.178
## 4  nivelIntermedia -0.148      0.862
## 5    nivelSuperior  0.129      1.137
## 6 plantaAC_parcial  0.268      1.307
## 7      plantaSinAC  0.988      2.687

Interpretaciones:

  • Intercepto: \((OR = 0.36)\) representa la situación de referencia (región Metro, nivel Elemental y AC_central). En ese escenario, la probabilidad base de adoptar horario reducido es baja, por lo que el plantel tiende a no adoptarlo.

  • Región Norte (vs. Metro): las escuelas en la región Norte presentan una probabilidad de adoptar el horario reducido \(13\%\) mayor respecto a no adoptarlo, en comparación con las escuelas del área Metro (\(1.133 - 1 = 0.133\)), manteniendo constantes las demás variables.

  • Región Sur (vs. Metro): las escuelas en la región Sur tienen una probabilidad de adoptar el horario reducido \(118\%\) mayor respecto a no adoptarlo (\(2.178 - 1 = 1.178\)), manteniendo constantes las demás variables.

  • Nivel Intermedia (vs Elemental): las escuelas de nivel Intermedia muestran una probabilidad de adoptar el horario reducido \(14\%\) menor respecto a no adoptarlo (\(1 - 0.862 = 0.138\)), manteniendo constantes las demás variables.

  • Nivel Superior (vs. Elemental): las escuelas de nivel Superior presentan un incremento del \(14\%\) de adoptar el horario (\(1.137 - 1 = 0.137\)), manteniendo constantes las demás variables.

  • A/C parcial (vs. A/C central): las escuelas con A/C parcial muestran una probabilidad de adoptar el horario reducido \(31\%\) mayor respecto a no adoptarlo (\(1.307 - 1 = 0.307\)), manteniendo constantes las demás variables.

  • Sin A/C (vs. A/C central): las escuelas sin aire acondicionado presentan una probabilidad de adoptar el horario reducido \(169\%\) mayor respecto a no adoptarlo (\(2.687 - 1 = 1.687\)), lo que muestra que las condiciones térmicas son un factor determinante.


Ejemplo 3

En Puerto rico, tras el paso de huracanes, muchas PyMEs en Puerto Rico han enfrentado pérdidas económicas. Un banco desea analizar qué factores influyen en su decisión de hacer o no hacer un microcrédito de recuperación a estas empresas.

La variable dependiente representa la decisión del banco:

  • 1: el banco hace el microcrédito.
  • 0: el banco no lo hace.

Las variables explicativas incluyen factores financieros y de riesgo:

  • Ventas mensuales (ventas_10k): bloques de $10,000 (cada 1 = $10,000).
  • Seguro catastrófico (seguro): No / Si (referencia: No).
  • Historial de morosidad (morosidad): No / Si (referencia: No).
  • Interacción: ventas_10k * seguro (el efecto de ventas puede ser distinto si la empresa está asegurada).

El interés principal es determinar cómo cambian las probabilidades de hacer el préstamo frente a no hacerlo según estas condiciones.

Datos simulados:

## Datos simulados

set.seed(2025)
n <- 700
# Predictores
ventas_10k <- pmax(0, round(rlnorm(n, meanlog = log(2.0), sdlog = 0.6), 1)) 
seguro     <- factor(sample(c("No","Si"), n, replace = TRUE, prob = c(0.55, 0.45)),levels = c("No","Si"))
morosidad  <- factor(sample(c("No","Si"), n, replace = TRUE, prob = c(0.70, 0.30)),levels = c("No","Si"))

# Coeficientes 
b0  <- -1.8     
bV  <-  0.41   
bS  <-  0.79    
bM  <- -0.92    
bVS <-  0.26   

# Variable dependiente
eta3 <- b0 + bV*ventas_10k + bS*(seguro=="Si") + bM*(morosidad=="Si") + bVS*ventas_10k*(seguro=="Si")
p3   <- 1/(1+exp(-eta3))
hace <- rbinom(n, 1, p3)

# Conjunto de datos
data3 <- data.frame(hace, ventas_10k, seguro, morosidad)
head(data3)
##   hace ventas_10k seguro morosidad
## 1    1        2.9     No        No
## 2    0        2.0     Si        Si
## 3    1        3.2     No        Si
## 4    1        4.3     Si        No
## 5    0        2.5     Si        No
## 6    1        1.8     No        Si

Modelo ajustado:

# Ajuste del modelo logístico con interacción

modelo3 <- glm(hace ~ ventas_10k * seguro + morosidad, family = binomial, data = data3)

coefs3 <- summary(modelo3)$coefficients

# Tabla
tabla_mod3 <- data.frame(
Termino = rownames(coefs3),
Logit = round(coefs3[, "Estimate"], 3),
Odds_Ratio = round(exp(coefs3[, "Estimate"]), 3),
row.names = NULL,
check.names = FALSE
)

tabla_mod3
##               Termino  Logit Odds_Ratio
## 1         (Intercept) -1.371      0.254
## 2          ventas_10k  0.291      1.338
## 3            seguroSi  0.213      1.237
## 4         morosidadSi -0.972      0.378
## 5 ventas_10k:seguroSi  0.464      1.590

Interpretación de los resultados:

  • Intercepto: situación base (empresa sin seguro, sin morosidad y con ventas bajas).

  • ventas mensuales: por cada $10,000 adicionales en ventas, la probabilidad de hacer el microcrédito aumenta un \(34\%\) respecto a no hacerlo, manteniendo constantes las demás variables.

  • Seguro: tener seguro aumenta en \(24\%\) la probabilidad de hacer el microcrédito respecto a no hacerlo, manteniendo constantes las demás variables.

  • Morosidad: tener morosidad disminuye en \(62\%\) la probabilidad de hacer el microcrédito respecto a no hacerlo, manteniendo constantes las demás variables.

  • Interacción ventas:seguro: cuando hay seguro, cada $10,000 extra en ventas, la probabilidad de hacer el préstamo es \(59\%\) mayor que la de no hacerlo. En otras palabras, las ventas ya incrementan la probabilidad de otorgar el crédito, pero ese aumento es todavía más pronunciado cuando la empresa está asegurada.


Ejercicio de clase

Aprobación de préstamos: una institución financiera quiere entender qué factores inciden en la aprobación de solicitudes de préstamo. Contamos con un conjunto de datos reales (archivo: Loan_Approval_Dataset.csv, disponible en Moodle) que incluye información del solicitante, su situación laboral, activos reportados y el resultado de la solicitud.

Variable objetivo (binaria):

  • Loan_Status: Decisión de solicitud (Approved, Rejected)

Variables explicativas disponibles:

Variable Descripción Tipo sugerido
Income Ingreso mensual (USD) Numérica
Loan_Amount Monto solicitado (USD) Numérica
Education Nivel educativo (Graduate / Not Graduate) Categórica
Self_Employed Trabaja por cuenta propia (Yes / No) Categórica
Cibil_Score Puntaje crediticio Numérica

Ajustar un modelo de regresión logística para explicar la probabilidad de aprobación del préstamo e interpretar los resultados en términos de odds ratio.