TAREA: Semana 02

Preparar base de datos

Preparación de la data

library(rio)
library(kableExtra)
library(tidyverse)
data = import("fallecidos_covid.csv")
head_data <- head(data, 10) 
head_data %>%
  kbl() %>%
  kable_styling()
FECHA_CORTE FECHA_FALLECIMIENTO EDAD_DECLARADA SEXO CLASIFICACION_DEF DEPARTAMENTO PROVINCIA DISTRITO UBIGEO UUID
20240317 20220219 63 MASCULINO Criterio virológico TUMBES TUMBES TUMBES 240101 203506
20240317 20210529 74 MASCULINO Criterio virológico TUMBES TUMBES TUMBES 240101 203532
20240317 20210623 72 FEMENINO Criterio SINADEF TACNA TACNA ALTO DE LA ALIANZA 230102 203584
20240317 20210824 85 MASCULINO Criterio investigación Epidemiológica TUMBES TUMBES TUMBES 240101 212541
20240317 20210627 46 MASCULINO Criterio virológico TACNA TACNA ALTO DE LA ALIANZA 230102 203665
20240317 20210423 58 MASCULINO Criterio clínico TUMBES ZARUMILLA ZARUMILLA 240301 221184
20240317 20210401 73 FEMENINO Criterio virológico TUMBES ZARUMILLA ZARUMILLA 240301 221211
20240317 20220914 92 FEMENINO Criterio virológico TUMBES TUMBES CORRALES 240102 229901
20240317 20210409 66 MASCULINO Criterio virológico PIURA PIURA CASTILLA 200104 846032
20240317 20211030 64 FEMENINO Criterio SINADEF PUNO MOHO MOHO 210901 846152
summary_data <- summary(data)
summary_data %>%
  kbl() %>%
  kable_styling()
FECHA_CORTE FECHA_FALLECIMIENTO EDAD_DECLARADA SEXO CLASIFICACION_DEF DEPARTAMENTO PROVINCIA DISTRITO UBIGEO UUID
Min. :20240317 Min. :20200303 Min. : 0.00 Length:220918 Length:220918 Length:220918 Length:220918 Length:220918 Min. : 10101 Min. : 12
1st Qu.:20240317 1st Qu.:20200728 1st Qu.: 57.00 Class :character Class :character Class :character Class :character Class :character 1st Qu.:110210 1st Qu.:10785859
Median :20240317 Median :20210207 Median : 68.00 Mode :character Mode :character Mode :character Mode :character Mode :character Median :150110 Median :36218126
Mean :20240317 Mean :20207176 Mean : 66.36 NA NA NA NA NA Mean :134080 Mean :25369408
3rd Qu.:20240317 3rd Qu.:20210426 3rd Qu.: 78.00 NA NA NA NA NA 3rd Qu.:150140 3rd Qu.:36641219
Max. :20240317 Max. :20240302 Max. :114.00 NA NA NA NA NA Max. :250401 Max. :42004985
NA NA NA NA NA NA NA NA NA’s :5 NA’s :2469

Seleccionamos en base a una subdata, las variables que vamos a analizar:

data_3 <- data %>% 
  select(2:7)

Revisión de las variables

Sacamos las variables numéricas:

library(dplyr)
data_1 <- data %>% 
  select("EDAD_DECLARADA", "FECHA_FALLECIMIENTO", "FECHA_CORTE") 
summary(data_1)
##  EDAD_DECLARADA   FECHA_FALLECIMIENTO  FECHA_CORTE      
##  Min.   :  0.00   Min.   :20200303    Min.   :20240317  
##  1st Qu.: 57.00   1st Qu.:20200728    1st Qu.:20240317  
##  Median : 68.00   Median :20210207    Median :20240317  
##  Mean   : 66.36   Mean   :20207176    Mean   :20240317  
##  3rd Qu.: 78.00   3rd Qu.:20210426    3rd Qu.:20240317  
##  Max.   :114.00   Max.   :20240302    Max.   :20240317

Revisamos la cantidad de observaciones:

count(data_1)
##        n
## 1 220918

Variable: Criterio clínico

Según los fallecidos confirmados por Covid-19, los fallecidos cumplen ciertos criterios clínicos:

table(data$CLASIFICACION_DEF)
## 
##                      Criterio clínico Criterio investigación Epidemiológica 
##                                  8994                                 10783 
##          Criterio nexo epidemiológico                  Criterio radiológico 
##                                  2215                                  5113 
##                   Criterio serológico                      Criterio SINADEF 
##                                 42910                                 66198 
##                   Criterio virológico                             NotiCovid 
##                                 84557                                   132 
##                               sinadef 
##                                    16

Gráfico: Evolución de los fallecimientos por Covid-19 por años

Creamos una subdata:

data_2 <- data %>% 
  select("FECHA_FALLECIMIENTO", "CLASIFICACION_DEF")

data_2$FECHA_FALLECIMIENTO = as.numeric(data_2$FECHA_FALLECIMIENTO)
data_2$FECHA_FALLECIMIENTO <- gsub("[0-9]{4}$", "", data_2$FECHA_FALLECIMIENTO)
data_2 <- table(data_2$FECHA_FALLECIMIENTO)
data_2 <- as.data.frame(data_2)

colnames(data_2) <- c("Año", "Frecuencia") #Renombraoms columnas

Revisamos los datos de la subdata:

#Revisamos que la variable "Año" está como factor y procedemos a cambiarlo
data_2$Año <- as.numeric(data_2$Año) 
#Se cambiaron los valores, se corrige:
data_2$Año <- c(2020,2021,2022,2023,2024)
data_2 %>%
  kbl() %>%
  kable_styling()
Año Frecuencia
2020 95331
2021 107962
2022 14742
2023 2570
2024 313

Graficamos:

#Graficamos:
library(ggplot2)
ggplot(data_2, aes(x = Año, y = Frecuencia)) +
  geom_line(color = "black", size = 1) +      # Línea
  geom_point(color = "red", size = 3) +      # Puntos
  labs(title = "Evolución de los fallecimientos por Covid-19 por años", 
       x = "Año", y = "Frecuencia de muertes") +
  theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Ahora, debido a que hay una gran cantiddad de fallecimientos durante el año 2021, vamos a filtrar para ver en cuáles semanas se producieron mayor cantidad de fallecimientos:

data_2 <- data %>% 
  select("FECHA_FALLECIMIENTO", "CLASIFICACION_DEF") %>% 
  filter(FECHA_FALLECIMIENTO >= 20210000 & FECHA_FALLECIMIENTO <= 20219999)

data_2$FECHA_FALLECIMIENTO = as.numeric(data_2$FECHA_FALLECIMIENTO)
data_2$FECHA_FALLECIMIENTO <- gsub("[0-9]{2}$", "", data_2$FECHA_FALLECIMIENTO)
data_2 <- table(data_2$FECHA_FALLECIMIENTO)
data_2 <- as.data.frame(data_2)

colnames(data_2) <- c("Año", "Frecuencia") #Renombraoms columnas
#Graficamos:
library(ggplot2)
ggplot(data_2, aes(x = Año, y = Frecuencia)) +
  geom_line(color = "black", size = 1) +      # Línea
  geom_point(color = "red", size = 3) +      # Puntos
  labs(title = "Evolución de los fallecimientos por Covid-19 durante el 2021", 
       x = "Año", y = "Frecuencia de muertes") +
  theme_minimal()
## `geom_line()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?

Variable: Edad declarada

Revisamos la variable de Edad:

summary(data$EDAD_DECLARADA)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00   57.00   68.00   66.36   78.00  114.00

En base a lo anterior, hacemos una subdata con filtros:

data_4 <- data_3 %>% 
    mutate(nombre=case_when(EDAD_DECLARADA<26~"a_menor_a_25",
                                                    EDAD_DECLARADA<61~"b_entre_25a60",
                                    TRUE~"c_mayor_a_78"))
colnames(data_4)[7] <- c("EDAD_int") #Renombramos columnas
data_4$FECHA_FALLECIMIENTO <- gsub("[0-9]{4}$", "", data_4$FECHA_FALLECIMIENTO)

Cruce de variables

cruce_1 <- table(data_4$CLASIFICACION_DEF, data_4$EDAD_int)
cruce_1 |> 
  prop.table(2) |> 
  addmargins(1)
##                                        
##                                         a_menor_a_25 b_entre_25a60 c_mayor_a_78
##   Criterio clínico                      0.1805685723  0.0391502809 0.0384293509
##   Criterio investigación Epidemiológica 0.0434239300  0.0473724251 0.0495832357
##   Criterio nexo epidemiológico          0.0137457045  0.0108848315 0.0095537777
##   Criterio radiológico                  0.0162449235  0.0201310861 0.0246711077
##   Criterio serológico                   0.1383942518  0.1976386938 0.1938740669
##   Criterio SINADEF                      0.2836613558  0.2909058989 0.3039935728
##   Criterio virológico                   0.3220868479  0.3936534410 0.3790647073
##   NotiCovid                             0.0015620119  0.0002048221 0.0007565360
##   sinadef                               0.0003124024  0.0000585206 0.0000736451
##   Sum                                   1.0000000000  1.0000000000 1.0000000000
cruce_1 <- ftable(CLASIFICACION_DEF ~ EDAD_int + SEXO, data = data_4)
print(cruce_1)
##                         CLASIFICACION_DEF Criterio clínico Criterio investigación Epidemiológica Criterio nexo epidemiológico Criterio radiológico Criterio serológico Criterio SINADEF Criterio virológico NotiCovid sinadef
## EDAD_int      SEXO                                                                                                                                                                                                           
## a_menor_a_25  FEMENINO                                 253                                    71                           16                   20                 198              400                 439         2       1
##               MASCULINO                                325                                    68                           28                   32                 245              508                 592         3       0
## b_entre_25a60 FEMENINO                                1075                                  1050                          257                  435                4577             6258                8919         2       2
##               MASCULINO                               1601                                  2188                          487                  941                8932            13626               17988        12       2
## c_mayor_a_78  FEMENINO                                2530                                  2691                          592                 1327               11509            17278               21642        55       2
##               MASCULINO                               3210                                  4715                          835                 2358               17449            28128               34977        58       9

Graficamos

Gráfico general sobre los tipos de criterios:

ggplot(data = data_4, aes(x = FECHA_FALLECIMIENTO, y = EDAD_DECLARADA, color = CLASIFICACION_DEF, group = CLASIFICACION_DEF)) +
  geom_line(size = 1) +                       
  labs(title = "Evolución de Enfermedades por Año",
       x = "Año",
       y = "Valor")