Los datos sobre el número de casos confirmados, sospechosos y negativos de SARS-COV-2 (COVID-19) en México son publicados por el gobierno a través de la Secretaría de Salud (SSa). Estos datos se publicaban de manera fragmentada, con errores y omisiones, y por lo general en formato PDF lo que dificulta manejarlos en computadora. Tampoco se ha hecho público archivo de datos, y por lo tanto no es posible seguir la evolución a través del tiempo.
Desde el lunes 13 de abril, la SSa a través de Dirección General de Epidemiología publica una base de "datos abiertos" muy completa y en formato CSV. Desde entonces, este repositorio funciona principalmente como una base de datos (no-oficial) donde se archiva la información actualizada, así como los datos previos publicados en PDF (que han sido archivados, normalizados y convertidos a CSV).
También mantenemos series de tiempo (formato tidy) de diferentes variables para facilitar el análisis de la base de datos abiertos.
Este repositorio es actualizado a diario, y trabajamos constantemente para mejorarlo. Si tienes algún comentario, queja o sugerencia, abre un issue o realiza un pull request. También puedes escribirnos al correo [email protected].
Si estás interesado/a en una visualización de los datos que aquí se encuentran, puedes visitar nuestra página para el monitoreo del coronavirus en México (y el repositorio con su respectivo código fuente).
Mayo 19: Los archivos de la base de datos abiertos se encuentran en formato zip. No son solamente los archivos que publica Salud, todos los días bajamos éstos, los descomprimimos, arreglamos el encoding, y los comprimimos de nuevo. También hemos eliminado las carpetas con los archivos PDF que sumaban más de 150 MB.
Mayo 14: Dado que los archivos CSV superan a diario 20MB de espacio, estamos en proceso de refactorizar nuestra base de datos para que solamente utilice archivos comprimidos (en formato zip). Tenemos planeado que a partir de mañana 15 de mayo los archivos de datos abiertos en formato CSV hayan sido eliminados (con todo y el overhead de trackearlos con git). Si bien Salud publica sus archivos comprimidos, vale la pena mencionar que hasta el día de hoy la Secretaría los sigue publicando con el error de encoding y nosotros seguimos corrigiéndolo.
Abril 28: Desde el lunes 24 de Abril los archivos presentan problemas con el encoding. Aunque deberían de ser en principio UTF-8, el comando file -i
en bash detecta ISO-8859-1 (también conocido como latin-1). El problema es que se utilizan ambos encodings para los acentos y éstos son incompatibles.
Por ejemplo, en el archivo del día 27 que se puede bajar del portal de Salud hay 26 filas donde la letra é en "Estados Unidos de América" está codificada con latin-1. En todos los demás casos se utiliza correctamente UTF-8. Para solucionar el problema hemos recurrido a la librería Encoding::FixLatin escrita en perl y que se llama en nuestra script de bash download_datos_abiertos.sh
.
Abril 22: Puedes leer una explicación más completa en nuestra página pero a continuación aclaramos por qué nuestro equipo ha encontrado que la base de datos abiertos de la DGE no presenta inconsistencias con respecto a los datos que Salud publicaba previamente:
-
La base de datos abiertos tiene información mucho más completa y cada caso se puede seguir de individual. Para cada paciente, es posible conocer qué día fue atendido y el estado (confirmado, negativo o pendiente) de la prueba que se le realizó.
-
Al confirmarse que la prueba de un paciente fue positiva (o negativa), la entrada del paciente se actualiza. Sin embargo, no tiene sentido llevar cuenta de la fecha en que el resultado de la prueba se dio a conocer; en la nueva base de datos tiene más sentido contabilizar la prueba el día que el paciente visitó una Unidad Médica (la columna
FECHA_INGRESO
en la nueva base de datos). -
Esto significa en la base de datos abiertos la información se propaga de manera retroactiva y que los casos de los días anteriores van a cambiar. Esto sucede por ejemple en el tablero oficial de la Secretaría de Salud. .
-
Esto contrasta con una serie de tiempo "usual" donde todos los casos que se confirmaron cierto día son contabilizados ese mismo día, y por lo tanto las fechas anteriores no cambian.
-
Nuestra base de datos refleja las dos maneras de contabilizar los datos.
-
Datos abiertos:
- datos_abiertos/raw: los datos publicados por la DGE a partir del lunes 13 de abril.
-
Datos abiertos en formato tidy:
- datos_abiertos/series_de_tiempo/nuevos: diferentes variables contabilizadas por día y por estado.
- datos_abiertos/series_de_tiempo/acumulados: diferentes variables contabilizadas por día y por estado y acumuladas hasta la fecha más reciente.
-
Datos correspondientes a formatos antiguos (PDFs, SINAVE) y publicados hasta el 19 de abril (SSa ha dejado de actualizarlos):
- datos/reportes_oficiales_ssa: se archivan las tablas de confirmados y sospechosos en formato CSV generadas a partir de los archivos PDF que SSa publicaba.
- datos/sinave: se archivan los datos en formato JSON que se extraían del mapa de SINAVE.
-
Datos correspondientes a formatos antiguos en formato tidy:
- datos/series_de_tiempo: el historial de casos a nivel nacional y desglosados por estado. Estas series de tiempo se siguen actualizando con la base de datos abiertos (el total de casos confirmados se asocia con el día de publicación).
-
Datos abiertos de la Dirección General de Epidemiología publicados por la Secretaría de Salud Federal. Estos datos has sido publicados con una licencia
Libre Uso MX
como consta en el portal de datos abiertos del gobierno. -
Tabla de casos positivos y Tabla de casos sospechosos en formato PDF: Coronavirus (COVID-19)-Comunicado Técnico Diario de la Secretaría de Salud Federal.Ya no se actualiza. -
Mapa interactivo del Sistema Nacional de Vigilancia Epidemiológica (SINAVE)Ya no se actualiza con casos confirmados, negativos o sospechosos (solo con casos activos).
Otras fuentes que no se incluyen aquí
- Serendipia - Periodismo de datos
- Blog de @mayrop
- Our World in Data
- Worldometers: reporta casos recuperados pero no menciona la fuente.
- Johns Hopkins University: para México reporta como fuente a Worldometers
- IIGEA: recopila información de las Secretarías Estatales de Salud.
- verificovid;
Otros repositorios con datos similares:
Un repositorio con datos para otros países de América Latina:
Un repositorio con datos del Reino Unido que nos ha servido de inspiración:
-
Población y número promedio de familia por estados, 2015: Inegi, Encuesta Intercensal 2015;
-
Polígonos de los estados del país en formato GEOJSON: Blocks
Para reproducir nuestro análisis puedes consultar nuestro código:
-
codigo: se encuentra un script de bash para bajar la base de datos (si está actualizada y corresponde al día anterior); un script de python para actualizar las series de tiempo y un segundo script de python para hacer un resumen en CSV de los casos diarios.
-
codigo/deprecated: los scripts que se utilizaban anteriormente para convertir los PDF a CSV (
julia scrap.jl Tabla.pdf [-o output.csv]
; Requerimientos:...
) o para descargar los datos en formato JSON del mapa de SINAVE (node download_sinave.js 2>/dev/null
; Requerimientos:npm install jsdom jquery
)
Para instalar Encoding::FixLatin hemos seguido los pasos en CPAN para instalar cpanm
(un instalador de módulos). Utilizamos el método de bootstrapping con local::lib
para instalar las librerías en el directorio ~/.perl
, lo cual requiere descargar localmente el módulo local::lib
, descomprimirlo, y haber hecho cd
a él. Una vez hecho esto, la instalación completa se hace con los siguientes pasos:
cpan App::cpanminus # instala cpanm
perl Makefile.PL --bootstrap=~/.perl
make test && make install # instala local::lib en ~/.perl
echo 'eval "$(perl -I$HOME/.perl/lib/perl5 -Mlocal::lib=$HOME/.perl)"' >> ~/.bashrc
# Arriba, se configura el el environment desde el directorio ~/.perl
# después de volver a leer .bashrc
cpanm Encoding::FixLatin
Si todo está configurado correctamente, el ejecutable fix_latin
debería de estar disponible en la terminal y se puede llamar desde un script de bash.
Paso opcional: también podemos instalar la librería compilada de C para que la conversión sea más rápida utilizando cpanm Encoding::FixLatin::XS
.
./download_datos_abiertos.sh
python process_datos_abiertos.py
python update_tests.py
python update_pyramids.py