Informe final Ejemplo de análisis de predicción con R

library(readxl)
final <- read_excel("C:/Users/psicr/Downloads/a4_heart_disease_uci.xlsx", sheet =1)
summary(final)
##        id             age            sex              dataset         
##  Min.   :  1.0   Min.   :28.00   Length:920         Length:920        
##  1st Qu.:230.8   1st Qu.:47.00   Class :character   Class :character  
##  Median :460.5   Median :54.00   Mode  :character   Mode  :character  
##  Mean   :460.5   Mean   :53.51                                        
##  3rd Qu.:690.2   3rd Qu.:60.00                                        
##  Max.   :920.0   Max.   :77.00                                        
##                                                                       
##       cp               trestbps          chol          fbs         
##  Length:920         Min.   :  0.0   Min.   :  0.0   Mode :logical  
##  Class :character   1st Qu.:120.0   1st Qu.:175.0   FALSE:692      
##  Mode  :character   Median :130.0   Median :223.0   TRUE :138      
##                     Mean   :132.1   Mean   :199.1   NA's :90       
##                     3rd Qu.:140.0   3rd Qu.:268.0                  
##                     Max.   :200.0   Max.   :603.0                  
##                     NA's   :59      NA's   :30                     
##    restecg              thalch        exang            oldpeak       
##  Length:920         Min.   : 60.0   Mode :logical   Min.   :-2.6000  
##  Class :character   1st Qu.:120.0   FALSE:528       1st Qu.: 0.0000  
##  Mode  :character   Median :140.0   TRUE :337       Median : 0.5000  
##                     Mean   :137.5   NA's :55        Mean   : 0.8788  
##                     3rd Qu.:157.0                   3rd Qu.: 1.5000  
##                     Max.   :202.0                   Max.   : 6.2000  
##                     NA's   :55                      NA's   :62       
##     slope                 ca             thal                num        
##  Length:920         Min.   :0.0000   Length:920         Min.   :0.0000  
##  Class :character   1st Qu.:0.0000   Class :character   1st Qu.:0.0000  
##  Mode  :character   Median :0.0000   Mode  :character   Median :1.0000  
##                     Mean   :0.6764                      Mean   :0.9957  
##                     3rd Qu.:1.0000                      3rd Qu.:2.0000  
##                     Max.   :3.0000                      Max.   :4.0000  
##                     NA's   :611
restecg <- factor(final$restecg, levels = c("normal", "lv hypertrophy"), labels = c(0,1))
final$restecg <- ifelse(final$restecg == "normal",0,1)

La base que se emplea contiene variables sobre características fisiológicas de las personas, que pueden vincularse al diagnóstico de enfermedades cardiacas de acuerdo con literatura previa.

De las variables posibles se retoma la presión arterial en reposo (trestbps), el colesterol sérico (chol) y el resultado del electrocardiograma (restecg), esta última variable se presenta como dicotómica, con los resultados ‘normal’ e ‘hipertrofia ventricular izquierdo’. La hipertrofia es un engrosamiento del músculo del corazón, que puede deberse a la hipertensión, esta a su vez se relaciona con el colesterol, el cual puede acumularse en las arterias. La pregunta es ¿las variables presión arterial y colesterol son predictoras de la evaluación obtenida por el electrocardiograma?

Dado que la variable dependiente es dicotómica, se realizará un análisis de regresión logística. Primero se hará un modelo con la presión arterial como unica VI; el modelo 2 agregará el colesterol, esperando observar un incremento en la capacidad predictiva.

La Hi1 es que la presión arterial en reposo será un predictor significativo del resultado del electrocardiograma.

La Hi2 es que tanto la ´resión arterial como el colesterol serán predictores del resultado del electrocardiagrama, y que este modelo será mejor que el primer modelo.

modelo1 <- glm(restecg ~ trestbps, family = binomial(), data = final)
summary(modelo1)
## 
## Call:
## glm(formula = restecg ~ trestbps, family = binomial(), data = final)
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -2.180031   0.506942  -4.300 1.71e-05 ***
## trestbps     0.012840   0.003772   3.404 0.000663 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1143.4  on 858  degrees of freedom
## Residual deviance: 1131.5  on 857  degrees of freedom
##   (61 observations deleted due to missingness)
## AIC: 1135.5
## 
## Number of Fisher Scoring iterations: 4
exp(modelo1$coefficients)
## (Intercept)    trestbps 
##    0.113038    1.012923

Los resultados de modelo 1 indican que la presión arterial en reposo es un predictor significativo. El odd ratio de presión arterial es 1.01, lo que significa que por cada unidad que incrementa la presión arterial, el odd de que aparezca hipertrofia aumenta 1.01 veces.

modelo2 <- glm(restecg ~ trestbps + chol, family = binomial(), data = final)
summary(modelo2)
## 
## Call:
## glm(formula = restecg ~ trestbps + chol, family = binomial(), 
##     data = final)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -2.3545972  0.5257506  -4.479 7.52e-06 ***
## trestbps     0.0134843  0.0038511   3.501 0.000463 ***
## chol         0.0006046  0.0006564   0.921 0.357049    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1113.3  on 831  degrees of freedom
## Residual deviance: 1099.2  on 829  degrees of freedom
##   (88 observations deleted due to missingness)
## AIC: 1105.2
## 
## Number of Fisher Scoring iterations: 4
exp(modelo2$coefficients)
## (Intercept)    trestbps        chol 
##  0.09493174  1.01357562  1.00060475

El segundo modelo muestra que el colesterol no fue un predictor significativo, solamente la presión arterial continuó siendo significativo.

Se concluye que la hipótesis 1 fue corroborada, pero no la hipótesis 2. El incremento de la presión arterial en reposo aumenta la probabilidad de que el resultado del electrocardiograma se valore con hipertrofia, aunque el aumento de odd es pequeño.