Análisis epidemiologico del COVID-19 en Sinaloa

Author

Curso de Epidemiología - Maestría en Ciencias en Biomedicina Molecular - Dr. Osuna

Introducción y Objetivos

En esta sesión práctica, emplearemos R, un lenguaje de programación y ambiente de software libre para el análisis estadístico y gráfico, para explorar y analizar datos de mortalidad por COVID-19 en el estado de Sinaloa. A través de este ejercicio, buscamos:

  • Familiarizar a los estudiantes con el manejo de paquetes especializados en R para el análisis epidemiológico.

Introducción y Objetivos

  • Desarrollar habilidades en la preparación y limpieza de datos epidemiológicos.

  • Aplicar técnicas de análisis de supervivencia y visualización de datos para interpretar tendencias y patrones en la mortalidad por COVID-19.

Paquetes de R Utilizados

A lo largo de la práctica, utilizaremos varios paquetes de R, cada uno con funciones específicas que facilitan el análisis de los datos:

  • tidyverse: Colección de paquetes para la ciencia de datos, que incluye herramientas para la manipulación, visualización y exploración de datos.
  • Hmisc, survival, survminer: Paquetes dedicados al análisis de supervivencia, permitiendo realizar estimaciones de supervivencia, comparaciones de grupos, y visualización de curvas de supervivencia.

Paquetes de R Utilizados

  • ggpubr, gtable, gt: Herramientas para mejorar la presentación de tablas y gráficos, facilitando la creación de visualizaciones publicables y personalizadas.

install.packages(c("tidyverse", "Hmisc","survival", "survminer","gtable","gt"))

Paquetes de R Utilizados

  • lubridate: Facilita el manejo de fechas y tiempos, esencial para el análisis temporal de los datos epidemiológicos.
  • funModeling, forestmodel: Proporcionan funciones para el modelado estadístico y el análisis exploratorio de datos, incluyendo la creación de modelos de bosques aleatorios.
  • plotly, cowplot: Paquetes para la creación de gráficos interactivos y la combinación de múltiples gráficos, respectivamente.

install.packages(c("lubridate","funModeling", "forestmodel", "plotly", "cowplot"))

Preparación y Limpieza de Datos

Preparación de los datos

La calidad del análisis de datos depende en gran medida de la preparación inicial de los mismos. En este paso, nos enfocamos en importar, filtrar y clasificar los datos de COVID-19 obtenidos para el estado de Sinaloa. La correcta manipulación de los datos es esencial para realizar análisis posteriores con precisión.

Importación de Datos

-Usamos read_delim de readr (parte de tidyverse) para importar los datos:

-library(readr): Carga el paquete readr, que ofrece funciones eficientes para leer archivos de datos tabulares.

library(readr)

dbcovid <- read_delim("dbcovid.txt", delim = "|", escape_double = FALSE, trim_ws = TRUE)
Warning: One or more parsing issues, call `problems()` on your data frame for details,
e.g.:
  dat <- vroom(...)
  problems(dat)
Rows: 429902 Columns: 130
── Column specification ────────────────────────────────────────────────────────
Delimiter: "|"
chr (106): ORIGEN, SECTOR, CVEMUNUNI, ENTIDAD, DELEGA, UNIDAD, FECHREG, CLUE...
dbl  (12): ID_REGISTRO, CVEENTUNI, CVENTINE, CVELOCAL, LATLOCA, LONGLOCA, SE...
lgl  (12): RESDEFIN2, PAISORI, FINGMEX, PAISTRAN1, PAISTRAN2, PAISTRAN3, PAI...

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

Detalle de la función read_delim de readr

  • "dbcovid.txt": Nombre del archivo de datos. Debe estar en el directorio actual o especificarse la ruta completa.
  • delim = "|": Especifica que el carácter | se utiliza como delimitador entre los campos en el archivo.
  • escape_double = FALSE: Indica que las comillas dobles en el archivo no se utilizan para escapar otros caracteres, tratándolas como caracteres normales.
  • trim_ws = TRUE: Activa la eliminación automática de espacios en blanco que puedan existir al inicio y al final de los campos en el archivo, asegurando la limpieza de los datos.

Preparación y Limpieza de Datos

Utilizar dplyr para filtrar y clasificar los datos

  • Objetivo: Hacer disponibles las funciones de manipulación de datos de dplyr. Función: library(dplyr) prepara el entorno de R para el uso de funciones avanzadas de manipulación de datos, como filter y mutate.

Filtrar Casos Específicos:

  • Objetivo: Seleccionar solo las filas relevantes basadas en el estado de la definición de resultados (RESDEFIN).

  • Función: filter(RESDEFIN == "SARS-CoV-2" | RESDEFIN == "NEGATIVO") reduce el conjunto de datos a aquellos registros que son específicamente positivos o negativos para COVID-19.

  • Simplificar la categorización de los resultados de las pruebas de COVID-19. Función: mutate(RESDEFIN = ifelse(RESDEFIN == "NEGATIVO", "NEGATIVO", "POSITIVO")) cambia la columna RESDEFIN para tener solo dos categorías, facilitando análisis posteriore

Preparación y Limpieza de Datos

library(tidyverse)
Warning: package 'tidyverse' was built under R version 4.3.2
Warning: package 'dplyr' was built under R version 4.3.2
Warning: package 'stringr' was built under R version 4.3.2
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ purrr     1.0.2
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.4.4     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.0
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
covidsin<-dbcovid #Renombrando objetos

covidsintotal<-covidsin

library(tidyverse): Carga el conjunto de paquetes tidyverse, que incluye herramientas poderosas como ggplot2, dplyr, tidyr, readr, entre otros, para la manipulación y visualización de datos. Aquí, el enfoque principal es en dplyr para la manipulación de los datos.

Esta línea crea una copia del dataframe covidsin, probablemente conteniendo datos preliminares de COVID-19, y lo asigna a una nueva variable covidsintotal para realizar operaciones de limpieza y clasificación sin alterar el conjunto original.

Preparación y Limpieza de Datos

  • Reclasificamos todos los casos no negativos a “POSITIVO”
covidsintotal$RESDEFIN <- ifelse(covidsintotal$RESDEFIN == "NEGATIVO", "NEGATIVO", "POSITIVO")

ifelse(): Es una función condicional que evalúa cada elemento de covidsintotal$RESDEFIN. Si el resultado de una prueba es “NEGATIVO”, mantiene el valor “NEGATIVO”; de lo contrario, lo cambia a “POSITIVO”. Esto simplifica la clasificación de resultados en dos categorías principales, lo que facilita análisis posteriores.

Preparación y Limpieza de Datos

  • Filtramos los datos para incluir solo los casos “POSITIVO” y “NEGATIVO”
covidsinfilttotal <- covidsintotal %>% filter(RESDEFIN == "POSITIVO" | RESDEFIN == "NEGATIVO")

filter(): Parte de dplyr, esta función se usa para subconjuntar el dataframe basándose en una condición específica. En este caso, selecciona solo las filas donde RESDEFIN es “POSITIVO” o “NEGATIVO”, excluyendo cualquier otro tipo de resultado que no se haya clasificado en estos términos.

-Utilizamos la función freq() del paquete ‘questionr’ para obtener la frecuencia -Nota: Asegúrate de tener instalado el paquete questionr para usar freq()

library(questionr)
freq(covidsinfilttotal$RESDEFIN)
             n    % val%
NEGATIVO 59452 51.8 51.8
POSITIVO 55323 48.2 48.2

freq(): Función del paquete questionr, que no es parte del tidyverse pero se utiliza aquí para obtener un recuento y porcentaje de cada nivel dentro de la variable RESDEFIN en el dataframe filtrado covidsinfilttotal. Proporciona una visión rápida de la distribución de los casos positivos y negativos.

Preparación y Limpieza de Datos

covidsinfilttotal %>% select(RESDEFIN) %>% drop_na() %>% 
summarise(count = n())
# A tibble: 1 × 1
   count
   <int>
1 114775
  • Esta cadena de funciones realiza tres operaciones:
  • select(RESDEFIN): Selecciona únicamente la columna RESDEFIN.
  • drop_na(): Elimina filas donde RESDEFIN tenga valores NA (datos faltantes).
  • summarise(count = n()): Agrupa los datos resultantes y cuenta el número total de filas, proporcionando el total de casos clasificados como “POSITIVO” o “NEGATIVO”.

Preparación y Limpieza de Datos

#SE EXCLUYEN POSITIVOS POR OTRAS CEPAS
covidsinfilt <-  covidsin %>% filter(RESDEFIN == "SARS-CoV-2" & CLASCOVID19 =="CONF LAB")

