Analisis de datos abiertos de covid-19 en Mexico

Introduccion

En el presente caso de estudio se analizan los datos abiertos de contagios por covid-19 en Mexico, con el fin de analizar el crecimiento de contagios y las causas por las cual se presentan crecimientos exponenciales de contagios en Sonora y Sinaloa.

Los datos utilizados se encuentran disponibles en: disponibles en: https://datos.covid-19.conacyt.mx/#downZCSV

library(pacman)
p_load(markdown, knitr, tidyr, tidyverse, lubridate, summarytools, ggpubr, kableExtra, reshape2, gridExtra, sf, tmap, readr, devtools, plotly, Rcpp, gganimate, gifski, Hmisc )

Importar datos

library(readr)
covid <- read_csv("Casos_Diarios_Estado_Nacional_Confirmados.csv")
## Rows: 33 Columns: 611
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr   (1): nombre
## dbl (610): cve_ent, poblacion, 18/02/2020, 19/02/2020, 20/02/2020, 21/02/202...
## 
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
view(covid)
## x must either be a summarytools object created with freq(), descr(), or a list of summarytools objects created using by()

Casos diarios en Sinaloa

Sinaloa <- t(covid[covid$nombre == "SINALOA",])
Sinaloa <- as.vector(Sinaloa)
Sinaloa <- Sinaloa[4:129]
Sinaloa <- as.numeric(Sinaloa)
Sinaloa <- as.vector(Sinaloa)
cSinaloa <- cumsum(Sinaloa)

Casos diarios en Sonora

Sonora <- t(covid[covid$nombre == "SONORA",])
Sonora <- as.vector(Sonora)
Sonora <- Sonora[4:129]
Sonora <- as.numeric(Sonora)
Sonora <- as.vector(Sonora)
cSonora <- cumsum(Sonora)

Fecha

Fecha = seq(from=as.Date("2020-01-07"), to = as.Date("2020-05-11"), by = 'day')
ColSon <- data.frame(Fecha,Sinaloa,Sonora) # Casos diarios
cColSon <- data.frame(Fecha, cSinaloa, cSonora) # Casos acumulados

Graficos de casos diarios confirmados en Sinaloa

plot(Sinaloa)

En el grafico de casos diarios confirmados en el estado de Sinaloa podemos observar como los casos por contagio de covid-19 van en aumento conforme pasan los meses, iniciando con un comportamiento muy lineal de contagios en los primeros 40 dias para despues aumentar de manera exponencial.

Graficos de casos diarios confirmados en Sonora

plot(Sonora)

En el grafico de casos diarios confirmados en sonora podemos observar un comportamiento muy similar en contagios por covid-19, conforme pasan los meses los casos se presentan con mayor frecuencia, iniciando con un comportamiento bastante lineal o sin muchas variaciones en cuanto a los casos, para despues presentar un crecimiento exponencial de contagios.

Grafico de casos diarios confirmados en Sinaloa 2

ggplot(data=ColSon) +
  ggtitle("Casos diarios de COVID-19 en Sinaloa") +
  geom_line(mapping = aes(x=Fecha, y=Sinaloa))

En el grafico de casos diarios de covid-19 en Sinaloa 2 podemos observar una mejor representacion de como los datos se comportan conforme pasan los meses, presentando varios picos o aumentos exponenciales que podrian estar relacionados a grandes movilidades de personas provocando grnades aglomeraciones.

Grafico de casos diarios confirmados en Sonora 2

ggplot(data=ColSon) +
  ggtitle("Casos diarios de COVID-19 en Sonora") +
  geom_line(mapping = aes(x=Fecha, y=Sonora))

En el grafico de casos diarios de covid-19 en Sonora 2 podemos observar una representacion mas detallada de los diferentes picos de contagios que se presentan conforme los dias transcurren, pudiendo ser causado por grandes movilidades de personas.

Datos absolutos

gAbsolutos <- ggplot(data.frame(cSinaloa)) +
  geom_line(aes(Fecha, Sinaloa, colour = "Sinaloa"))+
  geom_line(aes(Fecha, Sonora, colour = "Sonora"))+
  xlab("Mes del ano 2020") +
  ylab("Casos Diarios") +
  ggtitle("Casos diarios confirmados de COVID-19 en Sinaloa y Sonora")
