Packages

En esta sección se trabajará con el siguiente paquete: “HSAUR”

Data ESR y Proteínas Plasmáticas

La data “plasma” correspondiente al paquete “HSAUR” contiene (32) observaciones de tres variables: “fibrinogen” (X1: Fibrinógeno), “globulin” (X2: Globulina) y “ESR” (Y: Erythrocyte sedimentation rate).Para leer el fichero de datos y saber los nombres de las variables:

library(HSAUR)
## Loading required package: tools
###Mostramos las variables###
names(plasma)
## [1] "fibrinogen" "globulin"   "ESR"
###Mostrar la dimensión de la base de datos (objeto)###
dim(plasma)
## [1] 32  3
###Mostramos la matriz de datos###
(plasma)
##    fibrinogen globulin      ESR
## 1        2.52       38 ESR < 20
## 2        2.56       31 ESR < 20
## 3        2.19       33 ESR < 20
## 4        2.18       31 ESR < 20
## 5        3.41       37 ESR < 20
## 6        2.46       36 ESR < 20
## 7        3.22       38 ESR < 20
## 8        2.21       37 ESR < 20
## 9        3.15       39 ESR < 20
## 10       2.60       41 ESR < 20
## 11       2.29       36 ESR < 20
## 12       2.35       29 ESR < 20
## 16       3.15       36 ESR < 20
## 18       2.68       34 ESR < 20
## 19       2.60       38 ESR < 20
## 20       2.23       37 ESR < 20
## 21       2.88       30 ESR < 20
## 22       2.65       46 ESR < 20
## 24       2.28       36 ESR < 20
## 25       2.67       39 ESR < 20
## 26       2.29       31 ESR < 20
## 27       2.15       31 ESR < 20
## 28       2.54       28 ESR < 20
## 30       3.34       30 ESR < 20
## 31       2.99       36 ESR < 20
## 32       3.32       35 ESR < 20
## 13       5.06       37 ESR > 20
## 14       3.34       32 ESR > 20
## 15       2.38       37 ESR > 20
## 17       3.53       46 ESR > 20
## 23       2.09       44 ESR > 20
## 29       3.93       32 ESR > 20

Como se puede apreciar la variable dependiente (ESR) tiene dos posibles valores (binomial).

Modelos 1: ESR y Fibrinógeno

Ahora podemos ajustar un modelo de regresión logística para los datos utilizando la función glm. Comenzamos con un modelo que incluye sólo una única variable explicativa, el fibrinógeno.

plasma_glm_1 <- glm(ESR ~ fibrinogen, data = plasma, family = binomial())
###La familia a la cual se considera pertenece la variable dependiente es binonimal###
###La función Link por default cuando se pidió la familia binomial es la función logistica###
summary(plasma_glm_1)
## 
## Call:
## glm(formula = ESR ~ fibrinogen, family = binomial(), data = plasma)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -0.9298  -0.5399  -0.4382  -0.3356   2.4794  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)  
## (Intercept)  -6.8451     2.7703  -2.471   0.0135 *
## fibrinogen    1.8271     0.9009   2.028   0.0425 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 30.885  on 31  degrees of freedom
## Residual deviance: 24.840  on 30  degrees of freedom
## AIC: 28.84
## 
## Number of Fisher Scoring iterations: 5

A partir de los resultados, podemos afirmar que el coeficiente de regresión de la variable Fibrinógeno es significativo (0.0425<0.05) a un nivel de 5%. Un aumento de una unidad en la variable Fibrinógeno aumenta el log-odds a favor de un valor de ESR mayor que 20 para un estimado de 1.8271 en un intervalo de confianza de 95%.

coef(plasma_glm_1)["fibrinogen"]
## fibrinogen 
##   1.827081
confint(plasma_glm_1, parm = "fibrinogen")
## Waiting for profiling to be done...
##     2.5 %    97.5 % 
## 0.3387619 3.9984921
exp(coef(plasma_glm_1)["fibrinogen"])
## fibrinogen 
##   6.215715

El aumento de 1.827 de fibrinogen aumenta en 6.215213 el ESR. Y el intervalo de confianza.

exp(confint(plasma_glm_1, parm = "fibrinogen"))
## Waiting for profiling to be done...
##     2.5 %    97.5 % 
##  1.403209 54.515884

El intervalo de confianza es muy amplio porque hay pocas observaciones en general y muy pocos donde el valor de ESR es mayor que 20. Sin embargo, parece probable que a mayor Fibrinógeno hay mayor probabilidad de que el ESR sea mayor a 20.

Ecuación del Modelo

F=3 #es el valor que puede tomar el fibrinogeno#
exp(-6.845+1.827*F)/1+exp(-6.845+1.827*F)
## [1] 0.5112724

La ecuación se lee: ante la presencia de fribilógeno=3 la probabilidad de que el ESR sea mayor a 20 es=0.5112724.