-Usamos filter(): Nuevamente, para filtra el dataframe original covidsin, pero esta vez selecciona solo aquellos casos confirmados de COVID-19 (“SARS-CoV-2”) que tienen una clasificación de confirmación de laboratorio (CLASCOVID19 == “CONF LAB”). Este subconjunto puede ser utilizado para análisis más específicos que requieran solo casos confirmados mediante pruebas de laboratorio.

Incluyendo Negativos y Positivos Específicos

Este paso filtra el conjunto de datos para incluir solo casos específicos de COVID-19, incluyendo varios tipos de cepas y casos negativos.

library(dplyr) #parte de tydiverse

covidsinfilttotal <-  covidsin %>%
  filter(RESDEFIN == "SARS-CoV-2" | RESDEFIN == "SARS-CoV-2 - DELTA" |
         RESDEFIN == "SARS-CoV-2 - OMICRON" | RESDEFIN == "SARS-CoV-2 - B.1.1.519" |
         RESDEFIN == "SARS-CoV-2 - LAMBDA" | RESDEFIN == "SARS-CoV-2 - GAMMA" |
         RESDEFIN == "SARS-CoV-2 - ALPHA" | RESDEFIN == "SARS-CoV-2 - OTRA" |
         RESDEFIN == "SARS-CoV-2 - B.1.427/B.1.429" | RESDEFIN == "NEGATIVO")

-filter(): Pertenece al paquete dplyr y se utiliza para subconjuntar los datos basándose en condiciones específicas. Aquí, seleccionamos casos basados en la definición del resultado (RESDEFIN), incluyendo varias cepas de SARS-CoV-2 y casos negativos.

Filtrar Casos Específicos:

ifelse(): Función condicional que evalúa una condición y devuelve un valor si la condición es verdadera y otro si es falsa. Utilizada para recodificar variables basadas en criterios específicos.

Exploración de Variables

Para comprender mejor la estructura y el contenido de nuestras variables, utilizamos:

str(): Muestra la estructura interna de un objeto R, incluyendo el tipo y la longitud de las variables. Es útil para obtener una visión rápida de los datos.