ggplotly(gAbsolutos)

En el grafico de casos confirmados de COVID-19 en Sinaloa y Sonora podemos observar una comparacion de como a ido aumentando los casos en cada estado conforme el tiempo transcurre, podemos observar un comportamiento paredcido, a diferencia que en Sinaloa los picos o contagios no son tan grandes como en Sonora, a exepcion de los contagios entre los meses de febrero y abril, donde se puede observar que Sinaloa tuvo una mayor tasa de contagios al inicio, pero despues se tuvo un mejor control de la pandemia, provocando que los picos posteriores a abril, estuvieran mas controlados que en Sonora.

Grafico interactivo

z <- ggplot(data.frame(cColSon)) +
  geom_line(aes(Fecha, cSinaloa, colour = "Sinaloa"))+
  geom_line(aes(Fecha, cSonora, colour = "Sonora"))+
  xlab("Fecha") +
  ylab("Casos Diarios Acumulados") +
  ggtitle("Comparativa Sinaloa y Sonora COVID-19")
ggplotly(z)

En el grafico comparativa Sinaloa y Sonora covid-19 podemos observar los datos acumulados para Sonora y Sinaloa, podemos observar que en ambos estados los casos de contagio aumentaron considerablemente a finales de marzo.

Sonora1 <- data.frame(Fecha,Sonora, cSonora)

Diarios y acumulados en Sonora

z2 <- ggplot(data.frame(Sonora1)) +
  geom_line(aes(Fecha, cSonora)) +
  xlab('Fecha') +
  ylab ('Casos Diarios Acummulados') +
  ggtitle( ' Confirmados de COVID-19 en Sonora 11 de mayo 2020')
z3 <- ggplot(data.frame(Sonora1)) +
  geom_line(aes(Fecha, Sonora)) +
  xlab('Fecha') +
  ylab ('Casos Diarios') +
  ggtitle( ' Confirmados de COVID-19 en Sonora 11 de mayo 2020')
p_load(gridExtra)
grid.arrange(z2,z3)

Sinaloa1 <- data.frame(Fecha,Sinaloa, cSinaloa)

Diarios y acumulados en Sinaloa

z4 <- ggplot(data.frame(Sinaloa1)) +
  geom_line(aes(Fecha, cSinaloa)) +
  xlab('Fecha') +
  ylab ('Casos Diarios Acumulados') +
  ggtitle( ' Confirmados de COVID-19 en Sinaloa 11 de mayo 2020')
z5 <- ggplot(data.frame(Sinaloa1)) +
  geom_line(aes(Fecha, Sinaloa)) +
  xlab('Fecha') +
  ylab ('Casos Diarios') +
  ggtitle( ' Confirmados de COVID-19 en Sinaloa 11 de mayo 2020')
p_load(gridExtra)
grid.arrange(z4,z5)

## Podemos observar una comparacion en cuanto a los datos acumulados y los datos no acumulados del estado de Sinaloa

Analisis de series de tiempo

Para tratar este vector numerico como una serie de tiempo, utilizaremos el comando ts (time-series objects)

Sinaloa.ts <- ts(Sinaloa, start = c (2020,1), frequency = 12     )
Sonora.ts <- ts(Sonora, start = c (2020,1), frequency = 12     )
print(Sinaloa.ts)
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2020   0   0   0   0   0   0   0   0   0   0   0   0
## 2021   0   0   0   0   0   0   0   0   0   0   0   0
## 2022   1   0   0   2   1   0   2   1   0   1   4   7
## 2023   8   9  10   7   7  12  16  14  29  10  14  15
## 2024  32  25  29  13  34  25  23  52  47  52  42  45
## 2025  35  33  65  47  56  68  72  55  40  88  52  57
## 2026  58  60  49  34  82  61  86  69  68  53  44  73
## 2027  89  83 105  99  70  67 152 110 127 120 145  63
## 2028  86 179 195 199 170 194 133  75 230 186 218 203
## 2029 230 159 106 220 252 231 240 304 101  92 202 214
## 2030 204 169 175 150  90 223
print(Sonora.ts)
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2020   0   0   0   0   0   0   0   0   0   0   0   0
## 2021   0   0   0   0   0   0   0   0   0   0   0   0
## 2022   1   0   1   0   2   1   0   1   1   0   3   5
## 2023   5   1   6   4   0   1   5   1   3   2   7   2
## 2024  12  15  16   7   8   6   5  20   6  16  16  15
## 2025  14   7   9  15  23  10  20   9  17  35  29  26
## 2026  40  37  33  26  69  62  46  48  54  53  30  80
## 2027  76 115  88 106  71  62 173 157 158 185 164 137
## 2028 110 242 277 239 267 220 150 127 247 246 257 250
## 2029 263 170 121 287 302 271 278 277 182 152 301 317
## 2030 334 279 304 203 171 366

