En esta sección se trabajará con el siguiente paquete: “HSAUR”
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).
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.
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.
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(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
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.
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.
. 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.
Everitt, B.; Hothorn, T. 2009. A Handbook of Statistical Analyses Using R. 2 ed. New York, Chapman and Hall/CRC. Chapter 6.