str(covidsinfilttotal)
spc_tbl_ [111,766 × 130] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
 $ ORIGEN         : chr [1:111766] "FUERA DE USMI" "USMI" "USMI" "FUERA DE USMI" ...
 $ SECTOR         : chr [1:111766] "ESTATAL" "SSA" "ISSSTE" "MUNICIPAL" ...
 $ ID_REGISTRO    : num [1:111766] 2637014 2263815 1529764 1636123 3055779 ...
 $ CVEENTUNI      : num [1:111766] 25 25 25 25 25 25 25 25 25 25 ...
 $ CVEMUNUNI      : chr [1:111766] "006" "006" "006" "012" ...
 $ ENTIDAD        : chr [1:111766] "SINALOA" "SINALOA" "SINALOA" "SINALOA" ...
 $ DELEGA         : chr [1:111766] "SINALOA" "SINALOA" "SINALOA" "SINALOA" ...
 $ UNIDAD         : chr [1:111766] "HOSPITAL CIVIL DE CULIACAN" "HOSPITAL GENERAL CULIACAN" "DR. M.CARDENAS DE LA VEGA" "HOSPITAL MARGARITA MAZA DE JUAREZ" ...
 $ FECHREG        : chr [1:111766] "23/09/2020" "26/08/2020" "07/07/2020" "14/07/2020" ...
 $ CLUES          : chr [1:111766] "SLSME000016" "SLSSA000666" "SLIST000085" "SLSMM000014" ...
 $ FOLIO SINAVE   : chr [1:111766] "2592637014" "2532263815" "2511529764" "25111636123" ...
 $ FOLIO_IMSS     : chr [1:111766] NA NA NA NA ...
 $ APEPATER       : chr [1:111766] "ARREDONDO" "ARREDONDO" "ARREDONDO" "ARRAZOLA" ...
 $ APEMATER       : chr [1:111766] "MUÑOZ" "LECHUGA" "LEAL" "RODRIGUEZ" ...
 $ NOMBRE         : chr [1:111766] "OSCAR ALEXIS" "WENDY" "JENIFER" "ADARAPSNI GUADALUPE" ...
 $ SEXO           : chr [1:111766] "MASCULINO" "FEMENINO" "FEMENINO" "FEMENINO" ...
 $ CURP           : chr [1:111766] "AEMO970921HSLRXS" "AELW701015MSLRCN" "AELJ870322MSLRLN" "AARA801011MSLRDD" ...
 $ ENTNACI        : chr [1:111766] "SINALOA" "SINALOA" "SINALOA" "SINALOA" ...
 $ ENTRESI        : chr [1:111766] "SINALOA" "SINALOA" "SINALOA" "SINALOA" ...
 $ CVENTINE       : num [1:111766] 25 25 25 25 25 25 25 25 25 25 ...
 $ MPIORESI       : chr [1:111766] "CULIACAN" "CULIACAN" "CULIACAN" "MAZATLAN" ...
 $ CVEMUNI        : chr [1:111766] "006" "006" "006" "012" ...
 $ LOCRESI        : chr [1:111766] "CULIACAN ROSALES" "CULIACAN ROSALES" "CULIACAN ROSALES" "MAZATLAN" ...
 $ CVELOCAL       : num [1:111766] 1 1 1 1 269 177 1 1 1 1 ...
 $ LATLOCA        : num [1:111766] 24.8 24.8 24.8 23.2 25.4 ...
 $ LONGLOCA       : num [1:111766] NA NA NA NA NA NA NA NA NA NA ...
 $ TIPACIEN       : chr [1:111766] "AMBULATORIO" "AMBULATORIO" "HOSPITALIZADO" "AMBULATORIO" ...
 $ EVOLUCI        : chr [1:111766] "SEGUIMIENTO TERMINADO" "SEGUIMIENTO TERMINADO" "SEGUIMIENTO TERMINADO" "SEGUIMIENTO TERMINADO" ...
 $ FEGRESO        : chr [1:111766] "22/09/2020" "26/08/2020" "20/07/2020" "20/07/2020" ...
 $ FECDEF         : chr [1:111766] NA NA NA NA ...
 $ SEMDEF         : num [1:111766] NA NA NA NA NA 21 NA NA NA 38 ...
 $ CERTIDEF       : num [1:111766] NA NA NA NA NA ...
 $ DEFPORINF      : chr [1:111766] NA NA NA NA ...
 $ DEFVERIFI      : chr [1:111766] NA NA NA NA ...
 $ INTUBADO       : chr [1:111766] NA NA NA NA ...
 $ DIGCLINE       : chr [1:111766] "NO" "NO" "SI" "NO" ...
 $ FECNACI        : chr [1:111766] "21/09/1997" "15/10/1970" "22/03/1987" "11/10/1980" ...
 $ EDAD           : num [1:111766] 23 50 33 40 21 79 32 44 41 82 ...
 $ NACIONA        : chr [1:111766] "MEXICANA" "MEXICANA" "MEXICANA" "MEXICANA" ...
 $ ESTAEMBA       : chr [1:111766] NA "NO" "NO" "NO" ...
 $ MESESEMB       : num [1:111766] NA NA NA NA 0 NA NA NA NA NA ...
 $ DOMICILIO      : chr [1:111766] "MAUTO No. SIN NUMERO ENTRE  Y  COLONIA: JOEL RAMIREZ C.P." "FRANSISCO MIRANDA No. 2847 ENTRE  Y  COLONIA: 21 DE MARZO C.P." "SANTA ELVIRA  No. 3498 ENTRE PALO ALTO  Y VISTA HERMOSA  COLONIA: FRACC LOS ANGELES  C.P.80014" "PALMAS No. 18 ENTRE ALAMOS Y ROBLES COLONIA: PLAZA REFORMA C.P.82120" ...
 $ CP             : chr [1:111766] NA NA "80014" "82120" ...
 $ TELEFONO       : chr [1:111766] "6675038894" "6672676286" "6671533101" "6691488158" ...
 $ ESINDIGE       : chr [1:111766] "NO" "NO" "NO" "NO" ...
 $ HABLEIND       : chr [1:111766] "NO" "NO" "NO" "NO" ...
 $ OCUPACIO       : chr [1:111766] "ESTUDIANTES" "HOGAR" "OTROS TRABAJADORES DE LA SALUD" "EMPLEADOS" ...
 $ SERINGRE       : chr [1:111766] "CONSULTA EXTERNA" "CONSULTA EXTERNA" "OBSERVACION DE URGENCIAS" "CONSULTA EXTERNA" ...
 $ FECINGRE       : chr [1:111766] "22/09/2020" "26/08/2020" "07/07/2020" "14/07/2020" ...
 $ FECINISI       : chr [1:111766] "17/09/2020" "22/08/2020" "28/06/2020" "07/07/2020" ...
 $ DIAGPROB       : chr [1:111766] "ENFERMEDAD TIPO INFLUENZA (ETI)" "ENFERMEDAD TIPO INFLUENZA (ETI)" "INFECCION RESPIRATORIA AGUDA GRAVE (IRAG)" "ENFERMEDAD TIPO INFLUENZA (ETI)" ...
 $ FIEBRE         : chr [1:111766] "NO" "NO" "SI" "SI" ...
 $ TOS            : chr [1:111766] "SI" "SI" "SI" "SI" ...
 $ ODINOGIA       : chr [1:111766] "SI" "SI" "SI" "SI" ...
 $ DISNEA         : chr [1:111766] "NO" "SI" "SI" "NO" ...
 $ IRRITABI       : chr [1:111766] "SI" "NO" "SI" "SI" ...
 $ DIARREA        : chr [1:111766] "SI" "NO" "SI" "NO" ...
 $ DOTORACI       : chr [1:111766] "SI" "NO" "SI" "NO" ...
 $ CALOFRIOS      : chr [1:111766] "NO" "NO" "SI" "NO" ...
 $ CEFALEA        : chr [1:111766] "SI" "SI" "SI" "SI" ...
 $ MIALGIAS       : chr [1:111766] "SI" "NO" "SI" "SI" ...
 $ ARTRAL         : chr [1:111766] "SI" "NO" "SI" "SI" ...
 $ ATAEDOGE       : chr [1:111766] "NO" "NO" "NO" "SI" ...
 $ RINORREA       : chr [1:111766] "SI" "SI" "SI" "NO" ...
 $ POLIPNEA       : chr [1:111766] "NO" "NO" "NO" "NO" ...
 $ VOMITO         : chr [1:111766] "NO" "NO" "SI" "NO" ...
 $ DOLABDO        : chr [1:111766] "NO" "NO" "NO" "NO" ...
 $ CONJUN         : chr [1:111766] "SI" "NO" "NO" "NO" ...
 $ CIANOSIS       : chr [1:111766] "NO" "NO" "NO" "NO" ...
 $ INISUBIS       : chr [1:111766] "NO" "NO" "SI" "NO" ...
 $ ANOSMIA        : chr [1:111766] "NO" "NO" "SI" "NO" ...
 $ DISGEUSIA      : chr [1:111766] "SI" "SI" "SI" "NO" ...
 $ ASINTOMATICO   : chr [1:111766] "NO" "NO" "NO" "NO" ...
 $ DIABETES       : chr [1:111766] "NO" "NO" "NO" "NO" ...
 $ EPOC           : chr [1:111766] "NO" "NO" "NO" "NO" ...
 $ ASMA           : chr [1:111766] "NO" "NO" "NO" "NO" ...
 $ INMUSUPR       : chr [1:111766] "NO" "NO" "NO" "SI" ...
 $ HIPERTEN       : chr [1:111766] "NO" "NO" "NO" "NO" ...
 $ VIH/SIDA       : chr [1:111766] "NO" "NO" "NO" "NO" ...
 $ OTRACON        : chr [1:111766] "NO" "NO" "NO" "NO" ...
 $ ENFCARDI       : chr [1:111766] "NO" "NO" "NO" "NO" ...
 $ OBESIDAD       : chr [1:111766] "NO" "NO" "NO" "NO" ...
 $ INSRENCR       : chr [1:111766] "NO" "NO" "NO" "NO" ...
 $ TABAQUIS       : chr [1:111766] "NO" "NO" "NO" "NO" ...
 $ RECTRATA       : chr [1:111766] "NO" "NO" "NO" "NO" ...
 $ TXCROBIA       : chr [1:111766] "SI" "NO" "NO" "SI" ...
 $ TXANTIVI       : chr [1:111766] "SI" "NO" "NO" "NO" ...
 $ ANTIVIRA       : chr [1:111766] "OSELTAMIVIR" NA NA NA ...
 $ FECINITXANTIVI : chr [1:111766] NA NA NA NA ...
 $ CONOCASO       : chr [1:111766] "NO" "NO" "SI" "NO" ...
 $ CONTAVES       : chr [1:111766] "NO" "NO" "NO" "NO" ...
 $ CONCERDO       : chr [1:111766] "NO" "NO" "NO" "NO" ...
 $ CONANIMA       : chr [1:111766] "PERRO" "PERROS" NA NA ...
 $ VACUNADO       : chr [1:111766] "SI" "NO" "SI" "NO" ...
 $ FECVAEST       : chr [1:111766] "20/10/2019" NA "18/02/2020" NA ...
 $ TOMMUE         : chr [1:111766] "SI" "SI" "SI" "SI" ...
 $ LABORA         : chr [1:111766] "SINALOA" "SINALOA" "SINALOA" "SINALOA" ...
 $ FOLLABOR       : num [1:111766] 24899 21544 15191 16552 NA ...
 $ RESDEFIN       : chr [1:111766] "SARS-CoV-2" "SARS-CoV-2" "SARS-CoV-2" "SARS-CoV-2" ...
  [list output truncated]
 - attr(*, "spec")=
  .. cols(
  ..   ORIGEN = col_character(),
  ..   SECTOR = col_character(),
  ..   ID_REGISTRO = col_double(),
  ..   CVEENTUNI = col_double(),
  ..   CVEMUNUNI = col_character(),
  ..   ENTIDAD = col_character(),
  ..   DELEGA = col_character(),
  ..   UNIDAD = col_character(),
  ..   FECHREG = col_character(),
  ..   CLUES = col_character(),
  ..   `FOLIO SINAVE` = col_character(),
  ..   FOLIO_IMSS = col_character(),
  ..   APEPATER = col_character(),
  ..   APEMATER = col_character(),
  ..   NOMBRE = col_character(),
  ..   SEXO = col_character(),
  ..   CURP = col_character(),
  ..   ENTNACI = col_character(),
  ..   ENTRESI = col_character(),
  ..   CVENTINE = col_double(),
  ..   MPIORESI = col_character(),
  ..   CVEMUNI = col_character(),
  ..   LOCRESI = col_character(),
  ..   CVELOCAL = col_double(),
  ..   LATLOCA = col_double(),
  ..   LONGLOCA = col_double(),
  ..   TIPACIEN = col_character(),
  ..   EVOLUCI = col_character(),
  ..   FEGRESO = col_character(),
  ..   FECDEF = col_character(),
  ..   SEMDEF = col_double(),
  ..   CERTIDEF = col_double(),
  ..   DEFPORINF = col_character(),
  ..   DEFVERIFI = col_character(),
  ..   INTUBADO = col_character(),
  ..   DIGCLINE = col_character(),
  ..   FECNACI = col_character(),
  ..   EDAD = col_double(),
  ..   NACIONA = col_character(),
  ..   ESTAEMBA = col_character(),
  ..   MESESEMB = col_double(),
  ..   DOMICILIO = col_character(),
  ..   CP = col_character(),
  ..   TELEFONO = col_character(),
  ..   ESINDIGE = col_character(),
  ..   HABLEIND = col_character(),
  ..   OCUPACIO = col_character(),
  ..   SERINGRE = col_character(),
  ..   FECINGRE = col_character(),
  ..   FECINISI = col_character(),
  ..   DIAGPROB = col_character(),
  ..   FIEBRE = col_character(),
  ..   TOS = col_character(),
  ..   ODINOGIA = col_character(),
  ..   DISNEA = col_character(),
  ..   IRRITABI = col_character(),
  ..   DIARREA = col_character(),
  ..   DOTORACI = col_character(),
  ..   CALOFRIOS = col_character(),
  ..   CEFALEA = col_character(),
  ..   MIALGIAS = col_character(),
  ..   ARTRAL = col_character(),
  ..   ATAEDOGE = col_character(),
  ..   RINORREA = col_character(),
  ..   POLIPNEA = col_character(),
  ..   VOMITO = col_character(),
  ..   DOLABDO = col_character(),
  ..   CONJUN = col_character(),
  ..   CIANOSIS = col_character(),
  ..   INISUBIS = col_character(),
  ..   ANOSMIA = col_character(),
  ..   DISGEUSIA = col_character(),
  ..   ASINTOMATICO = col_character(),
  ..   DIABETES = col_character(),
  ..   EPOC = col_character(),
  ..   ASMA = col_character(),
  ..   INMUSUPR = col_character(),
  ..   HIPERTEN = col_character(),
  ..   `VIH/SIDA` = col_character(),
  ..   OTRACON = col_character(),
  ..   ENFCARDI = col_character(),
  ..   OBESIDAD = col_character(),
  ..   INSRENCR = col_character(),
  ..   TABAQUIS = col_character(),
  ..   RECTRATA = col_character(),
  ..   TXCROBIA = col_character(),
  ..   TXANTIVI = col_character(),
  ..   ANTIVIRA = col_character(),
  ..   FECINITXANTIVI = col_character(),
  ..   CONOCASO = col_character(),
  ..   CONTAVES = col_character(),
  ..   CONCERDO = col_character(),
  ..   CONANIMA = col_character(),
  ..   VACUNADO = col_character(),
  ..   FECVAEST = col_character(),
  ..   TOMMUE = col_character(),
  ..   LABORA = col_character(),
  ..   FOLLABOR = col_double(),
  ..   RESDEFIN = col_character(),
  ..   RESDEFIN2 = col_logical(),
  ..   ESMIGRA = col_character(),
  ..   PAISNAL = col_character(),
  ..   PAISORI = col_logical(),
  ..   FINGMEX = col_logical(),
  ..   PAISTRAN1 = col_logical(),
  ..   PAISTRAN2 = col_logical(),
  ..   PAISTRAN3 = col_logical(),
  ..   PAISTRAN4 = col_logical(),
  ..   PUERPERIO = col_character(),
  ..   DIASPUERP = col_logical(),
  ..   ANTIPIRETICOS = col_character(),
  ..   UCI = col_character(),
  ..   ORIGEN_DATOS = col_double(),
  ..   ASODIC = col_character(),
  ..   ANTIGENCOVID = col_character(),
  ..   FECMUEANT = col_character(),
  ..   CLASCOVID19 = col_character(),
  ..   CLASFLU = col_character(),
  ..   PROTOCOLO = col_character(),
  ..   VACUNA_COV = col_character(),
  ..   TIPO_VAC_COV = col_character(),
  ..   FEC_VAC_COV = col_character(),
  ..   REF_VAC_COV = col_character(),
  ..   FEC_REF_VAC_COV = col_character(),
  ..   LINAJE = col_character(),
  ..   VIAJE1 = col_character(),
  ..   VIAJE2 = col_logical(),
  ..   VIAJE3 = col_logical(),
  ..   VIAJE4 = col_logical(),
  ..   VIAJE5 = col_logical()
  .. )
 - attr(*, "problems")=<externalptr> 

