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.