Ahora que se tiene una variable que es un objeto orientado a tiempo, se puede tener una grafica en la cual se entienda la periodicidad de los aumentos de los casos confirmados de COVID-19

plot(Sinaloa.ts)

plot(Sonora.ts)

Ahora haremos una comparacion interanual del aumento de los casos confirmados de COVID-19

boxplot (Sinaloa.ts ~ cycle(Sinaloa.ts))

boxplot (Sonora.ts ~ cycle(Sonora.ts))

Entendimiento de los ciclos del comportamiento de casos de COVID-19

cycle(Sinaloa.ts)
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2020   1   2   3   4   5   6   7   8   9  10  11  12
## 2021   1   2   3   4   5   6   7   8   9  10  11  12
## 2022   1   2   3   4   5   6   7   8   9  10  11  12
## 2023   1   2   3   4   5   6   7   8   9  10  11  12
## 2024   1   2   3   4   5   6   7   8   9  10  11  12
## 2025   1   2   3   4   5   6   7   8   9  10  11  12
## 2026   1   2   3   4   5   6   7   8   9  10  11  12
## 2027   1   2   3   4   5   6   7   8   9  10  11  12
## 2028   1   2   3   4   5   6   7   8   9  10  11  12
## 2029   1   2   3   4   5   6   7   8   9  10  11  12
## 2030   1   2   3   4   5   6
cycle(Sonora.ts)
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2020   1   2   3   4   5   6   7   8   9  10  11  12
## 2021   1   2   3   4   5   6   7   8   9  10  11  12
## 2022   1   2   3   4   5   6   7   8   9  10  11  12
## 2023   1   2   3   4   5   6   7   8   9  10  11  12
## 2024   1   2   3   4   5   6   7   8   9  10  11  12
## 2025   1   2   3   4   5   6   7   8   9  10  11  12
## 2026   1   2   3   4   5   6   7   8   9  10  11  12
## 2027   1   2   3   4   5   6   7   8   9  10  11  12
## 2028   1   2   3   4   5   6   7   8   9  10  11  12
## 2029   1   2   3   4   5   6   7   8   9  10  11  12
## 2030   1   2   3   4   5   6

Descomposicion de una serie de tiempo

Componentes estructurales de una serie de tiempo:

Serie observada = Tendencia + Efecto Estacional + Residuos

Transformaciones basicas de una serie de tiempo

Las transformaciones de series suelen ser utiles para estabilizar datos antes de estimar modelos.

Estabilizacion de la varianza

Las series en las que la varianza cambia a lo largo del tiempo con frecuencia se pueden estabilizar con una transformación logarítmica natural o de raíz cuadrada. También reciben el nombre de transformaciones funcionales.

plot(log(Sinaloa.ts))

plot(log(Sonora.ts))

Eliminacion de la tendencia

x <- log(Sinaloa.ts)
dif1.x <- diff(x)
plot(dif1.x)

x1 <- log(Sonora.ts)
dif1.x1 <- diff(x1)
plot(dif1.x1)

Eliminacion de la estacionalidad

dif12.dif1.x <- diff(dif1.x, lag=12)
plot(dif12.dif1.x)

dif12.dif1.x1 <- diff(dif1.x1, lag=12)
plot(dif12.dif1.x1)

Conclusion

Los contagios por covid-19 en Sonora y Sinaloa aumentan con el tiempo, pero el tiempo no es el causante los aumentos en los contagios.

La movilidad es la causante de que las personas se aglomeren, ya sea por motivos de trabajo, dias festivos o reuniones, lo que causa una mayor probabilidad de contagiarse.