Exploración de Variables

summary(): Proporciona un resumen estadístico de las variables, incluyendo medidas de tendencia central y dispersión para variables cuantitativas, y frecuencias para variables cualitativas.

summary(covidsinfilttotal$RESDEFIN)
   Length     Class      Mode 
   111766 character character 

Exploración de Variables

freq() del paquete questionr (opcionalmente mencionado): Ofrece un resumen de la distribución de frecuencias de una variable, muy útil para datos categóricos.

library(questionr)
freq(covidsinfilttotal$RESDEFIN)
                                 n    % val%
NEGATIVO                     59452 53.2 53.2
SARS-CoV-2                   51921 46.5 46.5
SARS-CoV-2 - ALPHA              19  0.0  0.0
SARS-CoV-2 - B.1.1.519          22  0.0  0.0
SARS-CoV-2 - B.1.427/B.1.429    11  0.0  0.0
SARS-CoV-2 - DELTA             178  0.2  0.2
SARS-CoV-2 - GAMMA              11  0.0  0.0
SARS-CoV-2 - LAMBDA              2  0.0  0.0
SARS-CoV-2 - OMICRON           142  0.1  0.1
SARS-CoV-2 - OTRA                8  0.0  0.0

Importancia de la Exploración de Datos

La exploración de los elementos de una variable es crucial para identificar posibles anomalías, valores atípicos o errores de codificación, permitiendo una limpieza de datos más efectiva y un análisis posterior más fiable.

Referencias:

  • Wickham, H. (2016). dplyr: A Grammar of Data Manipulation. R package version 1.0.0. https://dplyr.tidyverse.org
  • Grolemund, G., & Wickham, H. (2017). R for Data Science: Import, Tidy, Transform, Visualize, and Model Data. O’Reilly Media. https://r4ds.had.co.nz/exploration.html

Recodificar Resultados:

Preparación y Limpieza de Datos

con la función uniquepodemos revisar si esta variable quedo redefinida

unique(covidsinfilttotal$RESDEFIN)
 [1] "SARS-CoV-2"                   "NEGATIVO"                    
 [3] "SARS-CoV-2 - DELTA"           "SARS-CoV-2 - ALPHA"          
 [5] "SARS-CoV-2 - B.1.1.519"       "SARS-CoV-2 - OMICRON"        
 [7] "SARS-CoV-2 - B.1.427/B.1.429" "SARS-CoV-2 - GAMMA"          
 [9] "SARS-CoV-2 - OTRA"            "SARS-CoV-2 - LAMBDA"         

Limpieza de Datos

Aquí, volvemos a filtrar el conjunto de datos para retener solo los casos recodificados como “POSITIVO” o “NEGATIVO”.

covidsinfilttotal %>% select(RESDEFIN) %>% drop_na() %>% 
summarise(count = n())
# A tibble: 1 × 1
   count
   <int>
1 111766

select(), drop_na(), summarise(): Estas funciones de dplyr se utilizan para seleccionar una columna específica (RESDEFIN), eliminar filas con valores NA, y luego resumir el número total de filas, respectivamente, proporcionando un recuento de casos positivos y negativos limpios.

Revisión Final de los Datos

Antes de proceder al análisis, es esencial realizar una última revisión de los datos para asegurarse de que estén correctamente preparados para el análisis:

