Regresión Logística

Enver G. Tarazona Vargas

Objetivos

¿Que aprenderás?

  • Problema de Clasificación

  • Regresión logística

  • Interpretar los resultados del modelo.

  • Realizar predicciones y evaluar el modelo.

Introducción

Clasificación

¿Qué es clasificación?

  • En los modelos de regresión, la variable respuesta \(Y\) se ha asumido como cuantitativa, mientras que es posible que las covariables fueran categóricas.

  • Ahora permitimos que la respuesta sea categórica.

  • Esto es incluso más común que las respuestas numéricas. Ejemplos:
    • Filtro de spam email \(\in\) {spam, ham},
    • Color de Ojos \(\in\) {azul, marrón, verde}.
    • Condición médica \(\in\) {enfermedad1, enfermedad2, enfermedad3}.
  • Supongamos que tenemos un valor de respuesta cualitativa que puede ser miembro de uno de \(K\) clases \(\mathcal{C} = \{c_1, c_2, \ldots , c_K\}\).

  • En clasificación construimos una función \(f(X)\) que tome un vector de variables de entrada \(X\) y prediga la clase de pertenencia, tal que \(Y \in \mathcal{C}\).

  • También evaluaríamos la incertidumbre en esta clasificación. A veces, el papel de los diferentes predictores puede ser de interés principal.

  • Usualmente construimos modelos que predigan las probabilidades de categorías, dadas ciertas covariables \(X\).

Ejemplo: Datos de tarjetas de crédito

El conjunto de datos Default está disponible en la librería ISLR2 en el programa R.

Objetivo : predecir si un individuo incumplirá con el pago de su tarjeta de crédito, dados los ingresos anuales y el saldo de la tarjeta de crédito.

Ejemplo: Datos de tarjetas de crédito

Naranja: default=yes, Azul: default=no.

¿Regresión lineal para una clasificación binaria?

Supongamos que tenemos una respuesta binaria, por ejemplo si un usuario de tarjeta de crédito incumple con su pago \(Y =\) si or no, dadas las covariables \(X\) para predecir \(Y\). Podríamos usar códigos dummy para \(Y\) como

