Análisis de COVID-19 en Argentina
Franco Manca — Augusto de Nevrezé
Introducción
Luego de un primer período con bajos contagios y poca propagación a lo largo de Argentina, desde hace dos meses el COVID-19 viene pegando fuerte en el país. El Ministerio de Salud dispone desde el 15 de Mayo de un dataset con cada caso registrado por localidad. Es una base de datos bastante amplia que hemos decidido analizar, considerando en esta primer aproximación algunos factores que nos parecieron interesantes, tales como:
- Contagios por rango etario
- Predicciones en base a estudios previos
- Diferencias entre datasets: Min de Salud vs. COVID Stats AR
- Mapa con densidad de muertes por departamento/comuna
Sin bien la pandemia es una temática bastante cubierta por los medios, el análisis de datos es infrecuente y poco detallado. Con este proyecto intentaremos responder a algunas inquietudes particulares, sin que las mismas sean extensivas a una mirada general de la pandemia. Consideramos oportuno responder a algunas preguntas que con suerte, nos pueden ayudar a comprender mejor el lugar en el que estamos parados, cuánto falta hasta que la situación se estabilice o si por el contrario ya lo hizo; como así también algunos aspectos interesantes sobre la carga de datos.
Esperamos con esto llevar tranquilidad e información de calidad a los ciudadanos y hacer foco en algunos problemas puntuales al sistema de salud. Para más información pueden encontrar los jupyter notebooks en el siguiente repositorio: https://github.com/augustodn/COVID-19_Ar
Contagios por rango etario
Limpieza de datos para análisis de contagiados
De los datos del Ministerio de Salud, tomamos la cantidad de contagiados por rango etario, con un análisis posterior tanto por edades como por sexo. Del dataset se desprenden los siguientes tipos de casos:
Vamos a trabajar con los casos confirmados. El dataset en bruto tiene 25 columnas de las cuales, las de nuestro interés son: sexo, edad, fecha de diagnóstico, si el paciente ha fallecido y la fecha de deceso.
Normalización
¿Por qué decidimos normalizar?
La población de Argentina que ocupa la franja de entre 20–40 años es mucho mayor que la de 60–80. Esto genera en los histogramas de contagios y muertes un sesgo, si no aplicamos la corrección por factor poblacional.
La población total de Argentina fué tomada del último censo oficial (2010), provisto por el INDEC. Los datos con los que se trabajaron contienen a la población dividida por sexos, en rangos quinquenales cada uno. Es importante mencionar que utilizar datos de población del 2010, puede introducir cierto error en las estimaciones. La población real puede ser sensiblemente mayor.
Los que haremos es dividir la población de contagiados (y fallecida) por la población total, por cada rango quinquenal. Nuestros datos quedarán entonces comprendidos en un rango de 0 a 1. Si a esto luego lo multiplicamos por 100 tendremos el porcentaje de contagiados y fallecidos, por rango etario.
# Contagiados
(df_poblacion_contagiados['total'] / df_poblacion['total']) * 100 # Fallecidos
(df_poblacion_fallecidos['total'] / df_poblacion['total']) * 100
Distribución de contagiados por rango etario
Expliquemos entonces el gráfico obtenido. En el eje x tenemos el rango de edades de la población de contagiados en categorías que van de 5 en 5. En el eje y tenemos al porcentaje de contagiados por rango etario, respecto a la población total de Argentina.
Podemos ver como el COVID-19 tiene un mayor impacto sobre los adultos mayores, en primer medida, esto se debe a que la población en esos rangos es mucho más baja. A su vez, los adultos mayores requieren de cuidados especiales y es probable que sean contagiados por el personal que los asiste, que corresponde a la población económicamente activa. Esta población que abarca los rangos etarios entre los 20 y los 65 años, presenta una gran cantidad de infecciones. Es notable por otro lado, que para los menores de 20 el índice de contagios sea significativamente bajo.
Si tomamos por ejemplo el rango de edades comprendido entre los 30 y 35 años, el porcentaje o la población contagiada total es del 2.67%. El quinquenio 30–35 de la población total tiene 3.098.713 personas, si a esto lo multiplicamos por 2.67% (0.0267) tendremos a la población contagiada de ese rango. Los datos de la población total de Argentina la podemos ver en la siguiente tabla.
Distribución de fallecidos por rango etario
En este histograma vemos que la población más afectada por el COVID-19 en Argentina, y en todo el mundo, corresponde a los adultos mayores a 60 años. Es para estos rangos etarios, donde se deben extremar las precauciones y maximizar los recursos. A su vez, podemos ver los porcentajes de fallecidos respecto a la población total de Argentina.
Utilizamos nuevamente el mismo procedimiento aplicado para los infectados, al momento de analizar este nuevo gráfico. Tomamos un rango de interés, obtenemos el porcentaje y lo multiplicamos por la población total de ese rango de la tabla de población total para obtener el número de fallecidos.
Impacto de fallecidos sobre contagiados
Ahora superpongamos la distribución de fallecidos sobre la de contagiados. Con esto veremos el impacto de los fallecidos que tiene el COVID-19 sobre la población infectada.
En este histograma podemos apreciar el impacto real que tiene el COVID-19 sobre la población. Expliquemos detalladamente qué significa cada elemento de nuestro gráfico. Las barras azules son los contagiados y las barras anaranjadas son los fallecidos. En el eje x tenemos el rango etario y en el eje y tenemos el porcentaje de contagiados y fallecidos respecto a la población total de Argentina.
La población más afectada por este virus como dijimos antes, es la adulta mayor a 60 años. Los grupos por encima de esta edad son los que corren y correrán mayor riesgo de sufrir complicaciones graves o morir por esta condición. Sin embargo, el grueso de la población económicamente activa no sufrirá complicaciones de ningún tipo. Caso cerrado.
Análisis por rango etario y sexo
A continuación, veamos ¿quiénes son más afectados por el COVID-19: los hombres o las mujeres?, ¿existe un género que soporte mejor el virus?. Es interesante observar qué parte de la población es más afectada por el mismo.
Podemos ver a simple vista en la curva de contagiados, que en general afecta más a la población masculina. En porcentaje tenemos que el 50.82% de la población afectada por el COVID-19 es masculina y el 49.18% es femenina. Veamos ahora la curva de fallecidos.
La curva de fallecidos por COVID-19 afecta más a la población masculina que a la femenina, como observábamos también en el histograma anterior. En porcentaje tenemos que el 56.96% de la población afectada por el COVID-19 es masculina y el 43.04% es femenina.
Comportamiento de fallecidos en el tiempo
Sobre el dataset del Ministerio de Salud, vamos a tomar algunos campos para analizar las tendencias sobre la curva de fallecidos diarios y acumulados. Sólo tomaremos como válidos los pacientes que hayan sido confirmados con el diagnóstico.
Luego de limpiar los datos, nos quedamos con una tabla que contiene únicamente el número de fallecidos y la fecha. Podemos hacer un primer análisis de la distribución de los decesos en función del tiempo y observar la tendencia.
Un estudio realizado por la Universidad de Kobe sobre distintas curvas de ajuste, encontró una en particular que tiene un buen desempeño para predecir el comportamiento del COVID-19. Con esta curva, los autores del estudio han podido predecir el pico de casos en distintos lugares del mundo. Como la metodología de evaluación de contagiados cambia a medida que avanza la epidemia, nos hemos centrado en el número de fallecidos. De esta manera podemos analizar las curvas bajo un mismo criterio, esperando tener mejores predicciones. Para más información sobre la curva de ajuste a utilizar, pueden visitar el paper correspondiente en: https://www.medrxiv.org/content/10.1101/2020.07.02.20144899v2
La curva de ajuste utilizada denominada log normal es la siguiente:
Definimos dentro de la función log normal 3 parámetros de ajuste: a, b y c. La particularidad de esta curva, tal como se puede observar en el gráfico inferior, es una pendiente de subida rápida y un descenso lento. Este comportamiento se ajusta considerablemente bien a las curvas de infección y decesos por COVID-19 y otras epidemias. Nuevamente, existe más información al respecto en el paper citado previamente.
Tal como se observa en la tabla a continuación y la figura del gráfico de dispersión superior, el número de fallecidos disminuye abruptamente para los últimos días. La demora en la carga de datos es un problema significativo. Las actualizaciones posteriores al 21 de Septiembre demuestran un volúmen de carga de datos viejos muy importante. Sin embargo este comportamiento en el dataset del Ministerio de Salud no es relativamente nuevo y puede encontrarse en fechas anteriores. El análisis de la demora se encuentra fuera del alcance de este informe. De todas maneras, en la siguiente página se puede encontrar información al respecto: https://covidstats.com.ar/reportediario.
No obstante, en un apartado posterior de este artículo se menciona una problemática que surgió al momento de escribir el informe y que está relacionada con los casos en la provincia de Buenos Aires. Este problema puede impactar significativamente sobre el análisis y las predicciones realizadas en el presente trabajo.
A modo de ejemplo, para el día de análisis de los datos, 25 de Septiembre, el número de fallecidos en función de la fecha de deceso es la siguiente:
Mas allá de este fenómeno de demora para la provincia de Buenos Aires, podemos observar que para el resto del país, la carga de datos suele reunir las incidencias de los últimos 5 días. Es por esto que vamos a quitar estos días para hacer el análisis correspondiente.
Predicción del comportamiento sobre el número de fallecidos
El resultado obtenido luego del ajuste a la curva log normal es el siguiente.
El pico obtenido ocurre el día del año 242 (29 de Agosto) con una cantidad máxima de casos diarios de 186. Sin embargo, los reportes diarios sobre cantidad de fallecidos suelen ser mucho mayores, estos corresponden al acumulado de casos reportados de días anteriores. Tal comportamiento es claro mirando el gráfico del reporte de fallecidos del 25 de Septiembre que fué presentado anteriormente.
COVID Stats Ar
A modo de referencia, es interesante analizar los resultados teniendo en cuenta los datos publicados en COVID Stats. Podemos exportar los datos a un csv accediendo directamente a https://covidstats.com.ar/exportar.
Luego de limpiar los datos y quedarnos sólo con los fallecidos diarios, podemos generar una tabla con el número de los mismos para los últimos días. Esta tabla es idéntica a la obtenida con el criterio de filtrado utilizado sobre el dataset del Ministerio de Salud.
Realizando el ajuste con la curva log normal, podemos observar la misma predicción y los mismos parámetros para cada uno de los coeficientes.
Evidentemente, los resultados son los mismos, esto es interesante ya que puede usarse el dataset de COVID Stats alternativamente para el modelaje de la curva. Esta base de datos es mucho más liviana, ya que la información es previamente procesada.
Predicciones con la función logística
Es común observar ajustes de infección y muertes realizados con la muy conocida función logística, ya que su comportamiento muestra un primer crecimiento muy lento, luego un comportamiento exponencial, continuando con un punto de inflexión donde la función cambia de velocidad y finalizando en un crecimiento muy lento. Es un modelo que deriva del comportamiento de crecimiento de población y fué desarrollado por Pierre François Verhulst en 1838 como una mejora al modelo propuesto por Malthus.
Zhou y Yan [18] utilizaron el modelo de Richards (un tipo de modelo logístico) para ajustar el número de casos acumulados de SARS reportados en Singapur, Hong Kong y Beijing. Las ideas para la implementación de un ajuste con el modelo de función logística han sido tomados del siguiente paper https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7328553/ y siguiendo la implementación del siguiente post https://towardsdatascience.com/modeling-logistic-growth-1367dc971de2.
Para utilizar esta curva es importante tener primero una columna de los casos acumulados o totales. La totalización de casos se efectúa con frecuencia diaria, ya que ésta es la periodicidad de los reportes del Ministerio de Salud.
El comportamiento de los casos acumulados ajusta bien con la curva, como puede observarse, la derivada de la función logística (gráfico a la derecha) muestra el comportamiento de los casos diarios. Como vemos también ajusta muy bien a las actualizaciones diarias del número de fallecidos. En este caso, la predicción del modelo muestra que el pico de fallecidos se obtuvo el día 238 (25 de Agosto) con 193 decesos.
Ambos modelos tienen predicciones similares, por un lado tenemos la función log normal que nos muestra un pico el día 29 de Agosto y por el otro con una función logística obtenemos la predicción del pico el día 25 de dicho mes. Como podrá notarse, el modelaje con la función log normal muestra un decaimiento más lento, algo que observamos en el comportamiento real de la epidemia en otros países del mundo.
El viernes 25 de septiembre, el gobierno bonaerense actualizó los decesos de la provincia de Buenos Aires, incrementándose en alrededor de 3.523. No es el único problema encontrado, tal como podemos observar, los reportes diarios suelen incluir retrasos -sobre todo para la provincia de Buenos Aires- de hasta un mes. Probablemente realicemos nuevos reportes para verificar que el comportamiento de nuestras estimaciones no tenga un impacto sustancial en las predicciones, esperando que la carga de datos comience a ser más dinámica.
Diferencia entre datasets: Ministerio de Salud vs. COVID Stats AR
En esta sección se hará una comparación de los datos del Ministerio de Salud de Argentina y los de COVID Stats AR.
El dataset del Ministerio de la Nación no se encuentra preprocesado. Son los datos en bruto y para trabajar con ellos hay que hacer transformación en el mismo. El dataset contiene 25 columnas y 1.841.199 entradas al 25/09, la cual cada una corresponde al paciente diagnosticado, tenga o no confirmación de COVID. El mismo pesa 351.2 MB, un dataset pesado.
Los datos obtenidos de COVID Stats Ar se encuentran trabajados. Toman los datos del Ministerio de Salud, los procesan y los transforman. Nos entregan los datos masticados y ordenados, directo para jugar con ellos y obtener visualizaciones. El dataset es mucho más liviano, 19.0 KB, mucho más cómodo de manipular. Tiene 9 columnas y 269 entradas que corresponden al día del año (DoY).
Cabe destacar rápidamente que el dataset obtenido de COVID Stats Ar en realidad es sólo uno de los tantos que se puede descargar, ya que se cuenta con filtros para obtener los datasets tratados.
Comparando datos
Para terminar con la comparación de los datos del Ministerio de Salud y COVID Stats AR analicemos los datos en cada dataset mes a mes.
Para empezar veamos cómo se encuentran distribuidos los datos de contagiados con un scatter plot.
Los datos en el scatter plot corresponden a la transformación hecha por nosotros con los datos en bruto del Ministerio de Salud. Superpongamos los datos de COVID Stats AR en un sólo gráfico.
Confirmados vs Confirmados FIS
En el siguiente gráfico scatter, podemos ver los datos ya procesados por COVID Stats comparados con los que procesamos del Min. de Salud. Podemos ver una distribución de contagiados en rojo y azul. La distribución de los datos en rojo corresponde a los casos por fecha de inicio de síntomas.
Confirmados vs Confirmados FA
En el siguiente scatter, tenemos la misma información proveniente del Ministerio en azul y los datos de COVID Stats AR en amarillo. La distribución de los datos en amarillo, corresponden a los casos por fecha de apertura. Es decir, la distribución de datos que corresponde al día en que se cargó en la base de datos.
Confirmados vs Confirmados FIS ajustada
Veamos ahora la distribución en verde y azul. La distribución de los datos en verde corresponde a los casos por fecha de inicio de síntomas ajustada y es similar a los casos fis. Sin embargo, aquellos casos sin fecha de inicio de síntomas se los ha completado con un criterio particular. COVID Stats ajustó esta información con la siguiente fórmula: FIS_ajustada = FA — 4. Este criterio tiene en cuenta que 4 días es el promedio entre la fecha de inicio de síntomas y la fecha de apertura del caso.
Mapa de Densidad de Fallecidos por Departamento
Analizaremos en este apartado la distribución geográfica de fallecidos. En particular estamos interesados en el comportamiento de la pandemia en zonas densamente pobladas, donde estimamos que puede existir una mayor velocidad de contagio. Utilizaremos el término comuna, departamento o localidad de manera indistinta, siendo ésta la menor unidad divisible en la información que provee el Ministerio de Salud.
La metodología utilizada consiste en graficar la cantidad de casos (fallecimientos) corrigiendo por población, de esta manera los datos representados en el mapa muestran la distribución por densidad de población. Gracias a esta corrección, los datos de cada departamento o localidad del país son comparables.
Lamentablemente no todos los casos tienen identificada la localidad o provincia de orígen de la persona fallecida por lo tanto, el criterio usado ha sido el siguiente: para personas sin datos sobre la provincia de orígen, se descartó el caso. Por otro lado, para los casos sin especificidad sobre el departamento, localidad o comuna de orígen, éstos se han distribuido de manera proporcional en los departamentos con casos de la provincia en cuestión. Si bien este criterio puede generar cierto sesgo, los datos son significativos como para descartarlos, sobre todo en CABA.
Comencemos mostrando una tabla con los departamentos con mayor cantidad de fallecidos por 10 mil habitantes. Los datos están ordenados por el campo deathRatio, es decir por la cantidad de fallecidos ajustada por población (cada 10 mil habitantes). Podemos observar que la comuna más castigada por la pandemia es la Comuna 07 de CABA con aproximadamente 18 fallecidos cada 10 mil habitantes.
Es interesante el caso de Conesa en Río Negro, una localidad con pocos habitantes, pero de alta incidencia, lo que la termina ubicando en la cima del ránking. Buscando entre las noticias, podemos encontrar que se han dispuesto medidas muy restrictivas en dicha localidad, tales como decretar un cordón sanitario. Esta localidad supo tener hasta 100 casos activos de COVID-19, un número muy alto, teniendo en cuenta su población. Los casos acumulados rondan los 300. Un caso similar se puede encontrar en Pellegrini, provincia de Buenos Aires.
A nivel nacional, no se observa una alta incidencia del virus, sino que se encuentra focalizado en ciertas regiones: GBA, Patagonia Norte, La Rioja y NOA (particularmente Salta y Jujuy).
En términos generales, la provincia de Buenos Aires no tiene una situación extremadamente grave, sino que los casos suelen concentrarse en los cordones que componen el área metropolitana de la ciudad de Buenos Aires.
Claramente el impacto es más significativo a medida que aumenta la densidad poblacional, fácilmente puede notarse cómo la zona sur de CABA representa uno de los puntos más calientes. Por otro lado departamentos como La Matanza, que tienen una gran cantidad de fallecidos no presentan una gran incidencia debido a la alta población total. Es por esto que es importante normalizar los datos por la cantidad de habitantes para poder realizar comparaciones. Sin embargo, este estado de situación puede cambiar con la actualización de fallecidos del gobierno bonaerense del día viernes 25 de Septiembre.
Los barrios porteños de Flores, Parque Chacabuco, Parque Patricios, Barracas, Nueva Pompeya y La Boca muestran una alta incidencia de muertes, es probablemente la zona más afectada por el virus. Sería interesante analizar si esta alta incidencia está correlacionada con otras variables tales como las condiciones habitacionales, de salubridad y de ingresos, entre otras.
A continuación podemos ver la situación en la zona de Salta y Jujuy donde el virus también ha tenido un impacto significativo. En particular los departamentos más afectados son Ledesma, Orán y El Carmen. En Ledesma concretamente, hay fuertes denuncias por las condiciones de salubridad en los lugares de trabajo. Además, sería interesante analizar la infraestructura del sistema de salud en estas regiones.
Como podemos observar, el virus impacta de diversas maneras, no está directamente relacionado con la densidad poblacional. En algunas localidades del interior del país con poblaciones relativamente pequeñas de 100 mil habitantes o menos, la letalidad es alta. En otras regiones importantes mucho más densamente pobladas como las zonas metropolitanas de Rosario, Córdoba o Mendoza no presentan una letalidad tan importante como el gran Buenos Aires. Los motivos de la alta letalidad en estas regiones está fuera del alcance de este artículo.
Conclusión
Tal como hemos visto, los patrones de contagio indican que las personas económicamente activas son las que más se contagian. A su vez, es curioso cómo los menores de 20 años prácticamente no demuestran positividad ante el virus. Por último, los contagios en los ancianos es muy alto.
Es claro a través de los gráficos que hemos presentado, que la letalidad es proporcional con la edad, creciendo de manera exponencial con esta última. Por lo tanto, el riesgo sube más que proporcionalmente a medida que aumenta la edad.
Los modelos desarrollados en este artículo indicarían que el pico de la pandemia ya lo hemos visto. Sin embargo, la demora en la carga de datos y las recientes correcciones sobre el diagnóstico de fallecimiento, podría correrlo. Es necesario continuar analizando los datos para verificar que el pico se haya establecido a finales de Agosto o por el contrario se corra hacia Septiembre.
La información provista por COVID Stats AR puede ser intercambiada por la del Ministerio de Salud sin problemas. Claramente, COVID Stats AR usa la misma fuente, sin embargo el criterio, tales como algunos usados en este informe pueden alterar los conteos finales.
La distribución de fallecidos por el momento se encuentra focos puntuales. Tal como hemos analizado, no depende únicamente de la densidad poblacional. Se observa una alta letalidad en localidades pequeñas como Ledesma, Orán, Pellegrini o Conesa.