# Revisar la estructura de los datos filtrados
str(covidsinfilt)
spc_tbl_ [51,921 × 130] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
 $ ORIGEN         : chr [1:51921] "FUERA DE USMI" "USMI" "USMI" "FUERA DE USMI" ...
 $ SECTOR         : chr [1:51921] "ESTATAL" "SSA" "ISSSTE" "MUNICIPAL" ...
 $ ID_REGISTRO    : num [1:51921] 2637014 2263815 1529764 1636123 952212 ...
 $ CVEENTUNI      : num [1:51921] 25 25 25 25 25 25 25 25 25 25 ...
 $ CVEMUNUNI      : chr [1:51921] "006" "006" "006" "012" ...
 $ ENTIDAD        : chr [1:51921] "SINALOA" "SINALOA" "SINALOA" "SINALOA" ...
 $ DELEGA         : chr [1:51921] "SINALOA" "SINALOA" "SINALOA" "SINALOA" ...
 $ UNIDAD         : chr [1:51921] "HOSPITAL CIVIL DE CULIACAN" "HOSPITAL GENERAL CULIACAN" "DR. M.CARDENAS DE LA VEGA" "HOSPITAL MARGARITA MAZA DE JUAREZ" ...
 $ FECHREG        : chr [1:51921] "23/09/2020" "26/08/2020" "07/07/2020" "14/07/2020" ...
 $ CLUES          : chr [1:51921] "SLSME000016" "SLSSA000666" "SLIST000085" "SLSMM000014" ...
 $ FOLIO SINAVE   : chr [1:51921] "2592637014" "2532263815" "2511529764" "25111636123" ...
 $ FOLIO_IMSS     : chr [1:51921] NA NA NA NA ...
 $ APEPATER       : chr [1:51921] "ARREDONDO" "ARREDONDO" "ARREDONDO" "ARRAZOLA" ...
 $ APEMATER       : chr [1:51921] "MUÑOZ" "LECHUGA" "LEAL" "RODRIGUEZ" ...
 $ NOMBRE         : chr [1:51921] "OSCAR ALEXIS" "WENDY" "JENIFER" "ADARAPSNI GUADALUPE" ...
 $ SEXO           : chr [1:51921] "MASCULINO" "FEMENINO" "FEMENINO" "FEMENINO" ...
 $ CURP           : chr [1:51921] "AEMO970921HSLRXS" "AELW701015MSLRCN" "AELJ870322MSLRLN" "AARA801011MSLRDD" ...
 $ ENTNACI        : chr [1:51921] "SINALOA" "SINALOA" "SINALOA" "SINALOA" ...
 $ ENTRESI        : chr [1:51921] "SINALOA" "SINALOA" "SINALOA" "SINALOA" ...
 $ CVENTINE       : num [1:51921] 25 25 25 25 25 25 25 25 25 25 ...
 $ MPIORESI       : chr [1:51921] "CULIACAN" "CULIACAN" "CULIACAN" "MAZATLAN" ...
 $ CVEMUNI        : chr [1:51921] "006" "006" "006" "012" ...
 $ LOCRESI        : chr [1:51921] "CULIACAN ROSALES" "CULIACAN ROSALES" "CULIACAN ROSALES" "MAZATLAN" ...
 $ CVELOCAL       : num [1:51921] 1 1 1 1 177 1 1 1 1 1 ...
 $ LATLOCA        : num [1:51921] 24.8 24.8 24.8 23.2 25.7 ...
 $ LONGLOCA       : num [1:51921] NA NA NA NA NA NA NA NA NA NA ...
 $ TIPACIEN       : chr [1:51921] "AMBULATORIO" "AMBULATORIO" "HOSPITALIZADO" "AMBULATORIO" ...
 $ EVOLUCI        : chr [1:51921] "SEGUIMIENTO TERMINADO" "SEGUIMIENTO TERMINADO" "SEGUIMIENTO TERMINADO" "SEGUIMIENTO TERMINADO" ...
 $ FEGRESO        : chr [1:51921] "22/09/2020" "26/08/2020" "20/07/2020" "20/07/2020" ...
 $ FECDEF         : chr [1:51921] NA NA NA NA ...
 $ SEMDEF         : num [1:51921] NA NA NA NA 21 NA NA 38 NA 19 ...
 $ CERTIDEF       : num [1:51921] NA NA NA NA 1.91e+08 ...
 $ DEFPORINF      : chr [1:51921] NA NA NA NA ...
 $ DEFVERIFI      : chr [1:51921] NA NA NA NA ...
 $ INTUBADO       : chr [1:51921] NA NA NA NA ...
 $ DIGCLINE       : chr [1:51921] "NO" "NO" "SI" "NO" ...
 $ FECNACI        : chr [1:51921] "21/09/1997" "15/10/1970" "22/03/1987" "11/10/1980" ...
 $ EDAD           : num [1:51921] 23 50 33 40 79 32 44 82 25 89 ...
 $ NACIONA        : chr [1:51921] "MEXICANA" "MEXICANA" "MEXICANA" "MEXICANA" ...
 $ ESTAEMBA       : chr [1:51921] NA "NO" "NO" "NO" ...
 $ MESESEMB       : num [1:51921] NA NA NA NA NA NA NA NA 0 NA ...
 $ DOMICILIO      : chr [1:51921] "MAUTO No. SIN NUMERO ENTRE  Y  COLONIA: JOEL RAMIREZ C.P." "FRANSISCO MIRANDA No. 2847 ENTRE  Y  COLONIA: 21 DE MARZO C.P." "SANTA ELVIRA  No. 3498 ENTRE PALO ALTO  Y VISTA HERMOSA  COLONIA: FRACC LOS ANGELES  C.P.80014" "PALMAS No. 18 ENTRE ALAMOS Y ROBLES COLONIA: PLAZA REFORMA C.P.82120" ...
 $ CP             : chr [1:51921] NA NA "80014" "82120" ...
 $ TELEFONO       : chr [1:51921] "6675038894" "6672676286" "6671533101" "6691488158" ...
 $ ESINDIGE       : chr [1:51921] "NO" "NO" "NO" "NO" ...
 $ HABLEIND       : chr [1:51921] "NO" "NO" "NO" "NO" ...
 $ OCUPACIO       : chr [1:51921] "ESTUDIANTES" "HOGAR" "OTROS TRABAJADORES DE LA SALUD" "EMPLEADOS" ...
 $ SERINGRE       : chr [1:51921] "CONSULTA EXTERNA" "CONSULTA EXTERNA" "OBSERVACION DE URGENCIAS" "CONSULTA EXTERNA" ...
 $ FECINGRE       : chr [1:51921] "22/09/2020" "26/08/2020" "07/07/2020" "14/07/2020" ...
 $ FECINISI       : chr [1:51921] "17/09/2020" "22/08/2020" "28/06/2020" "07/07/2020" ...
 $ DIAGPROB       : chr [1:51921] "ENFERMEDAD TIPO INFLUENZA (ETI)" "ENFERMEDAD TIPO INFLUENZA (ETI)" "INFECCION RESPIRATORIA AGUDA GRAVE (IRAG)" "ENFERMEDAD TIPO INFLUENZA (ETI)" ...
 $ FIEBRE         : chr [1:51921] "NO" "NO" "SI" "SI" ...
 $ TOS            : chr [1:51921] "SI" "SI" "SI" "SI" ...
 $ ODINOGIA       : chr [1:51921] "SI" "SI" "SI" "SI" ...
 $ DISNEA         : chr [1:51921] "NO" "SI" "SI" "NO" ...
 $ IRRITABI       : chr [1:51921] "SI" "NO" "SI" "SI" ...
 $ DIARREA        : chr [1:51921] "SI" "NO" "SI" "NO" ...
 $ DOTORACI       : chr [1:51921] "SI" "NO" "SI" "NO" ...
 $ CALOFRIOS      : chr [1:51921] "NO" "NO" "SI" "NO" ...
 $ CEFALEA        : chr [1:51921] "SI" "SI" "SI" "SI" ...
 $ MIALGIAS       : chr [1:51921] "SI" "NO" "SI" "SI" ...
 $ ARTRAL         : chr [1:51921] "SI" "NO" "SI" "SI" ...
 $ ATAEDOGE       : chr [1:51921] "NO" "NO" "NO" "SI" ...
 $ RINORREA       : chr [1:51921] "SI" "SI" "SI" "NO" ...
 $ POLIPNEA       : chr [1:51921] "NO" "NO" "NO" "NO" ...
 $ VOMITO         : chr [1:51921] "NO" "NO" "SI" "NO" ...
 $ DOLABDO        : chr [1:51921] "NO" "NO" "NO" "NO" ...
 $ CONJUN         : chr [1:51921] "SI" "NO" "NO" "NO" ...
 $ CIANOSIS       : chr [1:51921] "NO" "NO" "NO" "NO" ...
 $ INISUBIS       : chr [1:51921] "NO" "NO" "SI" "NO" ...
 $ ANOSMIA        : chr [1:51921] "NO" "NO" "SI" "NO" ...
 $ DISGEUSIA      : chr [1:51921] "SI" "SI" "SI" "NO" ...
 $ ASINTOMATICO   : chr [1:51921] "NO" "NO" "NO" "NO" ...
 $ DIABETES       : chr [1:51921] "NO" "NO" "NO" "NO" ...
 $ EPOC           : chr [1:51921] "NO" "NO" "NO" "NO" ...
 $ ASMA           : chr [1:51921] "NO" "NO" "NO" "NO" ...
 $ INMUSUPR       : chr [1:51921] "NO" "NO" "NO" "SI" ...
 $ HIPERTEN       : chr [1:51921] "NO" "NO" "NO" "NO" ...
 $ VIH/SIDA       : chr [1:51921] "NO" "NO" "NO" "NO" ...
 $ OTRACON        : chr [1:51921] "NO" "NO" "NO" "NO" ...
 $ ENFCARDI       : chr [1:51921] "NO" "NO" "NO" "NO" ...
 $ OBESIDAD       : chr [1:51921] "NO" "NO" "NO" "NO" ...
 $ INSRENCR       : chr [1:51921] "NO" "NO" "NO" "NO" ...
 $ TABAQUIS       : chr [1:51921] "NO" "NO" "NO" "NO" ...
 $ RECTRATA       : chr [1:51921] "NO" "NO" "NO" "NO" ...
 $ TXCROBIA       : chr [1:51921] "SI" "NO" "NO" "SI" ...
 $ TXANTIVI       : chr [1:51921] "SI" "NO" "NO" "NO" ...
 $ ANTIVIRA       : chr [1:51921] "OSELTAMIVIR" NA NA NA ...
 $ FECINITXANTIVI : chr [1:51921] NA NA NA NA ...
 $ CONOCASO       : chr [1:51921] "NO" "NO" "SI" "NO" ...
 $ CONTAVES       : chr [1:51921] "NO" "NO" "NO" "NO" ...
 $ CONCERDO       : chr [1:51921] "NO" "NO" "NO" "NO" ...
 $ CONANIMA       : chr [1:51921] "PERRO" "PERROS" NA NA ...
 $ VACUNADO       : chr [1:51921] "SI" "NO" "SI" "NO" ...
 $ FECVAEST       : chr [1:51921] "20/10/2019" NA "18/02/2020" NA ...
 $ TOMMUE         : chr [1:51921] "SI" "SI" "SI" "SI" ...
 $ LABORA         : chr [1:51921] "SINALOA" "SINALOA" "SINALOA" "SINALOA" ...
 $ FOLLABOR       : num [1:51921] 24899 21544 15191 16552 8104 ...
 $ RESDEFIN       : chr [1:51921] "SARS-CoV-2" "SARS-CoV-2" "SARS-CoV-2" "SARS-CoV-2" ...
  [list output truncated]
 - attr(*, "spec")=
  .. cols(
  ..   ORIGEN = col_character(),
  ..   SECTOR = col_character(),
  ..   ID_REGISTRO = col_double(),
  ..   CVEENTUNI = col_double(),
  ..   CVEMUNUNI = col_character(),
  ..   ENTIDAD = col_character(),
  ..   DELEGA = col_character(),
  ..   UNIDAD = col_character(),
  ..   FECHREG = col_character(),
  ..   CLUES = col_character(),
  ..   `FOLIO SINAVE` = col_character(),
  ..   FOLIO_IMSS = col_character(),
  ..   APEPATER = col_character(),
  ..   APEMATER = col_character(),
  ..   NOMBRE = col_character(),
  ..   SEXO = col_character(),
  ..   CURP = col_character(),
  ..   ENTNACI = col_character(),
  ..   ENTRESI = col_character(),
  ..   CVENTINE = col_double(),
  ..   MPIORESI = col_character(),
  ..   CVEMUNI = col_character(),
  ..   LOCRESI = col_character(),
  ..   CVELOCAL = col_double(),
  ..   LATLOCA = col_double(),
  ..   LONGLOCA = col_double(),
  ..   TIPACIEN = col_character(),
  ..   EVOLUCI = col_character(),
  ..   FEGRESO = col_character(),
  ..   FECDEF = col_character(),
  ..   SEMDEF = col_double(),
  ..   CERTIDEF = col_double(),
  ..   DEFPORINF = col_character(),
  ..   DEFVERIFI = col_character(),
  ..   INTUBADO = col_character(),
  ..   DIGCLINE = col_character(),
  ..   FECNACI = col_character(),
  ..   EDAD = col_double(),
  ..   NACIONA = col_character(),
  ..   ESTAEMBA = col_character(),
  ..   MESESEMB = col_double(),
  ..   DOMICILIO = col_character(),
  ..   CP = col_character(),
  ..   TELEFONO = col_character(),
  ..   ESINDIGE = col_character(),
  ..   HABLEIND = col_character(),
  ..   OCUPACIO = col_character(),
  ..   SERINGRE = col_character(),
  ..   FECINGRE = col_character(),
  ..   FECINISI = col_character(),
  ..   DIAGPROB = col_character(),
  ..   FIEBRE = col_character(),
  ..   TOS = col_character(),
  ..   ODINOGIA = col_character(),
  ..   DISNEA = col_character(),
  ..   IRRITABI = col_character(),
  ..   DIARREA = col_character(),
  ..   DOTORACI = col_character(),
  ..   CALOFRIOS = col_character(),
  ..   CEFALEA = col_character(),
  ..   MIALGIAS = col_character(),
  ..   ARTRAL = col_character(),
  ..   ATAEDOGE = col_character(),
  ..   RINORREA = col_character(),
  ..   POLIPNEA = col_character(),
  ..   VOMITO = col_character(),
  ..   DOLABDO = col_character(),
  ..   CONJUN = col_character(),
  ..   CIANOSIS = col_character(),
  ..   INISUBIS = col_character(),
  ..   ANOSMIA = col_character(),
  ..   DISGEUSIA = col_character(),
  ..   ASINTOMATICO = col_character(),
  ..   DIABETES = col_character(),
  ..   EPOC = col_character(),
  ..   ASMA = col_character(),
  ..   INMUSUPR = col_character(),
  ..   HIPERTEN = col_character(),
  ..   `VIH/SIDA` = col_character(),
  ..   OTRACON = col_character(),
  ..   ENFCARDI = col_character(),
  ..   OBESIDAD = col_character(),
  ..   INSRENCR = col_character(),
  ..   TABAQUIS = col_character(),
  ..   RECTRATA = col_character(),
  ..   TXCROBIA = col_character(),
  ..   TXANTIVI = col_character(),
  ..   ANTIVIRA = col_character(),
  ..   FECINITXANTIVI = col_character(),
  ..   CONOCASO = col_character(),
  ..   CONTAVES = col_character(),
  ..   CONCERDO = col_character(),
  ..   CONANIMA = col_character(),
  ..   VACUNADO = col_character(),
  ..   FECVAEST = col_character(),
  ..   TOMMUE = col_character(),
  ..   LABORA = col_character(),
  ..   FOLLABOR = col_double(),
  ..   RESDEFIN = col_character(),
  ..   RESDEFIN2 = col_logical(),
  ..   ESMIGRA = col_character(),
  ..   PAISNAL = col_character(),
  ..   PAISORI = col_logical(),
  ..   FINGMEX = col_logical(),
  ..   PAISTRAN1 = col_logical(),
  ..   PAISTRAN2 = col_logical(),
  ..   PAISTRAN3 = col_logical(),
  ..   PAISTRAN4 = col_logical(),
  ..   PUERPERIO = col_character(),
  ..   DIASPUERP = col_logical(),
  ..   ANTIPIRETICOS = col_character(),
  ..   UCI = col_character(),
  ..   ORIGEN_DATOS = col_double(),
  ..   ASODIC = col_character(),
  ..   ANTIGENCOVID = col_character(),
  ..   FECMUEANT = col_character(),
  ..   CLASCOVID19 = col_character(),
  ..   CLASFLU = col_character(),
  ..   PROTOCOLO = col_character(),
  ..   VACUNA_COV = col_character(),
  ..   TIPO_VAC_COV = col_character(),
  ..   FEC_VAC_COV = col_character(),
  ..   REF_VAC_COV = col_character(),
  ..   FEC_REF_VAC_COV = col_character(),
  ..   LINAJE = col_character(),
  ..   VIAJE1 = col_character(),
  ..   VIAJE2 = col_logical(),
  ..   VIAJE3 = col_logical(),
  ..   VIAJE4 = col_logical(),
  ..   VIAJE5 = col_logical()
  .. )
 - attr(*, "problems")=<externalptr> 