\[Y = \left\{ \begin{array}{ll} 0 & \text{si } \texttt{no} \ , \\ 1 & \text{si } \texttt{si} \ . \end{array} \right.\]

¿Podemos simplemente realizar una regresión lineal de \(Y\) sobre \(X\) y clasificar como “sí” en caso \(\hat{Y}> 0.5\)?

  • No es recomendable, porque la regresión lineal puede producir probabilidades menores que cero o mayores que uno.

\(\rightarrow\) Necesitamos usar la regresión logística.

Regresión lineal vs. logística

\(~\)

Anticipemos un poco, para ver por qué la regresión lineal no funciona tan bien. Estimamos la probabilidad de que alguien incumpla en su pago, dado el saldo de la tarjeta de crédito como predictor:

ISLR Figure 4.2

Regresión Logística Binaria

Definición

  • En regresión logística consideramos un problema de clasificación con dos clases.

  • Asumamos que \(Y\) está codificada (\(\mathcal{C} = \{1, 0\}\) o {éxito, fracaso}), y nos enfocamos en el éxito \((Y=1)\).

  • Podemos asumir que \(Y_i\) sigue una distribución de Bernoulli con probabilidad de éxito \(p_i\).

\[Y_i = \begin{cases} 1 \text{ con probabilidad } p_i, \\ 0 \text{ con probabilidad } 1-p_i. \end{cases}\]

  • Objetivo: Para las covariables \((X_1,\ldots,X_p)\), queremos estimar \(p_i = \text{Pr}(Y_i=1 \mid X_1,\ldots,X_p)\).
  • Necesitamos una manera adecuada de enlazar nuestras covariables \(X_1, \ldots, X_p\) con esta probabilidad \(p_i\). Objetivo: queremos relacionar al predictor lineal \[\eta_i = \beta_0 + \beta_1 x_{i1} + \ldots + \beta_p x_{ip}\] con \(p_i\). ¿Cómo?

  • La idea es usar una llamada función de enlace para vincular \(p_i\) al predictor lineal.

  • En regresión logística, usamos la función de enlace logística

\[\begin{equation} \log\left( \frac{p_i}{1-p_i} \right) = \beta_0 + \beta_1 x_{i1} + \beta_2 x_{i2} + \ldots + \beta_p x_{ip} \ . \end{equation}\]

  • P: ¿Cuál es la razón de ser de esto?

Regresión logística con una covariable

  • La ecuación (1) puede ser reorganizada y expresada para \(p_i\). Veamos esto solo para una covariable:

\[ p_i= \frac{e^{\beta_0+\beta_1 x_i}}{1 + e^{\beta_0 + \beta_1 x_i}}.\]

  • Importante: Los valores de \(p_i\) siempre caerán dentro del intervalo entre 0 y 1, con una curva en forma de S.

Ejemplo: Datos de tarjeta de crédito Default

\(~\)

  • Los parámetros se estiman a partir del método de máxima verosimilitud
  • En R, esto se obtiene con la función glm(), donde especificamos family="binomial".
library(ISLR2)
data(Default)
Default$default <- as.numeric(Default$default)-1
glm_default = glm(default~balance, data=Default, family="binomial")

summary(glm_default)$coef
                 Estimate   Std. Error   z value      Pr(>|z|)
(Intercept) -10.651330614 0.3611573721 -29.49221 3.623124e-191
balance       0.005498917 0.0002203702  24.95309 1.976602e-137

Trazando la línea ajustada (en azul):

\(~\)

\(~\)

Datos Default: Con \(\hat{\beta}_0=\) -10.65 y \(\hat{\beta}_1=\) 0.005.

Estimando los coeficientes de regresión con MV

\(~\)

  • Los coeficientes \(\beta_0, \beta_1, \ldots\) son estimados con Máxima Verosimilitud (MV).
  • Dados \(n\) pares de observaciones independientes \(\{{\boldsymbol x}_i, y_i\}\), la función de verosimilitud del modelo de regresión logística puede ser escrito como: \[L(\boldsymbol{\beta}) = \prod_{i=1}^n L_i(\boldsymbol{\beta}) = \prod_{i=1}^n f(y_i; \boldsymbol{\beta}) = \prod_{i=1}^n (p_i)^{y_i}(1-p_i)^{1-y_i},\] donde \(\boldsymbol{\beta} = (\beta_0, \beta_1, \beta_2, \ldots, \beta_p)^T\) se define dentro de \(p_i\)

\[p_i= \frac{\exp(\beta_0+\beta_1 x_{i1}+\cdots + \beta_p x_{ip})}{1 + \exp(\beta_0 + \beta_1 x_{i1}+\cdots+\beta_p x_{ip})} \ .\]

  • Las estimaciones de máxima verosimilitud se obtienen maximizando la verosimilitud.

  • Para hacer las matemáticas más fáciles, usualmente trabajamos con la log-verosimilitud (el logaritmo es una transformación monótona, por lo que dará el mismo resultado que maximizar la probabilidad).

\[\begin{align*} \log(L(\boldsymbol{\beta}))&=l(\boldsymbol{\beta}) =\sum_{i=1}^n \Big ( y_i \log p_i + (1-y_i) \log(1 - p_i )\Big ) \\ &= \sum_{i=1}^n \Big ( y_i \log \Big (\frac{p_i}{1-p_i} \Big) + \log(1-p_i) \Big ) \\ &= \sum_{i=1}^n \Big (y_i (\beta_0 + \beta_1 x_{i1}+\cdots + \beta_p x_{ip}) - \log(1 + e^{\beta_0 + \beta_1 x_{i1}+\cdots + \beta_p x_{ip}} ) \Big ).\end{align*}\]

  • Para maximizar la función logarítmica de verosimilitud, encontramos las derivadas parciales \(p+1\) y las establecemos en 0.

  • Esto nos da un conjunto de \(p + 1\) ecuaciones no lineales para los \(\beta\)s.

  • Este conjunto de ecuaciones no tiene una solución de forma cerrada.

  • Por tanto, el sistema de ecuaciones se resuelve numéricamente utilizando el algoritmo de Newton-Raphson (o Fisher Scoring).

Interpretación cualitativa de los coeficientes

\(~\)

Veamos nuevamente el resultado de la regresión:

summary(glm_default)$coef
                 Estimate   Std. Error   z value      Pr(>|z|)
(Intercept) -10.651330614 0.3611573721 -29.49221 3.623124e-191
balance       0.005498917 0.0002203702  24.95309 1.976602e-137

\(~\)

  • La estadística \(z\) es igual a \(\frac{\hat\beta}{SE(\hat\beta)}\), y está distribuida aproximadamente como \(N(0,1)\).
  • El \(p\)-valor es \(\text{Pr}(|Z| > |z|)\) para una variable aleatoria \(Z\sim N(0,1)\)
  • Verifique el \(p\)-valor para Balance. ¿Conclusión?

Interpretación cuantitativa de los coeficientes

Recordar que de la ecuación (1) tenemos

\[\begin{equation*} \log\left( \frac{p_i}{1-p_i} \right) = \beta_0 + \beta_1 x_{i1} + \beta_2 x_{i2} + \ldots + \beta_p x_{ip} \ , \end{equation*}\]

entonces

\[\begin{equation*} \frac{p_i}{1-p_i} = e^{\beta_0 + \beta_1 x_{i1} + \beta_2 x_{i2} + \ldots + \beta_p x_{ip}} = e^{\eta_i} \ . \end{equation*}\]

La cantidad \(p_i/(1-p_i)\) es llamada los odds (ventajas o cuotas). Odds representan posibilidades (p.ej. en apuestas).

Odds

P: Responder:

  1. Crees que tu equipo de fútbol ganará esta noche con una probabilidad \(p =0.8\). ¿Cuáles son los odds de que gane?

  2. Las ventajas del mejor caballo en una carrera son \(9:1\). ¿Cuál es la probabilidad de que gane este caballo?

¿Por qué son relevantes los odds?

Reorganicemos nuevamente los odds en el modelo de regresión logística: \[\begin{align*} \frac{p_i}{1-p_i} &= \frac{\text{P}(Y_i=1 \mid X=x)}{\text{P}(Y_i=0 \mid X = x)} \\[2mm] &= \exp(\beta_0) \cdot \exp(\beta_1 x_{i1}) \cdot \ldots \cdot \exp(\beta_p x_{ip}) \ . \end{align*}\]

\(~\)

\(\rightarrow\) Tenemos un modelo multiplicativo para los odds - que puede ayudarnos a interpretar nuestros \(\beta\)s.

La razón de odds (Odds-ratio)

\(~\)

Para comprender el efecto de un coeficiente de regresión \(\beta_j\), veamos qué sucede si aumentamos \(x_{ij}\) hasta \(x_{ij}+1\), mientras que todas las demás covariables se mantienen fijas.

Usando álgebra simple y la fórmula de la diapositiva anterior, se verá que

\[\begin{equation} \frac{\text{odds}(Y_i=1 \mid X_{j} = x_{ij} + 1)}{\text{odds}(Y_i=1 \mid X_j = x_{ij})} = \exp(\beta_j) \ . \end{equation}\]

\(~\)

Interpretación:

Al aumentar la covariable \(x_{ij}\) en una unidad, cambiamos los odds de \(Y_i =1\) por un factor \(\exp(\beta_j)\).

\(~\)

Es más:

Tomando logaritmos a la ecuación (2), se deduce que \(\beta_j\) se puede interpretar como logaritmo de razón de odds .

Ajustemos ahora el modelo de regresión logística para default, dado balance, income y la variable binaria student como predictores:

glm_default2 = glm(default~balance + income + student, data=Default, family="binomial")

summary(glm_default2)$coef
                 Estimate   Std. Error    z value      Pr(>|z|)
(Intercept) -1.086905e+01 4.922555e-01 -22.080088 4.911280e-108
balance      5.736505e-03 2.318945e-04  24.737563 4.219578e-135
income       3.033450e-06 8.202615e-06   0.369815  7.115203e-01
studentYes  -6.467758e-01 2.362525e-01  -2.737646  6.188063e-03

\(~\)

Preguntas:

  • ¿Qué sucede con los odds de incumplimiento cuando balance aumenta en 100 dólares?

\(\rightarrow\) Los odds de ser moroso incrementa en un factor de \(\exp(100 \cdot \beta_{\text{balance}})=\) 1.77 veces, es decir se incrementa en un 77%

Ajustemos ahora el modelo de regresión logística para default, dado balance, income y la variable binaria student como predictores:

glm_default2 = glm(default~balance + income + student, data=Default, family="binomial")

summary(glm_default2)$coef
                 Estimate   Std. Error    z value      Pr(>|z|)
(Intercept) -1.086905e+01 4.922555e-01 -22.080088 4.911280e-108
balance      5.736505e-03 2.318945e-04  24.737563 4.219578e-135
income       3.033450e-06 8.202615e-06   0.369815  7.115203e-01
studentYes  -6.467758e-01 2.362525e-01  -2.737646  6.188063e-03

\(~\)

Preguntas:

  • ¿Qué sucede con los odds de incumplimiento cuando un cliente es estudiante?

\(\rightarrow\) Los odds de ser moroso para un estudiante varía en un factor de \(\exp( \beta_{\text{student}})=\) 0.52 veces, es decir varía en -48%, en comparación con los que no son estudiantes.

Predicciones

Queremos construir un modelo que prediga las probabilidades de las categorías de \(Y\), dadas ciertas covariables \(X_1, \ldots, X_p\).

  • Para estimaciones de parámetros dados \(\hat\beta_0, \hat\beta_1, \ldots \hat\beta_p\) y una nueva observación \({\boldsymbol x}_0\), podemos estimar la probabilidad \(\hat{p}({\boldsymbol x}_0)\) de que la nueva observación pertenezca a la clase definida por \(Y=1\)

\[\hat{p}({\boldsymbol x}_0) = \frac{e^{\hat{\eta}_0}}{1+e^{\hat{\eta}_0}} \ , \]

con el predictor lineal \[\hat\eta_0 = \hat\beta_0 + \hat\beta_1 x_{01} + \ldots + \hat\beta_p x_{0p} \ .\]

En el caso de las covariables cualitativas, es necesario introducir variables ficticias. Esto se puede hacer como en el caso de la regresión lineal.

Entonces, en el ejemplo de Default, podemos predecir la probabilidad de que alguien no cumpla con su pago.

Por ejemplo: “¿Cuál es la probabilidad estimada de que un estudiante incumpla con su pago si tiene un saldo de 2000 y un ingreso de 40000?”

\[\hat{p}(X) = \frac{e^{\beta_0 + 2000 \cdot \beta_1 + 40000 \cdot \beta_2 + 1 \cdot \beta_3}}{ 1+ e^{\beta_0 + 2000 \cdot \beta_1 + 40000 \cdot \beta_2 + 1 \cdot \beta_3}} = 0.5196\]

Usando R:

eta <- summary(glm_default2)$coef[,1] %*% c(1,2000,40000,1)
exp(eta)/(1+exp(eta))
          [,1]
[1,] 0.5196218

(o via la función predict() en R.)

x0 <- data.frame(balance = 2000, income = 40000, student = "Yes")
predict(glm_default2, x0, "response")
        1 
0.5196218 

Bondad de ajuste del modelo

Existen 2 criterios usuales comprendidos entre 0 y 1:

R2 de McFadden Proporción de aumento de la log verosimimilitud gracias a la inclusión de variables explicativas.

R2 de Nagelkerke Es una transformación del R2 de Cox y Snell acotada de manera a estar comprendida entre 0 y 1.

Ninguna de estas medidas penaliza por la inclusión de variables explicativas.

R2 de McFadden ajustado Penaliza por la inclusión de variables explicativas.

\[R2_a = 1 - \frac{\ln L_{modelo}-k}{\ln L_{base} }\] Donde \(\ln L_{base}\) es la log verosimilitud de un modelo logit sin variables explicativas (sólo término constante) y \(\ln L_{modelo}\) la log verosimilitud del modelo a evaluarse en su calidad de ajuste.

No existe un concenso acerca de cuál es la mejor estadística (existen muchas otras), se recomienda evaluar aquellas disponibles (R2 Nagelkerke). Se suele además evaluar la tabla de clasificación: TPR (true positives rates) y FPR (false positive rates)

Evaluación de la Predicción

Tabla de clasificación (matriz de confusión)

  • La matriz de confusión es una tabla que puede mostrar el desempeño de un clasificador, dado que se conocen los valores verdaderos.

  • Se establece un umbral para clasificar a las observaciones en 0 o 1, esto es la previsión \(\hat Y\). Si \(\hat p >0.5 \rightarrow \hat Y =1\) y 0 si no.

  • Se tabula \(Y\) y \(\hat Y\). La suma de la diagonal es el número total de clasificaciones correctas. La suma de todos los elementos fuera de la diagonal es el número total de clasificaciones erróneas.

  • El analista puede así evaluar si los porcentajes de clasificación del modelo son satisfactorios para su problema particular.

Tabla de clasificación (matriz de confusión)

Métricas para Evaluar la Clasificación

  • Para dos grupos existen estadísticas adicionales que pueden ser relevantes cuando una clase es interpretada como un evento de interés.

  • La sensibilidad o recuperación de un modelo es el ratio en que el evento de interés es predicho correctamente para todas las muestras que contienen el evento.

\[ sensibilidad(d)=\frac{TP}{TP+FN} \]

  • La sensibilidad es usualmente considerada como el ratio de verdaderos positivos dado que mide la precisión en los eventos de la población.

Métricas para Evaluar la Clasificación

  • De manera inversa, la especificidad es definida como el ratio de observaciones que no son los eventos que son predichos como no eventos (ratio de verdaderos negativos).

\[ Especificidad(d)=\frac{TN}{FP+TN} \]

  • La falsa alarma o ratio de falsos positivos es definido como uno menos la especificidad. \[ Falarm(d)= 1 - Especificidad(d) = \frac{FP}{FP+TN} \]

Métricas para Evaluar la Clasificación

  • La precisión es la comparación entre los verdaderos positivos con las instancias predichas como positivas: \[ Precision(d)=\frac{TP}{TP+FP} \]

  • Basado en la precisión y la sensibilidad, la medida-F (F1-score) puede ser usada, la cuál es la media armónica entre la precisión y la sensibilidad:

\[ F_1(d)=2\frac{precision*sensibilidad}{precision+sensibilidad} \]

¿Que aprendimos en esta sesión?

  • Entender que es un problema de clasificación.

  • Definir la regresión logística y su importancia para problemas de clasificación binaria.

  • Interpretar cualitativa y cuantitativamente los resultados de un modelo de regresión

  • Realizar predicciones y evaluar el modelo de regresión logística.