REGRESIÓN: LOGÍSTICA
REGRESIÓN LOGÍSTICA (Daalgard, 2008)
Introducción
En ocasiones deseamos realizar análisis de regresión, pero los datos provienen de variables binarias, e.g. presencia/ausencia; sano/efermo; reacción/no reacción, por lo cual tienen únicamente dos posibilidades: ocurrencia/no ocurrencia. Los datos binarios también se podrían analizar mediante las Prueba de \(\chi^2\), sin embargo, la regresión nos permite realizar modelaciones, realizando generalizaciones de los fenómenos que estamos estudiando.
La ecuación que describe la Probabilidad logística es la siguiente:
\(logitp= \beta _{0} + \beta _{1}x_{1} +\beta _{2}x_{2} + ...\beta _{k}x_{k}\) donde \(logitpp=\log \left [ p/(1-p) \right ]\). ; la última ecuación corresponde a la probabilidad de éxito o fracaso de un determinado fenómeno.
A diferencia de la regresión lineal, la regresión logística no muestra término de error (\(+ \varepsilon\)), por lo tanto la probabilidad se calcula de forma directa, sin un parámetro de desviación como ocurre en la regresión normal. Este aspecto se solventa con el uso del Método de Máxima Probabilidad, el cual es similar a los mínimos cuadrados (least-squares). En el caso de la desviación, se calcula mediante la comparación entre \(-2\ log L\), permitiendo ser analizado mediante la Distribución de \(\chi^2\).
Generación datos
A continuación se generará una base de datos para ejemplificar el uso de la Regresión Logística (Altman, 1991):
smoking obesity snoring n.tot n.hyp
1 No No No 60 5
2 Yess No No 17 2
3 No Yess No 8 1
4 Yess Yess No 2 0
5 No No Yess 187 35
6 Yess No Yess 85 13
7 No Yess Yess 51 15
8 Yess Yess Yess 23 8
En el entorno de R, la regresión logística se puede aplicar con dos organizaciones distintas en la estructura de los datos. En la primera opción (Caso 1), es necesario especificar la respuesta como una matriz, donde una de las columnas es la cantidad de desesos (“diseased”), y la otra la cantidad de saludables (“healthy”)
[1] 5 2 1 0 35 13 15 8
o especificando la proporción de decesos en cada celda (Caso 2):
Recuerde que los datos pueden ser ingresados desde otras vías. Acá utilizamos la creación desde el propio ambiente de RStudio. Lo importante es comprender como organizar los datos
Aplicación de Regresión logística
Luego, se puede utilizar la función glm (Generalizaded Linear Model) para realizar el cálculo de la regresión logística:
Call: glm(formula = hyp.tbl ~ smoking + obesity + snoring, family = binomial)
Coefficients:
(Intercept) smokingYess obesityYess snoringYess
-2.37766 -0.06777 0.69531 0.87194
Degrees of Freedom: 7 Total (i.e. Null); 4 Residual
Null Deviance: 14.13
Residual Deviance: 1.618 AIC: 34.54
Call: glm(formula = prop.hyp ~ smoking + obesity + snoring, family = binomial,
weights = n.tot)
Coefficients:
(Intercept) smokingYess obesityYess snoringYess
-2.37766 -0.06777 0.69531 0.87194
Degrees of Freedom: 7 Total (i.e. Null); 4 Residual
Null Deviance: 14.13
Residual Deviance: 1.618 AIC: 34.54
Posteriormente se puede utilizar la función summary() para extraer la significancia del modelo:
Call:
glm(formula = hyp.tbl ~ smoking + obesity + snoring, family = binomial("logit"))
Deviance Residuals:
1 2 3 4 5 6 7 8
-0.04344 0.54145 -0.25476 -0.80051 0.19759 -0.46602 -0.21262 0.56231
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -2.37766 0.38018 -6.254 4e-10 ***
smokingYess -0.06777 0.27812 -0.244 0.8075
obesityYess 0.69531 0.28509 2.439 0.0147 *
snoringYess 0.87194 0.39757 2.193 0.0283 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 14.1259 on 7 degrees of freedom
Residual deviance: 1.6184 on 4 degrees of freedom
AIC: 34.537
Number of Fisher Scoring iterations: 4
Call:
glm(formula = prop.hyp ~ smoking + obesity + snoring, family = binomial,
weights = n.tot)
Deviance Residuals:
1 2 3 4 5 6 7 8
-0.04344 0.54145 -0.25476 -0.80051 0.19759 -0.46602 -0.21262 0.56231
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -2.37766 0.38018 -6.254 4e-10 ***
smokingYess -0.06777 0.27812 -0.244 0.8075
obesityYess 0.69531 0.28509 2.439 0.0147 *
snoringYess 0.87194 0.39757 2.193 0.0283 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 14.1259 on 7 degrees of freedom
Residual deviance: 1.6184 on 4 degrees of freedom
AIC: 34.537
Number of Fisher Scoring iterations: 4
Dado que se debe analizar la tabla de desviaciones con las reglas de \(\chi^2\), debemos utilizar las siguientes opciones:
Analysis of Deviance Table
Model: binomial, link: logit
Response: prop.hyp
Terms added sequentially (first to last)
Df Deviance Resid. Df Resid. Dev Pr(>Chi)
NULL 7 14.1259
smoking 1 0.0022 6 14.1237 0.962724
obesity 1 6.8274 5 7.2963 0.008977 **
snoring 1 5.6779 4 1.6184 0.017179 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
en el cual los términos de desviación corresponden a la diferencia entre los modelos y variables adicionadas al modelo. En el caso que deseamos establecer las variables de significancia en el modelo de regresión logística, podemos utilizar drop1, el cual nos indica cual variable no tiene significancia estadística en nuestro modelo:
Single term deletions
Model:
prop.hyp ~ smoking + obesity + snoring
Df Deviance AIC LRT Pr(>Chi)
<none> 1.6184 34.537
smoking 1 1.6781 32.597 0.0597 0.80694
obesity 1 7.2750 38.194 5.6566 0.01739 *
snoring 1 7.2963 38.215 5.6779 0.01718 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Fecha de versión: 2020-08-21 13:21:59
Bibliografía:
Peter, D. (2002). Introductory statistics with R.