# Resumen de frecuencias para las definiciones de resultado
freq(covidsinfilt$RESDEFIN)
               n   % val%
SARS-CoV-2 51921 100  100
# Visualizar un resumen de los datos
glimpse(covidsinfilt)
Rows: 51,921
Columns: 130
$ ORIGEN          <chr> "FUERA DE USMI", "USMI", "USMI", "FUERA DE USMI", "FUE…
$ SECTOR          <chr> "ESTATAL", "SSA", "ISSSTE", "MUNICIPAL", "SSA", "SSA",…
$ ID_REGISTRO     <dbl> 2637014, 2263815, 1529764, 1636123, 952212, 1681922, 3…
$ CVEENTUNI       <dbl> 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25…
$ CVEMUNUNI       <chr> "006", "006", "006", "012", "011", "006", "006", "006"…
$ ENTIDAD         <chr> "SINALOA", "SINALOA", "SINALOA", "SINALOA", "SINALOA",…
$ DELEGA          <chr> "SINALOA", "SINALOA", "SINALOA", "SINALOA", "SINALOA",…
$ UNIDAD          <chr> "HOSPITAL CIVIL DE CULIACAN", "HOSPITAL GENERAL CULIAC…
$ FECHREG         <chr> "23/09/2020", "26/08/2020", "07/07/2020", "14/07/2020"…
$ CLUES           <chr> "SLSME000016", "SLSSA000666", "SLIST000085", "SLSMM000…
$ `FOLIO SINAVE`  <chr> "2592637014", "2532263815", "2511529764", "25111636123…
$ FOLIO_IMSS      <chr> NA, NA, NA, NA, NA, NA, NA, NA, "IMSS2021041581", NA, …
$ APEPATER        <chr> "ARREDONDO", "ARREDONDO", "ARREDONDO", "ARRAZOLA", "AR…
$ APEMATER        <chr> "MUÑOZ", "LECHUGA", "LEAL", "RODRIGUEZ", "CASTRO", "MO…
$ NOMBRE          <chr> "OSCAR ALEXIS", "WENDY", "JENIFER", "ADARAPSNI GUADALU…
$ SEXO            <chr> "MASCULINO", "FEMENINO", "FEMENINO", "FEMENINO", "MASC…
$ CURP            <chr> "AEMO970921HSLRXS", "AELW701015MSLRCN", "AELJ870322MSL…
$ ENTNACI         <chr> "SINALOA", "SINALOA", "SINALOA", "SINALOA", "SINALOA",…
$ ENTRESI         <chr> "SINALOA", "SINALOA", "SINALOA", "SINALOA", "SINALOA",…
$ CVENTINE        <dbl> 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25…
$ MPIORESI        <chr> "CULIACAN", "CULIACAN", "CULIACAN", "MAZATLAN", "GUASA…
$ CVEMUNI         <chr> "006", "006", "006", "012", "011", "006", "006", "006"…
$ LOCRESI         <chr> "CULIACAN ROSALES", "CULIACAN ROSALES", "CULIACAN ROSA…
$ CVELOCAL        <dbl> 1, 1, 1, 1, 177, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1270, 5…
$ LATLOCA         <dbl> 24.79194, 24.79194, 24.79194, 23.24139, 25.70889, 24.7…
$ LONGLOCA        <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ TIPACIEN        <chr> "AMBULATORIO", "AMBULATORIO", "HOSPITALIZADO", "AMBULA…
$ EVOLUCI         <chr> "SEGUIMIENTO TERMINADO", "SEGUIMIENTO TERMINADO", "SEG…
$ FEGRESO         <chr> "22/09/2020", "26/08/2020", "20/07/2020", "20/07/2020"…
$ FECDEF          <chr> NA, NA, NA, NA, "17/05/2020", NA, NA, "09/09/2020", NA…
$ SEMDEF          <dbl> NA, NA, NA, NA, 21, NA, NA, 38, NA, 19, NA, NA, NA, NA…
$ CERTIDEF        <dbl> NA, NA, NA, NA, 190701292, NA, NA, 200662662, NA, 2006…
$ DEFPORINF       <chr> NA, NA, NA, NA, "SI", NA, NA, "SI", NA, "SI", NA, NA, …
$ DEFVERIFI       <chr> NA, NA, NA, NA, "SI", NA, NA, "SI", NA, "SI", NA, NA, …
$ INTUBADO        <chr> NA, NA, NA, NA, "NO", NA, NA, "SI", NA, "NO", NA, NA, …
$ DIGCLINE        <chr> "NO", "NO", "SI", "NO", "SI", "NO", "NO", "SI", "NO", …
$ FECNACI         <chr> "21/09/1997", "15/10/1970", "22/03/1987", "11/10/1980"…
$ EDAD            <dbl> 23, 50, 33, 40, 79, 32, 44, 82, 25, 89, 33, 23, 52, 57…
$ NACIONA         <chr> "MEXICANA", "MEXICANA", "MEXICANA", "MEXICANA", "MEXIC…
$ ESTAEMBA        <chr> NA, "NO", "NO", "NO", NA, "NO", NA, NA, "NO", NA, NA, …
$ MESESEMB        <dbl> NA, NA, NA, NA, NA, NA, NA, NA, 0, NA, NA, NA, NA, NA,…
$ DOMICILIO       <chr> "MAUTO No. SIN NUMERO ENTRE  Y  COLONIA: JOEL RAMIREZ …
$ CP              <chr> NA, NA, "80014", "82120", "81131", "80029", NA, "40080…
$ TELEFONO        <chr> "6675038894", "6672676286", "6671533101", "6691488158"…
$ ESINDIGE        <chr> "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", …
$ HABLEIND        <chr> "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", …
$ OCUPACIO        <chr> "ESTUDIANTES", "HOGAR", "OTROS TRABAJADORES DE LA SALU…
$ SERINGRE        <chr> "CONSULTA EXTERNA", "CONSULTA EXTERNA", "OBSERVACION D…
$ FECINGRE        <chr> "22/09/2020", "26/08/2020", "07/07/2020", "14/07/2020"…
$ FECINISI        <chr> "17/09/2020", "22/08/2020", "28/06/2020", "07/07/2020"…
$ DIAGPROB        <chr> "ENFERMEDAD TIPO INFLUENZA (ETI)", "ENFERMEDAD TIPO IN…
$ FIEBRE          <chr> "NO", "NO", "SI", "SI", "SI", "SI", "SI", "SI", "NO", …
$ TOS             <chr> "SI", "SI", "SI", "SI", "SI", "SI", "NO", "SI", "SI", …
$ ODINOGIA        <chr> "SI", "SI", "SI", "SI", "NO", "SI", "NO", "NO", "NO", …
$ DISNEA          <chr> "NO", "SI", "SI", "NO", "SI", "NO", "NO", "SI", "NO", …
$ IRRITABI        <chr> "SI", "NO", "SI", "SI", "SI", "SI", "SI", "NO", "SI", …
$ DIARREA         <chr> "SI", "NO", "SI", "NO", "NO", "NO", "NO", "NO", "NO", …
$ DOTORACI        <chr> "SI", "NO", "SI", "NO", "NO", "SI", "SI", "NO", "NO", …
$ CALOFRIOS       <chr> "NO", "NO", "SI", "NO", "NO", "SI", "NO", "NO", "NO", …
$ CEFALEA         <chr> "SI", "SI", "SI", "SI", "SI", "SI", "SI", "NO", "SI", …
$ MIALGIAS        <chr> "SI", "NO", "SI", "SI", "NO", "SI", "SI", "NO", "SI", …
$ ARTRAL          <chr> "SI", "NO", "SI", "SI", "NO", "SI", "SI", "SI", "SI", …
$ ATAEDOGE        <chr> "NO", "NO", "NO", "SI", "NO", "SI", "NO", "SI", "NO", …
$ RINORREA        <chr> "SI", "SI", "SI", "NO", "NO", "SI", "NO", "NO", "NO", …
$ POLIPNEA        <chr> "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", …
$ VOMITO          <chr> "NO", "NO", "SI", "NO", "SI", "NO", "NO", "NO", "NO", …
$ DOLABDO         <chr> "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", …
$ CONJUN          <chr> "SI", "NO", "NO", "NO", "NO", "SI", "NO", "NO", "NO", …
$ CIANOSIS        <chr> "NO", "NO", "NO", "NO", "NO", "NO", "NO", "SI", "NO", …
$ INISUBIS        <chr> "NO", "NO", "SI", "NO", "NO", "SI", "NO", "NO", "NO", …
$ ANOSMIA         <chr> "NO", "NO", "SI", "NO", "SE IGNORA", "SI", "SI", "NO",…
$ DISGEUSIA       <chr> "SI", "SI", "SI", "NO", "SE IGNORA", "SI", "NO", "NO",…
$ ASINTOMATICO    <chr> "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", …
$ DIABETES        <chr> "NO", "NO", "NO", "NO", "SI", "NO", "NO", "SI", "NO", …
$ EPOC            <chr> "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", …
$ ASMA            <chr> "NO", "NO", "NO", "NO", "NO", "SI", "NO", "NO", "NO", …
$ INMUSUPR        <chr> "NO", "NO", "NO", "SI", "NO", "NO", "NO", "NO", "NO", …
$ HIPERTEN        <chr> "NO", "NO", "NO", "NO", "SI", "NO", "NO", "SI", "NO", …
$ `VIH/SIDA`      <chr> "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", …
$ OTRACON         <chr> "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", …
$ ENFCARDI        <chr> "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", …
$ OBESIDAD        <chr> "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", …
$ INSRENCR        <chr> "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", …
$ TABAQUIS        <chr> "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", …
$ RECTRATA        <chr> "NO", "NO", "NO", "NO", "NO", "SI", "NO", "NO", "NO", …
$ TXCROBIA        <chr> "SI", "NO", "NO", "SI", "SI", "NO", "SI", "SI", NA, "S…
$ TXANTIVI        <chr> "SI", "NO", "NO", "NO", "SI", "NO", "SI", "SI", "SI", …
$ ANTIVIRA        <chr> "OSELTAMIVIR", NA, NA, NA, "OSELTAMIVIR", NA, "OSELTAM…
$ FECINITXANTIVI  <chr> NA, NA, NA, NA, NA, "16/07/2020", NA, NA, NA, NA, NA, …
$ CONOCASO        <chr> "NO", "NO", "SI", "NO", "NO", "NO", "NO", "NO", "SI", …
$ CONTAVES        <chr> "NO", "NO", "NO", "NO", "SI", "NO", "NO", "NO", "NO", …
$ CONCERDO        <chr> "NO", "NO", "NO", "NO", "SI", "NO", "NO", "NO", "NO", …
$ CONANIMA        <chr> "PERRO", "PERROS", NA, NA, "NO", "NO", "PERROS", NA, N…
$ VACUNADO        <chr> "SI", "NO", "SI", "NO", "NO", "NO", "SI", "NO", "NO", …
$ FECVAEST        <chr> "20/10/2019", NA, "18/02/2020", NA, NA, NA, "10/10/202…
$ TOMMUE          <chr> "SI", "SI", "SI", "SI", "SI", "SI", "SI", "SI", "SI", …
$ LABORA          <chr> "SINALOA", "SINALOA", "SINALOA", "SINALOA", "SINALOA",…
$ FOLLABOR        <dbl> 24899, 21544, 15191, 16552, 8104, 16691, 34132, 19894,…
$ RESDEFIN        <chr> "SARS-CoV-2", "SARS-CoV-2", "SARS-CoV-2", "SARS-CoV-2"…
$ RESDEFIN2       <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ ESMIGRA         <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ PAISNAL         <chr> NA, NA, NA, NA, NA, NA, NA, NA, "México", NA, NA, NA, …
$ PAISORI         <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ FINGMEX         <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ PAISTRAN1       <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ PAISTRAN2       <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ PAISTRAN3       <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ PAISTRAN4       <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ PUERPERIO       <chr> NA, "NO", "NO", "NO", NA, "NO", NA, NA, NA, NA, NA, NA…
$ DIASPUERP       <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ ANTIPIRETICOS   <chr> "NO", "SI", NA, "SI", "SI", "SI", "SI", "SI", "SI", "S…
$ UCI             <chr> NA, NA, NA, NA, "NO", NA, NA, "NO", NA, "NO", NA, NA, …
$ ORIGEN_DATOS    <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, …
$ ASODIC          <chr> "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", NA, "N…
$ ANTIGENCOVID    <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ FECMUEANT       <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ CLASCOVID19     <chr> "CONF LAB", "CONF LAB", "CONF LAB", "CONF LAB", "CONF …
$ CLASFLU         <chr> "NEGATIVO", "NEGATIVO", "NEGATIVO", "NEGATIVO", "NEGAT…
$ PROTOCOLO       <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ VACUNA_COV      <chr> "NO APLICADA", "NO APLICADA", "NO APLICADA", "NO APLIC…
$ TIPO_VAC_COV    <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ FEC_VAC_COV     <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ REF_VAC_COV     <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ FEC_REF_VAC_COV <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ LINAJE          <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ VIAJE1          <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ VIAJE2          <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ VIAJE3          <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ VIAJE4          <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
$ VIAJE5          <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…