Modelos 2: ESR y Fibrinógeno + Globulína

Ahora, con un modelo que incluye dos variable explicativas, el fibrinógeno + Globulína.

plasma_glm_2 <- glm(ESR ~ fibrinogen + globulin, data = plasma,family = binomial())
summary(plasma_glm_2)
## 
## Call:
## glm(formula = ESR ~ fibrinogen + globulin, family = binomial(), 
##     data = plasma)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -0.9683  -0.6122  -0.3458  -0.2116   2.2636  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)  
## (Intercept) -12.7921     5.7963  -2.207   0.0273 *
## fibrinogen    1.9104     0.9710   1.967   0.0491 *
## globulin      0.1558     0.1195   1.303   0.1925  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 30.885  on 31  degrees of freedom
## Residual deviance: 22.971  on 29  degrees of freedom
## AIC: 28.971
## 
## Number of Fisher Scoring iterations: 5

A partir de los resultados, podemos afirmar que el coeficiente de regresión de la variable Globulína no es significativo (0.1925>0.05) a un nivel de 5%.

Anova

anova(plasma_glm_1, plasma_glm_2, test = "Chisq")
## Analysis of Deviance Table
## 
## Model 1: ESR ~ fibrinogen
## Model 2: ESR ~ fibrinogen + globulin
##   Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1        30     24.840                     
## 2        29     22.971  1   1.8692   0.1716

Probabilidad Condicional estimada para el Modelo 1 y 2

La probabilidad condicional estimada de un valor de ESR>20 para todas las observaciones puede ser calculado mediante la siguiente fórmula:

prob1 <- predict(plasma_glm_1, type = "response")
prob1
##          1          2          3          4          5          6 
## 0.09614329 0.10268435 0.05500436 0.05406235 0.35098115 0.08702953 
##          7          8          9         10         11         12 
## 0.27650302 0.05693493 0.25166154 0.10961646 0.06531061 0.07233014 
##         16         18         19         20         21         22 
## 0.25166154 0.12471720 0.10961646 0.05892903 0.17035943 0.11885576 
##         24         25         26         27         28         30 
## 0.06420408 0.12273634 0.06531061 0.05132681 0.09936594 0.32243042 
##         31         32         13         14         15         17 
## 0.20067143 0.31449955 0.91682381 0.32243042 0.07609529 0.40239891 
##         23         29 
## 0.04624401 0.58306122

Presentando fribilogeno =3.93 la probabilidad de que el ESR sea mayor a 20 es=0.58306122 bajo el modelo 1.

prob2 <- predict(plasma_glm_2, type = "response")
prob2
##          1          2          3          4          5          6 
## 0.11320862 0.04425978 0.03024566 0.02191661 0.37427328 0.07694799 
##          7          8          9         10         11         12 
## 0.32714653 0.05698093 0.33201911 0.19182215 0.05682269 0.02220150 
##         16         18         19         20         21         22 
## 0.23750605 0.08503436 0.12948184 0.05906906 0.06806056 0.36266767 
##         24         25         26         27         28         30 
## 0.05580747 0.16575117 0.02690396 0.02072116 0.02717381 0.14955438 
##         31         32         13         14         15         17 
## 0.18662963 0.26944958 0.93327878 0.19363773 0.07715768 0.75349129 
##         23         29 
## 0.12508129 0.42569768

Presentando fribilogeno =3.93 y globulina=32 la probabilidad de que el ESR sea mayor a 20 es=0.42569768 bajo el modelo 2.

Comparación de Gráficas

ESR ~ fibrinogen Vs. ESR ~ globulin

data("plasma", package = "HSAUR")
layout(matrix(1:2, ncol = 2))
###Para graficar la relación (densidad condicional) entre una variable categórica (y) y cambios en una variable numérica (x) se usa la función "cdplot""###
cdplot(ESR ~ fibrinogen, data = plasma)
cdplot(ESR ~ globulin, data = plasma)

En la gráfica ESR ~ fibrinogen se puede apreciar que a menor fibrinógeno existe una mayor proporción de ESR menores a 20 y a mayor fibrinógeno existe una mayor proporción de ESR mayores a 20.

Conclusiones

. La variable fibrinógeno es apropiada para explicar ESR.

. El valor 6.21 es la razon de cambio de ESR>20 a ESR <20.

. La variable globulina no es adecuada.

. exp(-6.845+1.827F)/(1+exp(-6.845+1.827F)) es la ecuación del modelo.

. El IC para exp(B1) es muy amplio. Se debe aumentar el valor de n para reducir el ancho del intervalo.

Fuente:

Everitt, B.; Hothorn, T. 2009. A Handbook of Statistical Analyses Using R. 2 ed. New York, Chapman and Hall/CRC. Chapter 6.