Primero descargamos y seleccionamos la base de datos que utilizaremos, en este caso es una base de datos que nos habla sobre los accidentes cerebrovasculares de la población. Para consultar la base de datos vea https://www.kaggle.com/datasets/fedesoriano/stroke-prediction-dataset.
La base de datos cuenta con 12 variables para poder manipular, que son las siguientes:
Nosotros trabajaremos con aquellas variables que anteriormente se resaltaron en negritas, (8 de ellas), y a partir de dichas variables crearemos nuestro análisis.
Para esto será fundamental la utilización de las siguientes librerías.
La librería de ggplot nos servirá para crear nuestros gráficos más adelante, tidyverse será útil para la limpieza, selección de variables y otras funciones más, readr nos ayudará a leer el csv de forma correcta, patchwork nos permite pegar las gráficas para presentarlas de manera más limpia y stargazer nos ayudará a crear una tabla de manera más limpia de nuestro modelo.
library(ggplot2)
library(tidyverse)
library(readr)
library(patchwork)
## Warning: package 'patchwork' was built under R version 4.4.1
library(stargazer)
Nota el parámetro message = FALSE fue agregado
en el código del chunk para prevenir que se imprimiera el código de R
que genera la carga de las librerías.
Seleccionamos esta base de datos ya que tenemos la hipótesis de que el sexo, la edad, hipertensión, enfermedades cardiacas, el nivel de glucosa en sangre, el índice de masa corporal (IMC) y si el paciente fuma o no, son variables que determinan la incidencia de un accidente cerebrovascular en una persona.
Entonces formulamos las siguientes hipótesis:
Primero empezaremos por la carga de la base de datos, observamos mediante la ayuda de la función unique, que en las variables bmi y gender hace falta corregirlas, ya que en el bmi a pesar de contener números es de tipo carácter, esto ya que en lugar de tener NA en los datos no registrados hay un N/A de tipo texto, y en la variable gender hay 3 géneros registrados, pero en el tercer genero Other, solo hay una persona con esas características, por lo que procederemos a eliminarla, con la función which vemos en que posición del data frame se encuentran los errores para ver si son corregibles a mano, o si por el contrario necesitaremos un ciclo, en el caso de gender si se podrá corregir a mano con una máscara, y en el caso de bmi necesitaremos una ciclo for para corregir los errores, concluiremos esta parte con una impresión de la tabla para observar cómo quedo.
# Carga de datos.
ruta <- "C:/Users/fer_b/OneDrive/Escritorio/healthcare-dataset-stroke-data.csv"
stroke_predict <- read_csv(ruta)
# Determinar si hace falta limpiar la base de datos.
unique(stroke_predict$bmi)
## [1] "36.6" "N/A" "32.5" "34.4" "24" "29" "27.4" "22.8" "24.2" "29.7"
## [11] "36.8" "27.3" "28.2" "30.9" "37.5" "25.8" "37.8" "22.4" "48.9" "26.6"
## [21] "27.2" "23.5" "28.3" "44.2" "25.4" "22.2" "30.5" "26.5" "33.7" "23.1"
## [31] "32" "29.9" "23.9" "28.5" "26.4" "20.2" "33.6" "38.6" "39.2" "27.7"
## [41] "31.4" "36.5" "33.2" "32.8" "40.4" "25.3" "30.2" "47.5" "20.3" "30"
## [51] "28.9" "28.1" "31.1" "21.7" "27" "24.1" "45.9" "44.1" "22.9" "29.1"
## [61] "32.3" "41.1" "25.6" "29.8" "26.3" "26.2" "29.4" "24.4" "28" "28.8"
## [71] "34.6" "19.4" "30.3" "41.5" "22.6" "56.6" "27.1" "31.3" "31" "31.7"
## [81] "35.8" "28.4" "20.1" "26.7" "38.7" "34.9" "25" "23.8" "21.8" "27.5"
## [91] "24.6" "32.9" "26.1" "31.9" "34.1" "36.9" "37.3" "45.7" "34.2" "23.6"
## [101] "22.3" "37.1" "45" "25.5" "30.8" "37.4" "34.5" "27.9" "29.5" "46"
## [111] "42.5" "35.5" "26.9" "45.5" "31.5" "33" "23.4" "30.7" "20.5" "21.5"
## [121] "40" "28.6" "42.2" "29.6" "35.4" "16.9" "26.8" "39.3" "32.6" "35.9"
## [131] "21.2" "42.4" "40.5" "36.7" "29.3" "19.6" "18" "17.6" "19.1" "50.1"
## [141] "17.7" "54.6" "35" "22" "39.4" "19.7" "22.5" "25.2" "41.8" "60.9"
## [151] "23.7" "24.5" "31.2" "16" "31.6" "25.1" "24.8" "18.3" "20" "19.5"
## [161] "36" "35.3" "40.1" "43.1" "21.4" "34.3" "27.6" "16.5" "24.3" "25.7"
## [171] "21.9" "38.4" "25.9" "54.7" "18.6" "24.9" "48.2" "20.7" "39.5" "23.3"
## [181] "64.8" "35.1" "43.6" "21" "47.3" "16.6" "21.6" "15.5" "35.6" "16.7"
## [191] "41.9" "16.4" "17.1" "29.2" "37.9" "44.6" "39.6" "40.3" "41.6" "39"
## [201] "23.2" "18.9" "36.1" "36.3" "46.5" "16.8" "46.6" "35.2" "20.9" "13.8"
## [211] "31.8" "15.3" "38.2" "45.2" "17" "49.8" "27.8" "60.2" "23" "22.1"
## [221] "26" "44.3" "51" "39.7" "34.7" "21.3" "41.2" "34.8" "19.2" "35.7"
## [231] "40.8" "24.7" "19" "32.4" "34" "28.7" "32.1" "51.5" "20.4" "30.6"
## [241] "71.9" "19.3" "40.9" "17.2" "16.1" "16.2" "40.6" "18.4" "21.1" "42.3"
## [251] "32.2" "50.2" "17.5" "18.7" "42.1" "47.8" "20.8" "30.1" "17.3" "36.4"
## [261] "12" "36.2" "55.7" "14.4" "43" "41.7" "33.8" "43.9" "22.7" "57.5"
## [271] "37" "38.5" "16.3" "44" "32.7" "54.2" "40.2" "33.3" "17.4" "41.3"
## [281] "52.3" "14.6" "17.8" "46.1" "33.1" "18.1" "43.8" "50.3" "38.9" "43.7"
## [291] "39.9" "15.9" "19.8" "12.3" "78" "38.3" "41" "42.6" "43.4" "15.1"
## [301] "20.6" "33.5" "43.2" "30.4" "38" "33.4" "44.9" "44.7" "37.6" "39.8"
## [311] "53.4" "55.2" "42" "37.2" "42.8" "18.8" "42.9" "14.3" "37.7" "48.4"
## [321] "50.6" "46.2" "49.5" "43.3" "33.9" "18.5" "44.5" "45.4" "55" "54.8"
## [331] "19.9" "17.9" "15.6" "52.8" "15.2" "66.8" "55.1" "18.2" "48.5" "55.9"
## [341] "57.3" "10.3" "14.1" "15.7" "56" "44.8" "13.4" "51.8" "38.1" "57.7"
## [351] "44.4" "38.8" "49.3" "39.1" "54" "56.1" "97.6" "53.9" "13.7" "11.5"
## [361] "41.4" "14.2" "49.4" "15.4" "45.1" "49.2" "48.7" "53.8" "42.7" "48.8"
## [371] "52.7" "53.5" "50.5" "15.8" "45.3" "14.8" "51.9" "63.3" "40.7" "61.2"
## [381] "48" "46.8" "48.3" "58.1" "50.4" "11.3" "12.8" "13.5" "14.5" "15"
## [391] "59.7" "47.4" "52.5" "13.2" "52.9" "61.6" "49.9" "54.3" "47.9" "13"
## [401] "13.9" "50.9" "57.2" "64.4" "92" "50.8" "57.9" "45.8" "47.6" "14"
## [411] "46.4" "46.9" "47.1" "13.3" "48.1" "51.7" "46.3" "54.1" "14.9"
which(stroke_predict$bmi == "N/A")
## [1] 2 9 14 20 28 30 44 47 51 52 55 58 65 71 79
## [16] 82 85 106 113 125 127 130 134 147 151 161 162 163 168 171
## [31] 172 175 179 184 190 199 201 219 228 248 343 361 433 478 480
## [46] 523 669 672 681 730 743 866 868 873 880 904 937 966 1103 1107
## [61] 1116 1184 1195 1215 1236 1242 1278 1294 1301 1307 1325 1343 1353 1428 1458
## [76] 1467 1469 1472 1504 1529 1540 1547 1597 1641 1645 1647 1651 1670 1671 1682
## [91] 1719 1720 1731 1754 1757 1780 1817 1837 1838 1867 1895 1907 1913 1982 1994
## [106] 2031 2104 2106 2110 2193 2216 2264 2286 2322 2323 2340 2344 2478 2495 2503
## [121] 2516 2530 2533 2542 2583 2698 2740 2753 2769 2789 2817 2829 2856 2868 2880
## [136] 2898 2915 2961 2998 3008 3029 3049 3060 3075 3105 3112 3136 3162 3163 3165
## [151] 3177 3198 3215 3216 3217 3376 3383 3426 3432 3504 3563 3606 3630 3682 3700
## [166] 3706 3727 3735 3803 3809 3873 3914 3941 3946 3952 4047 4070 4165 4203 4231
## [181] 4256 4284 4287 4423 4452 4523 4562 4617 4685 4714 4751 4791 4922 4935 4950
## [196] 4985 5040 5049 5094 5100 5106
unique(stroke_predict$gender)
## [1] "Male" "Female" "Other"
which(stroke_predict$gender == "Other")
## [1] 3117
# Eliminar el género extra de la base de datos.
stroke_predict <- stroke_predict[-3117,]
#Reemplazo de "N/A" por "NA" mediante un ciclo for.
for(i in 1:nrow(stroke_predict)) {
stroke_predict[i, "bmi"] <- gsub("N/A", NA, stroke_predict[i, "bmi"])
}
# Hacer numérica la variable bmi.
stroke_predict$bmi <- stroke_predict$bmi %>% as.numeric()
# Observar la base de datos.
print(stroke_predict)
## # A tibble: 5,109 × 12
## id gender age hypertension heart_disease ever_married work_type
## <dbl> <chr> <dbl> <dbl> <dbl> <chr> <chr>
## 1 9046 Male 67 0 1 Yes Private
## 2 51676 Female 61 0 0 Yes Self-employed
## 3 31112 Male 80 0 1 Yes Private
## 4 60182 Female 49 0 0 Yes Private
## 5 1665 Female 79 1 0 Yes Self-employed
## 6 56669 Male 81 0 0 Yes Private
## 7 53882 Male 74 1 1 Yes Private
## 8 10434 Female 69 0 0 No Private
## 9 27419 Female 59 0 0 Yes Private
## 10 60491 Female 78 0 0 Yes Private
## # ℹ 5,099 more rows
## # ℹ 5 more variables: Residence_type <chr>, avg_glucose_level <dbl>, bmi <dbl>,
## # smoking_status <chr>, stroke <dbl>
Nota el parámetro message = FALSE fue agregado
en el código del chunk para prevenir que se imprimiera el código de R
que genera la carga de los datos.
En este apartado, se crearon tablas para cada variable a utilizar, con el fin de obtener la frecuencia de cada suceso, su probabilidad, y si es necesario dividir esta tabla a su vez en diferentes subcategorías para poder graficarla de manera más sencilla, además se realizó una limpieza más a fondo a aquellas variables que lo necesitaban con el fin de obtener datos significativos, y al final se realiza un modelo de regresión lineal múltiple con las variables numéricas, con el fin de comprobar si existe una relación significativa entre la variable regresada con las regresora.
# 1 Determinar la probabilidad de tener un accidente cerebrovascular de acuerdo con el IMC.
tib_bmi_s <- stroke_predict %>% group_by(bmi,stroke) %>% summarize(n = length(stroke))
## 1.1 Observar si hay NAs.
which(is.na(tib_bmi_s$bmi))
## [1] 553 554
## 1.2 Eliminar los NAs.
tib_bmi_s <- na.omit(tib_bmi_s)
# 2.1 Determinar la probabilidad de tener un accidente cerebrovascular según la condición de fumador.
tib_ss_s <- stroke_predict %>% group_by(smoking_status,stroke) %>% summarize(n = length(stroke))
## 2.1 condición 1.
desconocido <- tib_ss_s [1:2,]
desconocido$n %>% sum()
## [1] 1544
desconocido <- tib_ss_s [1:2,] %>% cbind(c(desconocido$n[1]/1544,desconocido$n[2]/1544))
desconocido <- desconocido %>% rename(probability=...4)
## 2.2 condición 2.
antes_fumaba <- tib_ss_s [3:4,]
antes_fumaba$n %>% sum()
## [1] 884
antes_fumaba <- tib_ss_s [3:4,] %>% cbind(c(antes_fumaba$n[1]/885,antes_fumaba$n[2]/885))
antes_fumaba <- antes_fumaba %>% rename(probability=...4)
## 2.3 condición 3.
nunca_fumaba <- tib_ss_s [5:6,]
nunca_fumaba$n %>% sum()
## [1] 1892
nunca_fumaba <- tib_ss_s [5:6,] %>% cbind(c(nunca_fumaba$n[1]/1892,nunca_fumaba$n[2]/1892))
nunca_fumaba <- nunca_fumaba %>% rename(probability=...4)
## 2.4 condición 4.
fuma <- tib_ss_s [7:8,]
fuma$n %>% sum()
## [1] 789
fuma <- tib_ss_s [7:8,] %>% cbind(c(fuma$n[1]/789,fuma$n[2]/789))
fuma <- fuma %>% rename(probability=...4)
# 3 Determinar la probabilidad de tener un accidente cerebrovascular según nivel de glucosa en sangre.
tib_gluc_s <- stroke_predict %>% group_by(stroke,avg_glucose_level) %>% summarize(n = length(stroke))
## 3.01 Ya que los niveles de glucosa varían mucho, será necesario crear intervalos para poder determinar su probabilidad, por lo que procederemos a crear intervalos.
min(tib_gluc_s$avg_glucose_level)
## [1] 55.12
max(tib_gluc_s$avg_glucose_level)
## [1] 271.74
breaks <- seq(55, 275, by = 20)
tib_gluc_s$glucose_interval <- cut(tib_gluc_s$avg_glucose_level, breaks = breaks, include.lowest = TRUE)
## 3.02 Creación de una nueva tabla con los intervalos.
tib_glu_new <- tib_gluc_s %>% select(-avg_glucose_level)
## 3.03 Sumar los intervalos.
tib_glu_new <- tib_gluc_s %>%
select(-avg_glucose_level) %>%
group_by(glucose_interval, stroke) %>%
summarize(n = sum(n))
## 3.04 Prob int 1.
int_1 <- tib_glu_new [1:2,]
int_1 <- tib_glu_new [1:2,] %>% cbind(c(int_1$n[1]/(int_1$n %>% sum()),int_1$n[2]/(int_1$n %>% sum())))
int_1 <- int_1 %>% rename(probability=...4)
## 3.05 Prob int 2.
int_2 <- tib_glu_new [3:4,]
int_2 <- tib_glu_new [3:4,] %>% cbind(c(int_2$n[1]/(int_2$n %>% sum()),int_2$n[2]/(int_2$n %>% sum())))
int_2 <- int_2 %>% rename(probability=...4)
## 3.06 Prob int 3.
int_3 <- tib_glu_new [5:6,]
int_3 <- tib_glu_new [5:6,] %>% cbind(c(int_3$n[1]/(int_3$n %>% sum()),int_3$n[2]/(int_3$n %>% sum())))
int_3 <- int_3 %>% rename(probability=...4)
## 3.07 Prob int 4.
int_4 <- tib_glu_new [7:8,]
int_4 <- tib_glu_new [7:8,] %>% cbind(c(int_4$n[1]/(int_4$n %>% sum()),int_4$n[2]/(int_4$n %>% sum())))
int_4 <- int_4 %>% rename(probability=...4)
## 3.08 Prob int 5.
int_5 <- tib_glu_new [9:10,]
int_5 <- tib_glu_new [9:10,] %>% cbind(c(int_5$n[1]/(int_5$n %>% sum()),int_5$n[2]/(int_5$n %>% sum())))
int_5 <- int_5 %>% rename(probability=...4)
## 3.09 Prob int 6.
int_6 <- tib_glu_new [11:12,]
int_6 <- tib_glu_new [11:12,] %>% cbind(c(int_6$n[1]/(int_6$n %>% sum()),int_6$n[2]/(int_6$n %>% sum())))
int_6 <- int_6 %>% rename(probability=...4)
## 3.10 Prob int 7.
int_7 <- tib_glu_new [13:14,]
int_7 <- tib_glu_new [13:14,] %>% cbind(c(int_7$n[1]/(int_7$n %>% sum()),int_7$n[2]/(int_7$n %>% sum())))
int_7 <- int_7 %>% rename(probability=...4)
## 3.11 Prob int 8.
int_8 <- tib_glu_new [15:16,]
int_8 <- tib_glu_new [15:16,] %>% cbind(c(int_8$n[1]/(int_8$n %>% sum()),int_8$n[2]/(int_8$n %>% sum())))
int_8 <- int_8 %>% rename(probability=...4)
## 3.12 Prob int 9.
int_9 <- tib_glu_new [17:18,]
int_9 <- tib_glu_new [17:18,] %>% cbind(c(int_9$n[1]/(int_9$n %>% sum()),int_9$n[2]/(int_9$n %>% sum())))
int_9 <- int_9 %>% rename(probability=...4)
## 3.13 Prob int 10.
int_10 <- tib_glu_new [19:20,]
int_10 <- tib_glu_new [19:20,] %>% cbind(c(int_10$n[1]/(int_10$n %>% sum()),int_10$n[2]/(int_10$n %>% sum())))
int_10 <- int_10 %>% rename(probability=...4)
## 3.14 Prob int 11.
int_11 <- tib_glu_new [21:22,]
int_11 <- tib_glu_new [21:22,] %>% cbind(c(int_11$n[1]/(int_11$n %>% sum()),int_11$n[2]/(int_11$n %>% sum())))
int_11 <- int_11 %>% rename(probability=...4)
# 4 Determinar la probabilidad de tener un accidente cerebrovascular según la edad del paciente.
tib_age_s <- stroke_predict %>% group_by(stroke,age) %>% summarize(n = length(stroke))
# 5 Determinar la probabilidad de tener un accidente cerebrovascular según el género.
tib_gen_s <- stroke_predict %>% group_by(stroke,gender) %>% summarize(n = length(stroke))
# 5.1 Dividiremos la tabla en 2 tablas separadas, una con los datos de los pacientes masculinos y otra con los femeninos.
fem <- tib_gen_s[c(1,3),]
fem$percentage <- fem$n / sum(fem$n) * 100
masc <- tib_gen_s[c(2,4),]
masc$percentage <- masc$n / sum(masc$n) * 100
# 6 Determinar la probabilidad de tener un accidente cerebrovascular por enfermedades cardiacas.
tib_hea_s <- stroke_predict %>% group_by(stroke,heart_disease) %>% summarize(n = length(stroke))
## 6.1 Dividiremos la tabla en 2 tablas separadas, una con los datos de los pacientes sin enfermedades y otro con.
### 6.1.1 Sin.
wo_hea <- tib_hea_s[c(1,3),]
wo_hea$percentage <- wo_hea$n / sum(wo_hea$n) * 100
### 6.1.2 Con.
w_hea <- tib_hea_s[c(2,4),]
w_hea$percentage <- w_hea$n / sum(w_hea$n) * 100
# 7 Determinar la probabilidad de tener un accidente cerebrovascular por hipertensión.
tib_hyp_s <- stroke_predict %>% group_by(stroke,hypertension) %>% summarize(n = length(stroke))
## 7.1 Dividiremos la tabla en 2 tablas separadas, una con los datos de los pacientes sin enfermedades y otro con.
### 7.1.1 Sin.
wo_hyp <- tib_hyp_s[c(1,3),]
wo_hyp$percentage <- wo_hyp$n / sum(wo_hyp$n) * 100
### 7.1.2 Con.
w_hyp <- tib_hyp_s[c(2,4),]
w_hyp$percentage <- w_hyp$n / sum(w_hyp$n) * 100
# 8 Modelo de regresión múltiple.
options(scipen = 999)
modelo <- lm(stroke ~ age + hypertension + heart_disease + avg_glucose_level + bmi, data = stroke_predict)
summary(modelo)
##
## Call:
## lm(formula = stroke ~ age + hypertension + heart_disease + avg_glucose_level +
## bmi, data = stroke_predict)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.26449 -0.06631 -0.02774 0.00552 1.03461
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.03868124 0.01186830 -3.259 0.001125 **
## age 0.00171951 0.00013960 12.318 < 0.0000000000000002 ***
## hypertension 0.05324396 0.01010413 5.270 0.0000001426 ***
## heart_disease 0.06492485 0.01334145 4.866 0.0000011721 ***
## avg_glucose_level 0.00035494 0.00006543 5.424 0.0000000609 ***
## bmi -0.00131269 0.00037869 -3.466 0.000532 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1944 on 4902 degrees of freedom
## (201 observations deleted due to missingness)
## Multiple R-squared: 0.07379, Adjusted R-squared: 0.07284
## F-statistic: 78.1 on 5 and 4902 DF, p-value: < 0.00000000000000022
stargazer(modelo,type = "text")
##
## ===============================================
## Dependent variable:
## ---------------------------
## stroke
## -----------------------------------------------
## age 0.002***
## (0.0001)
##
## hypertension 0.053***
## (0.010)
##
## heart_disease 0.065***
## (0.013)
##
## avg_glucose_level 0.0004***
## (0.0001)
##
## bmi -0.001***
## (0.0004)
##
## Constant -0.039***
## (0.012)
##
## -----------------------------------------------
## Observations 4,908
## R2 0.074
## Adjusted R2 0.073
## Residual Std. Error 0.194 (df = 4902)
## F Statistic 78.103*** (df = 5; 4902)
## ===============================================
## Note: *p<0.1; **p<0.05; ***p<0.01
Nota el parámetro message = FALSE fue agregado
en el código del chunk para prevenir que se imprimiera el código de R
que genera la carga de los datos, además de que se utilizó la función
options(scipen = 999) con el fin de eliminar la notación
científica.
En este apartado se realizaron las gráficas correspondientes para cada variable para poder hacer nuestro análisis e interpretación.
Las gráficas de la a-d nos indican la condición del fumador y la probabilidad que tiene este de padecer un accidente cerebrovascular, la variable tiene en total 4 clasificaciones, desconocido, antes fumaba, nunca fumaba y fuma, con una probabilidad de sufrir un episodio de 3.04%, 7.91%, 4.76% y 5.32% respectivamente.
A pesar de lo que inferimos en la hipótesis, el no fumar no es la que tiene menos probabilidad, y además aquellos que dejaron de fumar tienen una mayor probabilidad de padecerlo en comparación con aquellos que siguen fumando.
Una de las razones por las cuales creo pasa esto es que en la gráfica a el estado del fumador es desconocido, y el más bajo de todos, por lo que es posible que una vez se le asignen a estas personas una clasificación la probabilidad de aquellas que nunca fumaba y de las que antes fumaban debería disminuir.
La gráfica e es una relación entre el IMC y la frecuencia con la que ocurren los accidentes cerebrovasculares, en dicha gráfica se representa el número de personas que han tenido accidentes con un tono azul cielo (1), y las que no con un azul marino (0).
Observamos que aquellas personas con un IMC de entre 19 y 45 son más propensas a sufrir un episodio.
La gráfica f es la relación entre la distribución por intervalos del nivel de glucosa en sangre y la frecuencia con la que ocurren los episodios. Notamos que conforme va aumentando el nivel de glucosa en sangre la probabilidad aumenta, esto ya que la frecuencia de un accidente y un no accidente se va haciendo más pequeña.
De la g-q es en base a estos mismos datos, pero ahora manejando la probabilidad de padecer un episodio, con un 4.22%, 3.2%, 3.85%, 3.46%, 2.98%, 8.42%, 14.16, 12.67, 12.23%, 15.94% y 25% respectivamente con cada intervalo, y sucede lo que se esperaba tanto en la hipótesis como en lo observado en la gráfica anterior, un aumento en el nivel de glucosa en la sangre conlleva una mayor posibilidad de tener ataques.
En la r la variable edad es ahora la estudiada, donde se infiere cuanto mas grande sea la persona, existe un incremento en la frequencia a padecer un episodio.
De la s-t donde se analiza la incidencia por género, suceden 2 cosas curiosas, la primera es que dentro de la población capturada, hay más mujeres en la muestra que hombres, alrededor de un 25% más, y los hombres tienen una mayor probabilidad de sufrir un accidente.
De la u-v los pacientes con enfermedades en el corazón son 4 veces más susceptibles a padecer un accidente cerebrovascular con un 17%, en comparación a un 4.2% a aquellos pacientes sin enfermedades en el corazón.
En estas últimas 2 (W y X), las personas con hipertensión son aproximadamente 3.3 veces más susceptibles a este riesgo que aquellas que no, con un 13.3% y en comparación un 4%.
Nota el parámetro echo = FALSE fue agregado en
el código del chunk de las gráficas para prevenir que se imprimiera el
código de R que genera la gráfica.
En cuanto a los resultados obtenidos conforme a los datos de las gráficas, comprobamos que nuestras hipótesis eran acertadas exceptuando el caso de los pacientes fumadores, asimismo en relación con el modelo de regresión, un incremento en la edad, hipertensión, enfermedades cardiacas y nivel de glucosa en sangre reflejaran un aumento en la probabilidad de sufrir un ataque cardiovascular, y un aumento del IMC, la probabilidad de un accidente cerebrovascular disminuye.
En conclusión, el modelo sugiere que la edad, la hipertensión, la enfermedad cardíaca y el nivel promedio de glucosa tienen un impacto positivo y significativo en la probabilidad de sufrir un accidente cerebrovascular, mientras que el IMC tiene un impacto negativo pero también significativo. Sin embargo, el bajo valor de R-cuadrado sugiere que el modelo no captura toda la variabilidad en la ocurrencia de accidentes cerebrovasculares, y otras variables podrían ser relevantes.