Creación de una Curva Epidemiológica con ggplot2

La curva epidemiológica es fundamental para entender la dinámica de una enfermedad a lo largo del tiempo. Utilizando el paquete ggplot2 de R, podemos visualizar la distribución de casos de COVID-19 y analizar patrones importantes como brotes y tendencias. A continuación, se detallan los pasos para crear una curva epidemiológica:

# Cargar las bibliotecas necesarias
library(ggplot2)
library(dplyr)
library(lubridate)

ggplot2 es parte de tidyverse y proporciona un sistema poderoso para declarativamente crear gráficos basados en la gramática de gráficos. lubridate facilita el trabajo con fechas y tiempos, permitiendo manipular, realizar operaciones y acomodar fechas de manera más intuitiva.

Preparación de los Datos

Antes de crear la curva, necesitamos asegurarnos de que los datos estén en el formato adecuado, especialmente las fechas:

-Conversión de Fechas: Las variables FECINISI (fecha de inicio de síntomas) y FECDEF (fecha de defunción) son cruciales para el análisis de supervivencia, ya que permiten calcular el tiempo transcurrido desde el inicio de síntomas hasta la defunción o el último seguimiento conocido. Estas fechas necesitan ser manejadas como objetos de fecha para realizar cálculos de tiempo.

covidsinfilt$FECINISI <- strptime(as.character(covidsinfilt$FECINISI), "%d/%m/%Y")
covidsinfilt$FECINISI = as.Date(covidsinfilt$FECINISI)
covidsinfilt$FECDEF <- strptime(as.character(covidsinfilt$FECDEF), "%d/%m/%Y")
covidsinfilt$FECDEF = as.Date(covidsinfilt$FECDEF)

