La regresión logística es un método de regresión que permite estimar la probabilidad de una variable dicotómica en función de una o mas covariables. Se utiliza principalmente para tareas de clasificación.
Conceptualmente se trata de un Modelo Lineal Generalizado donde se utilizan las covariables para modelar el parámetro de la distribución Binomial que toma la \(Y\).
La distribución \(Binomial\), tiene un solo parámetro.
\(Y \sim {\sf Binom}(n,p)\)
\(Y = \begin{cases} 1 \;\;\;\; p \\ 0 \;\;\;\; 1-p \end{cases}\)
Modelamos la probabilidad del evento (la \(p\) de \(Y\)) en función de las covariables \((x_1, x_2, x_3....x_n)\) .
Como los valores que puede tomar la probabilidad del evento se ubican entre 0 y 1, debemos interponer una función que permita mapear los números reales (son los resultados del componente lineal \(\beta_0\) + \(\beta_1\) \(X_1\) + …. \(\beta_p\) \(X_p\)), en el espacio entre 0 y 1. Esta función interpuesta se conoce como función \(Link\) y la que mas frecuentemente se utiliza es la función \(logit\) .
\(logit(P(Y = 1|X)) =\) \(\beta_0\) + \(\beta_1\) \(X_1\) + …. \(\beta_p\) \(X_p\)
\(logit(t) =\) \(\log(\frac{t}{1-t})\)
\(\frac{P(Y = 1|X)}{1-P(Y = 1|X)} =\) \(e^{\beta_0 + \beta_1 X_1 + .... \beta_p X_p}\)
El \(logit\) es el \(logaritmo\; natural\) afectando al \(odds\), no a la probabilidad directamente, por lo que la relación lineal existe entre \(X\) y el \(log(odds)\) del evento.
Los modelos lineales generalizados, de los que forma parte la regresión logística, utilizan una función, para establecer la relación lineal entre las covariables y los parámetros de la distribución de la variable a predecir.
En regresión lineal, se modela el valor promedio de \(Y\) en función de \(X\). En Logística, se modela la \(probabilidad\) de que \(Y\) pertenezca a la clase \(1\) utilizando \(odds\) como medida de probabilidad. A estos \(odds\) se les aplica una función \(link\) llamada \(logit\) para permitir que la relación entre \(X\) y la probabilidad de que \(Y\) pertenezca a la clase \(1\), sea \(LINEAL\).
Relación \(LINEAL\) entre \(log(odds)\) y \(X\).
Una vez obtenida la relación lineal entre el logaritmo de los \(odds\) y la variable predictora \(X\), se tienen que estimar los parámetros \(\beta_0\) y \(\beta_1\). La combinación óptima de valores será aquella que tenga la máxima verosimilitud (\(maximum\; likelihood\)), es decir el valor de los parámetros \(\beta_0\) y \(\beta_1\) con los que se maximiza la probabilidad de obtener los datos observados. En el caso de la regresión multiple es igual pero estimando \(\beta_0, \beta_1, \beta_2....\beta_n\).
Los coeficientes \(\beta\) son desconocidos, y deben ser estimados basados en los datos con los que se entrena el modelo. En el caso de la regresión lineal se estiman utilizando la técnica de mínimos cuadrados. En el caso de otros \(GLM\) se utiliza el método de \(Maximum \;Likelihood\).
Se buscan iterativamente valores \(\beta_0, \beta_1, \beta_2....\beta_n\), tales que la probabilidad predicha de \(Y\) para cada observación individual, corresponda lo máximo posible con la realidad observada \((0\;o\;1)\). Dicho de otra forma, se buscan los valores \(\beta_0, \beta_1, \beta_2....\beta_n\) dado que utilizándolos en fórmula \(p(X) = \frac{e^{\beta_0 + \beta_1 X_1 + .... \beta_p X_p}}{1+e^{\beta_0 + \beta_1 X_1 + .... \beta_p X_p}}\) , se obtenga un valor cercano a \(0\) en el caso de los que tienen valor observado \(Y = 0\) y cercano a \(1\) para los que tienen valor observado de \(Y=1\). Esta descripción puede ser observada en la \(función\; de\; verosimilitud:\)
\(l(\beta_0, \beta_1, \beta_2....\beta_n)= \prod{p(x_i)} \prod{(1-p(x_i'))}\)
Una buena forma de expresar matematicamente la contribución de cada par (\(x_i\),\(y_i\)) a la \(función\; de\; verosimilitud\) es a través de la siguiente:
\(\pi(x_i)^{y_i} [1-\pi(x_i)]^{1-y_i}\) De manera que si la predicción resultó en \(1\), el término que aportará a la fórmula será: \(\pi(x_i)^{y_i}\) y si fuera \(0\), \([1-\pi(x_i)]^{1-y_i}\). Dado que las observaciones se asumen \(independientes\), la \(función\; de\; verosimilitud\) se obtiene también del producto de los términos de la ecuación anterior.
\(l(\beta) = \prod_{i = 1}^{n}\pi(x_i)^{y_i} [1-\pi(x_i)]^{1-y_i}\)
El principio de \(máxima \;verosimilitud\) indica que el coeficiente \(\beta\) seleccionado será aquel que maximice la ecuación anterior. Matematicamente, resulta mas sencillo trabajar con el \(log-likelihood\) por lo que se buscará maximizar será \(L(\beta) = \ln[l(\beta)]\)
\(Ln-likelihood(\beta_0,\beta_1,\beta_2....\beta_n) = \sum_{i=1}^{n} Yi(\beta_0+\beta_1xi)-\sum_{i=1}^{n} ln(1+e^{(\beta_0+\beta_1xi)})\)
Entonces el \(estimador\;de\;máxima\;verosimilitud\) (el valor de \(\beta\) elegido) será aquel que maximice el valor del \(log-likelihood\;o\; el \ln{(maximum\;likelihood)}\) en la \(función\; de\; verosimilitud\). Esta función no se resuelve analíticamente. Se debe iterar hasta maximizar el valor de \(Ln-L(\beta)\). Las técnicas de iteración utilizadas pueden ser Gradient Descent, Newton Raphson y otras.
La estimación por mínimos cuadrados utilizada en regresión lineal, es un caso especial de \(máxima\; verosimilitud\)
Cuando nos proponemos testear la significancia de alguna variable en cualquier modelo, en realidad nos estamos haciendo la siguiente pregunta: \("El\; modelo \;que\; incluye\; a\; esta\; variable,\; nos\; dice\; mas\; sobre\; la\; variable\; outcome\) \(que\; un\; modelo\; que\; NO\; la\; incluye?"\). Esta pregunta puede responderse comparando los valores observados de la variable outcome con los predichos por cada uno de los modelos (el que tiene y el que no tiene la variable en cuestión). Es importante recordar que en esta instancia, no estamos evaluando si los valores predichos se ajustan a lo observado (eso se llama \(Bondad\; de\; Ajuste\) y sera estudiado mas adelante).
La evaluación de significancia estadística de cada variable regresora, se ilustra facilmente en regresion lineal. Cuando se evalua la significancia de los coeficientes utilizando una Tabla de ANOVA se pueden observar:
\(SST = \sum_{i=1}^{n} (y_i - \overline{y})^2\)
\(SSRes = \sum_{i=1}^{n} (y_i - \hat{y})^2\) [Tambien se le dice \(SSE\)]
\(SSM = \sum_{i=1}^{n} (\hat{y_i} - \overline{y})^2\)
\(SST = SSM + SSRes\)
En el modelo que no contiene la variable regresora que esta siendo evaluada, el único parámetro es \(\beta_0\) que corresponde a \(\overline{Y}\), el promedio de la variable outcome. Cuando incluimos la variable en cuestión al modelo, cualquier descenso en el valor de \(SSRes\) respecto de \(SST\), se deberá al hecho que la pendiente/coeficiente (\(\beta\)) de la variable es diferente de \(0\). En este caso se estudia la diferencia existente entre \(SST\) y \(SSRes\), mientras mayor sea, mayor relevancia tendrá la variable para explicar el outcome.
Conceptualmente la evaluación que se realiza en el modelo logístico es igual: se compara los valores reales de la variable outcome con las predicciones del modelo \(con\) y \(sin\) la variable en cuestión.
Para esta comparación se utiliza la \(Deviance\), Considerando que los valores observados son equivalentes a los predichos por un modelo saturado.
\(D = -2\ln[\frac{likelihood \;del\; modelo} {likelihood\; del\; modelo\; saturado}]\) , entonces:
\(D = -2\; loglik\; del\; modelo\; +\; 2\; loglik\; del\; modelo\; saturado\)
como \(likelihood \;del\; modelo\; saturado = 1\), \(loglik \;del\; modelo\; saturado = 0\)
entonces:
\(D = -2\;likelihood \;del\; modelo\)
La relación \(modelo/modelo\;saturado\) se llama \(likelihood\;ratio\) y se multiplica su logaritmo natural por \(-2\) para obtener una cantidad cuya distribución sea conocida.
El estadístico \(D\) o \(Deviance\), juega el mismo rol en regresión logística que el \(SSRes\) lo hace en regresión lineal.
Para evaluar la significancia de una variable independiente se compara el valor de \(D\) con y sin la variable en cuestión. Esta prueba se llama \(likelihood\;ratio\;test\).
\(G=D(modelo\; sin\; la\; variable) - D(modelo\; con\; la\; variable)\) o dicho de otra forma:
\(G= -2ln[\frac{(likelihood\;sin\; variable)}{{likelihood\;con\;la\;variable)}}]\)
El estadístico \(G\) (\(likelihood\;ratio\;test\)) es equivalente al \(F-test\) de la regresión lineal.
A diferencia de la regresión lineal, en la que \(\beta_1\) se corresponde con el cambio promedio en la variable dependiente \(Y\) debido al incremento en una unidad del predictor \(X\), en regresión logística, \(\beta_1\) indica el cambio en el logaritmo de \(ODDS\) debido al incremento de una unidad de \(X\), o lo que es lo mismo, multiplica los \(ODDS\) por \(e^{\beta_1}\). Dado que la relación entre \(p(Y)\) y \(X\) no es lineal, \(\beta_1\) no se corresponde con el cambio en la probabilidad de \(Y\) asociada con el incremento de una unidad de \(X\). Cuánto se incremente la probabilidad de \(Y\) por unidad de \(X\) depende del valor de \(X\), es decir, de la posición en la curva logística en la que se encuentre.
Una vez que se conoce la relación entre los predictores y la variable outcome, se puede realizar la predicción utilizando una base de datos nueva o bien la partición destinada a testear el modelo construido para estimar la validez externa del mismo.
Una de las principales aplicaciones de un modelo de regresión logística es clasificar la variable cualitativa en función de valor que tome el predictor. Para conseguir esta clasificación, es necesario establecer un threshold de probabilidad a partir de la cual se considera que la variable pertenece a uno de los niveles \((0\;o\;1)\). Por ejemplo, se puede asignar una observación al grupo \(1\) si \(\hat{p}(Y = 1|X) > 0.5\) y al grupo \(0\) si no.
Se considera que el modelo es útil si es capaz de mostrar una mejora explicando las observaciones respecto al modelo nulo (sin predictores). El \(likelihood\;ratio\;test\) calcula la significancia de la diferencia de residuos entre el modelo de interés y el modelo nulo. El estadístico \(D\) sigue una distribución chi-cuadrado con grados de libertad equivalentes a la diferencia de grados de libertad de los dos modelos. Este test puede realizarse en \(R\) manualmente o bien generando una tabla de \(Anova\) para evaluar la \(Deviance\) del modelo agregando de a un predictor a la vez.
El test de Hosmer-Lemeshow es una prueba de bondad de ajuste para modelos de clasificación binaria. Especificamente el test calcula si la tasa de eventos observados (\(1s\)) coinciden con la tasa de eventos predichos por el modelo. Para esto se separa a la población en quantiles (tipicamente decilos) y se realiza una comparación basada en el estadístico \(chi^2\). En este caso dado que la hipótesis nula es “La tasa de eventos observados es igual a la tasa de eventos predicha”, si el \(p-valor\) del test resulta alto (zona de NO rechazo), estaría indicando que el modelo predice adecuadamente.
\(G_{HL}=\sum\limits_{j=1}^{g}\frac{(o_j -e_j)^2}{e_j}\)
Donde \(o_j\) son datos observados, \(e_j\) son datos predichos.
Esta prueba habitualmente genera una tabla coparando los decilos (o grupos seleccionados) y se reporta el estadístico \(G_{HL}\) con su \(p-valor\) asociado.
Una vez que uno tiene información sobre datos predichos y datos observados, se tiene sufiente material para generar una \(matriz\; de\; confusión\). Con ésta, podremos observar variaciones de la sensibilidad y especificidad del modelo corriendo el umbral o punto de corte a partir del cual consideraremos una predicción como \(1\;o\;0\). De esta forma podemos además generar una curva \(ROC\) para observar el comportamiento del modelo independientemente del punto de corte seleccionado. El \(AUC\) (area bajo la curva) de la curva \(ROC\), hace referencia a la probabilidad de que un caso positivo (\(1\)) tenga una probabilidad predicha mayor a la de un caso negativo (\(0\)).
Se utilizará la base de datos “BrainCancer” del paquete ISLR2.
Se obtiene un data frame con 88 observaciones y 8 variables:
sex: Factor de 2 niveles: “Female” y “Male”
diagnosis: Factor con 4 niveles: “Meningioma”, “LG glioma”, “HG glioma”, y “Other”.
loc: Factor de 2 niveles: “Infratentorial” and “Supratentorial”.
ki: variable numérica continua. índice de Karnofsky
gtv: variable numérica continua. volumne tumoral en \(cm^3\)
stereo: Factor de 2 niveles: “SRS” and “SRT”.(método de esterotaxia utilizado)
status: Factor de 2 niveles 0=vivo al final del estudio , 1=muerto al final del estudio.
time: variable numerica continua. edad en años
library(tidyverse)
library(InformationValue)
library(ISLR2)
library(GGally)
library(vcdExtra)
library(broom)
library(sjPlot)
data <-as.data.frame(BrainCancer) %>% filter(!is.na(diagnosis))
Tener en cuenta que el objetivo de esta sección no es la adecuada construcción paso a paso del modelo sino la comprensión de la interpretación de los coeficientes y de las métricas de performance.
Vamos a construir un modelo utilizando todas las variables para intentar predecir quien morirá al final del estudio.
mod <- glm(status~., family = "binomial", data = data)
t<-tab_model(mod, show.se = T, show.dev = T, show.intercept = F, show.loglik = T, digits = 2, digits.p = 3, show.r2 = F)
knitr::asis_output(t$knitr)
| status | ||||
|---|---|---|---|---|
| Predictors | Odds Ratios | std. Error | CI | p |
| sex [Male] | 1.45 | 0.83 | 0.47 – 4.56 | 0.522 |
| diagnosis [LG glioma] | 3.69 | 3.11 | 0.69 – 20.03 | 0.122 |
| diagnosis [HG glioma] | 10.70 | 8.32 | 2.51 – 55.24 | 0.002 |
| diagnosis [Other] | 2.15 | 2.02 | 0.34 – 14.45 | 0.416 |
| loc [Supratentorial] | 2.97 | 2.68 | 0.54 – 19.86 | 0.227 |
| ki | 0.93 | 0.03 | 0.87 – 0.99 | 0.033 |
| gtv | 1.04 | 0.04 | 0.97 – 1.12 | 0.296 |
| stereo [SRT] | 1.29 | 0.99 | 0.29 – 6.19 | 0.743 |
| time | 0.97 | 0.02 | 0.94 – 0.99 | 0.029 |
| Observations | 87 | |||
| Deviance | 80.403 | |||
| log-Likelihood | -40.202 | |||
anova(mod, test = "LRT")
## Analysis of Deviance Table
##
## Model: binomial, link: logit
##
## Response: status
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 86 117.264
## sex 1 1.8489 85 115.415 0.1739070
## diagnosis 3 17.6889 82 97.726 0.0005099 ***
## loc 1 2.2543 81 95.472 0.1332405
## ki 1 8.0084 80 87.464 0.0046560 **
## gtv 1 1.6116 79 85.852 0.2042703
## stereo 1 0.1032 78 85.749 0.7479769
## time 1 5.3457 77 80.403 0.0207739 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Observamos el valor de los coeficientes y su \(p-valor\) asociado. En las variables categóricas podemos ver que se generó una variable \(dummy\) para cada nivel que toma la misma. recordar que en este caso, el coeficiente se refiere a variaciones en la probabilidad de muerte, \(respecto\; de\; la\; clase\; basal\).
Respecto de las mediciones asociadas al modelo completo, observamos
La tabla de \(ANOVA\) muestra la contribución a la disminución de la \(Deviance\) que tiene cada variable.
En este caso se observa coincidencia entre los dos métodos para definir variables con mayor contribución al modelo.
Supongamos que decidimos seleccionar estas tres variables para hacer nuestro modelo mas parsimonioso.
mod_2 <- glm(status~diagnosis+ ki+ time, family = "binomial", data = data)
t<-tab_model(mod_2, show.se = T, show.dev = T, show.loglik = T, digits = 2, digits.p = 3, show.r2 = F)
knitr::asis_output(t$knitr)
| status | ||||
|---|---|---|---|---|
| Predictors | Odds Ratios | std. Error | CI | p |
| (Intercept) | 150.97 | 361.73 | 1.66 – 21894.27 | 0.036 |
| diagnosis [LG glioma] | 3.96 | 3.32 | 0.74 – 21.29 | 0.100 |
| diagnosis [HG glioma] | 12.28 | 9.04 | 3.13 – 57.95 | 0.001 |
| diagnosis [Other] | 1.42 | 1.07 | 0.31 – 6.18 | 0.641 |
| ki | 0.93 | 0.03 | 0.88 – 0.99 | 0.027 |
| time | 0.97 | 0.01 | 0.94 – 1.00 | 0.036 |
| Observations | 87 | |||
| Deviance | 84.753 | |||
| log-Likelihood | -42.377 | |||
anova(mod_2, test = "LRT")
## Analysis of Deviance Table
##
## Model: binomial, link: logit
##
## Response: status
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 86 117.264
## diagnosis 3 19.4229 83 97.841 0.0002235 ***
## ki 1 8.1007 82 89.741 0.0044247 **
## time 1 4.9875 81 84.753 0.0255306 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
El coeficiente estimado para el \(intercept\) (\(\beta_0\)) es el valor esperado del \(logaritmo\; de\; odds\) de que un paciente muera durante el estudio con todas las otras variables en \(cero\) o en la categoria de referencia en el caso de las categZricas.
En este caso el \(logodds\) de \(ki\) es -0.06820549 lo que significa que por cada unidad que aumenta el valor del índice de Karnofsky, disminuye el \(logodds\) de muerte en 0.068, independientemente de las otras variables. Nótese que la interpretacion de \(logodds\) es igual a la interpretación de los coeficientes de regresión lineal.
En el caso de la variable categórica \(diagnosis\), dado que involucra 4 niveles, los coeficientes se refieren a la modificación del \(logodds\) con respecto al nivel de referencia.
Cuando analizamos los \(ODDS\), la relación no es lineal, por lo que la interpretación es diferente.
En el caso de la variable \(ki\), el se observa una disminución del 7% en el \(ODDS\) de muerte por cada incremento de un punto en el índice de Karnofsky,y en el caso de la variable categórica, sería que en el caso de tratarse de un diagnóstico de \(LG\; Glioma\), se observará un incremento de 3.96 veces en el \(ODDS\) de muerte con respecto al nivel de referencia de la variable \(diagnosis\), independientemente de las otras variables.
pred_modelo <- as.data.frame(predict(mod_2, data, type = "response"))
pred_modelo <- pred_modelo %>% dplyr::mutate(prediccion = ifelse(`predict(mod_2, data, type = "response")` > 0.5, 1,0))
H_L <- HLtest(mod_2,10)
HL_DF <- cbind(as.data.frame(H_L$table), indice = as.factor(c(1,2,3,4,5,6,7,8,9,10)))
HL_DF %>% knitr::kable()
| cut | total | obs | exp | chi | indice |
|---|---|---|---|---|---|
| [0.0296,0.071] | 9 | 8 | 8.5518804 | -0.1887183 | 1 |
| (0.071,0.102] | 9 | 9 | 8.1960781 | 0.2808089 | 2 |
| (0.102,0.165] | 8 | 7 | 6.9669087 | 0.0125370 | 3 |
| (0.165,0.29] | 9 | 6 | 6.9490119 | -0.3600063 | 4 |
| (0.29,0.36] | 9 | 4 | 6.0633393 | -0.8379435 | 5 |
| (0.36,0.426] | 8 | 7 | 4.8911505 | 0.9535426 | 6 |
| (0.426,0.565] | 9 | 5 | 4.5220742 | 0.2247458 | 7 |
| (0.565,0.724] | 8 | 4 | 2.8677487 | 0.6686091 | 8 |
| (0.724,0.831] | 9 | 1 | 2.0747287 | -0.7461364 | 9 |
| (0.831,0.991] | 9 | 1 | 0.9170795 | 0.0865882 | 10 |
ggplot(HL_DF, aes(x=indice))+geom_point(aes(y=exp, color = "blue"))+geom_point(aes(y=obs, color = "red"))+scale_color_manual(labels = c("Esperado", "Observado"), values = c("blue", "red"))
H_L
## Hosmer and Lemeshow Goodness-of-Fit Test
##
## Call:
## glm(formula = status ~ diagnosis + ki + time, family = "binomial",
## data = data)
## ChiSquare df P_value
## 8.189835 8 0.4151498
En este caso podemos ver como el test de \(Hosmer-Lemershow\) tiene un\(p-valor\) asociado no significativo por lo que no se rechaza la hipótesis nula de igualdad entre valores predichos y valores observados. Sugiriendo que el modelo ajusta adecuadamente.
df_pred <- data.frame(predichos = mod_2$fitted.values, observados = data$status)
ggplot(df_pred, aes(factor(observados), predichos))+geom_violin(aes(color=factor(observados)))+geom_hline(aes(yintercept=0.5))
plotROC(data$status, pred_modelo$`predict(mod_2, data, type = "response")`, returnSensitivityMat = T)
## One_minus_specificity sensitivity Threshold
## 1 0.00000000 0.00000000 1.00
## 2 0.00000000 0.02857143 0.98
## 3 0.00000000 0.02857143 0.96
## 4 0.00000000 0.02857143 0.94
## 5 0.00000000 0.08571429 0.92
## 6 0.00000000 0.11428571 0.90
## 7 0.00000000 0.11428571 0.88
## 8 0.01923077 0.20000000 0.86
## 9 0.01923077 0.22857143 0.84
## 10 0.01923077 0.25714286 0.82
## 11 0.01923077 0.31428571 0.80
## 12 0.01923077 0.31428571 0.78
## 13 0.01923077 0.37142857 0.76
## 14 0.01923077 0.45714286 0.74
## 15 0.03846154 0.45714286 0.72
## 16 0.03846154 0.51428571 0.70
## 17 0.03846154 0.51428571 0.68
## 18 0.03846154 0.54285714 0.66
## 19 0.03846154 0.57142857 0.64
## 20 0.05769231 0.57142857 0.62
## 21 0.05769231 0.57142857 0.60
## 22 0.11538462 0.57142857 0.58
## 23 0.11538462 0.60000000 0.56
## 24 0.15384615 0.62857143 0.54
## 25 0.15384615 0.62857143 0.52
## 26 0.15384615 0.62857143 0.50
## 27 0.15384615 0.62857143 0.48
## 28 0.15384615 0.65714286 0.46
## 29 0.21153846 0.68571429 0.44
## 30 0.21153846 0.68571429 0.42
## 31 0.25000000 0.68571429 0.40
## 32 0.30769231 0.68571429 0.38
## 33 0.34615385 0.74285714 0.36
## 34 0.36538462 0.80000000 0.34
## 35 0.36538462 0.80000000 0.32
## 36 0.40384615 0.85714286 0.30
## 37 0.44230769 0.88571429 0.28
## 38 0.44230769 0.88571429 0.26
## 39 0.44230769 0.91428571 0.24
## 40 0.46153846 0.91428571 0.22
## 41 0.51923077 0.91428571 0.20
## 42 0.51923077 0.94285714 0.18
## 43 0.53846154 0.94285714 0.16
## 44 0.57692308 0.97142857 0.14
## 45 0.61538462 0.97142857 0.12
## 46 0.71153846 0.97142857 0.10
## 47 0.78846154 0.97142857 0.08
## 48 0.90384615 0.97142857 0.06
## 49 0.96153846 0.97142857 0.04
## 50 1.00000000 1.00000000 0.02
## 51 1.00000000 1.00000000 0.00
## 52 1.00000000 1.00000000 -0.02
cmatrix <- InformationValue::confusionMatrix(data$status, pred_modelo$prediccion, 0.5)
sens <- InformationValue::sensitivity(data$status, pred_modelo$prediccion, 0.5)
espec <- InformationValue::specificity(data$status, pred_modelo$prediccion, 0.5)
cmatrix
## 0 1
## 0 44 13
## 1 8 22
sens
## [1] 0.6285714
espec
## [1] 0.8461538
En el gráfico de violín podemos evaluar las probabilidades con los valores observados suponiendo por donde deberia pasar un threshod que nos permita discriminar lo mejor posible.
En la tabla de sensibilidad observamos el comportamiento tabulado de lo reportado por la curva ROC. La curva ROC arroja un \(AUC = 82\%\) sugiriendo que si tomáramos un paciente \(muerto\), este tendria 82% mas de probabilidades de ser clasificado como tal que como \(vivo\).
La evaluación de Calibración y Performance que vimos recién se realizo en la misma base de datos con la que se entrenó el modelo y tiene por objetivo graficar la base teórica de la construcción de un modelo Logístico.
El trabajo completo implicaría contar con un set de validación sobre el que realizar predicciones utilizando el modelo entrenado. De la comparación entre valores observados y valores predichos surgirán las evaluaciones de Calibración y Performance.
Otros elementos utilizados en validación de modelos de clasificación como \(Cross-Validation\) o \(Bootstrapping\), no están incluidos en este documento.