strptime() y as.Date()
-strptime() convierte una cadena de caracteres en un objeto de fecha y hora según el formato especificado (“%d/%m/%Y”), mientras que -as.Date() convierte el resultado en un objeto de fecha. Este proceso asegura que las fechas sean interpretadas correctamente por R, permitiendo su manipulación y cálculo en análisis subsiguientes.

Preparación de los Datos

-Cálculo del Tiempo de Supervivencia: Una vez que las fechas están en el formato correcto, se calcula el tiempo de supervivencia (deftime), que es la diferencia en días entre la fecha de inicio de síntomas y la fecha de defunción o el último seguimiento para los pacientes.

covidsinfilt <- covidsinfilt %>% mutate(deftime = as.double(FECDEF - FECINISI))

-mutate() y as.double(): -mutate() se usa para crear o modificar columnas dentro del data frame,
- as.double() convierte el resultado en un número de días, facilitando el análisis numérico y estadístico del tiempo de supervivencia.

Generación de Curva Epidemiológica

CURVA EPIDEMIOLOGICA

library(scales)
Warning: package 'scales' was built under R version 4.3.2

Attaching package: 'scales'
The following object is masked from 'package:purrr':

    discard
The following object is masked from 'package:readr':

    col_factor
epiplot <-ggplot(data = covidsinfilt, aes(x = as.Date(FECINISI))) +
  theme_bw() +
  geom_histogram(binwidth = 7, colour = "black", fill = "#3e78d6", size = 0.1) +
  geom_density(aes(y = ..density.. * (nrow(covidsinfilt) * 2)), colour = "red", size=0.8) +
  scale_x_date(date_breaks = "1 month",labels = date_format("%d/%m/%Y"), 
     name = "") +
  scale_y_continuous(breaks = seq(from = 0, to =1500, by = 100), name = "Number of cases") + theme_classic()+
  theme(axis.text.x = element_text(angle = 90, hjust = 1))+ 
  theme(legend.text = element_text(size = 12, color = "black", face = "bold"))+theme(text = element_text(size = 18)) 
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.

CURVA EPIDEMIOLOGICA

Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
ℹ Please use `after_stat(density)` instead.

library(dplyr)
library(ggplot2)

# Calcular el número de casos diarios
casos_diarios <- covidsinfilt %>%
  group_by(FECINISI) %>%
  summarise(casos = n()) %>%
  mutate(casos_acumulados = cumsum(casos))

# Calcular la tasa de crecimiento diaria
casos_diarios <- casos_diarios %>%
  mutate(tasa_crecimiento = (casos_acumulados/lag(casos_acumulados)) - 1)

# Gráfico de la tasa de crecimiento
ggplot(casos_diarios, aes(x = FECINISI, y = tasa_crecimiento)) +
  geom_line() +
  scale_x_date(date_breaks = "1 month", date_labels = "%b %Y") +
  labs(x = "Fecha", y = "Tasa de Crecimiento", title = "Tasa de Crecimiento Diaria de COVID-19") +
  theme_minimal()
Warning: Removed 1 row containing missing values (`geom_line()`).

library(ggplot2)

# Asumiendo que 'casos_diarios' contiene el número de casos nuevos por día
ggplot(casos_diarios, aes(x = FECINISI, y = casos)) +
  geom_line() +
  scale_x_date(date_breaks = "1 month", date_labels = "%b %Y") +
  labs(x = "Fecha", y = "Número de Casos", title = "Identificación de Olas Epidémicas de COVID-19") +
  theme_minimal()

library(ggplot2)
library(lubridate)

# Suponiendo que 'fecha_intervencion' es la fecha de inicio de una intervención específica
fecha_intervencion <- as.Date("2020-03-15")

ggplot(casos_diarios, aes(x = FECINISI, y = casos)) +
  geom_line() +
  geom_vline(xintercept = as.numeric(fecha_intervencion), linetype = "dashed", color = "red") +
  scale_x_date(date_breaks = "1 month", date_labels = "%b %Y") +
  labs(x = "Fecha", y = "Número de Casos", title = "Efecto de Intervenciones en la Curva Epidémica") +
  theme_minimal()