Previsión casos Covid-19 España | Regresión Logística en Python

Escrito por Javier Millán & Mario Trapiello Mendoza — Abril 2, 2020

Estamos sufriendo una pandemia de covid-19 que está sacudiendo los cimientos de la sociedad occidental y, en concreto, está poniendo en jaque a España, que ya ha superado en número de casos confirmados a China, origen del foco.

En este post vamos a estimar, mediante Python y el uso de la función logística, el pico de infectados para las comunidades autónomas más afectadas por la pandemia, así como una fecha estimada de llegada a este pico.

Descripción de los datos

Para poder llevar a cabo este análisis, se ha contado con la información facilitada por el Ministerio de Sanidad del Gobierno de España, que nos aporta una serie temporal del número de infectados, hospitalizados, ingresados en UCI y fallecidos por covid-19 desglosándose por Comunidad Autónoma. Dicha información está disponible actualizada diariamente en este enlace:

https://covid19.isciii.es/resources/serie_historica_acumulados.csv

Cargamos estos datos en Python y ya estamos listos para empezar a trabajar.

Si mostramos los últimos 5 registros del DataFrame, podemos hacernos una idea de cómo es la estructura del mismo.

Los datos se encuentran serializados y detallados a nivel de comunidad autónoma, y podemos generar un plot que nos permita ver por día la evolución del número de casos infectados según la región.

Fig. 1. Número de casos confirmados de covid-19 por Comunidad Autónoma, a lo largo del tiempo.

Desarrollo del estudio

La gráfica anterior, si bien muestra toda la información disponible relativa al número de casos confirmados, no es muy útil para el análisis, así que de cara a este estudio hemos optado por utilizar solamente las 5 comunidades con mayor número de infectados.

Además, para facilitar el análisis que se plantea, transformamos los datos disponibles de la siguiente manera.

Ahora ya podemos ver que las comunidades autónomas más afectas son Madrid, Cataluña, Castilla-La Mancha, Castilla y León, y País Vasco, en ese orden.

Fig. 2. Número de casos confirmados de covid-19 para las 5 regiones más afectadas, a lo largo del tiempo.

Una vez contamos con los datos adecuados, tenemos que realizar la predicción del número de casos máximo para cada región. En una situación normal, esto sería un típico problema de regresión para resolver mediante machine learning o deep learning. No obstante, debido a la escasez de muestras disponibles, apenas un mes de información, hemos considerado que era mejor buscar otras alternativas.

Observando las gráficas del número de casos y su evolución a lo largo del tiempo, claramente vemos que el avance es inicialmente exponencial, con unas tasas de crecimiento elevadas, sobretodo en las comunidades más afectadas, como Madrid o Cataluña. También sabemos que este avance exponencial tiene que llegar, por lógica, a una saturación, ya que el número de habitantes no es infinito. Además, las medidas tomadas por el Gobierno central, como la paralización de la economía y el confinamiento, junto con las excelentes labores de nuestro personal sanitario, tienen que llevar irremediablemente a una estabilización, frenándose la famosa curva y llegando por tanto a un régimen permanente.

Este comportamiento que debe de seguir la curva de contagios coincide con el comportamiento de una función muy utilizada en el mundo de la inteligencia artificial, como es la función logística.

Así que hemos optado por utilizar la función curve_fit de la librería scipy aplicada junto con la función logística para hallar la curva que más se parece a cada comunidad autónoma y por tanto poder estimar los contagios finales.

Primero, nos cercioramos de que el modelo ha podido ajustarse correctamente a los datos, y para ello imprimimos los resultados para Madrid.

Fig. 3. Comparación del modelo logístico vs los datos reales, para la Comunidad de Madrid.

En la gráfica, ahora representando la evolución de los casos desde el primer día que se detectan contagiados vemos que el modelo generado se ajusta bastante bien a la realidad.

A continuación, se añade una tabla que contabiliza el MSE entre los datos reales y sus respectivos modelos, para cada comunidad autónoma.

Tabla 1 . MSE entre los datos reales y sus modelos logísticos equivalentes.

Una vez hemos comprobado visualmente que la curva se adapta a los datos, podemos mostrarla para las 5 comunidades autónomas, para así sacar conclusiones sobre el pico de infectados y fecha pico estimada.

Fig. 4. Representación de los modelos logísticos para las 5 Comunidades Autónomas más afectadas, tomando como origen el primer día en el que se detectaron contagios para cada una.

Esta gráfica nos permite analizar visualmente el régimen permanente y el número de días desde el primer contagio para cada comunidad. No obstante lo ideal es poder poner datos concretos para cada caso, por lo que como último paso, hemos calculado el número máximo de infectados por comunidad autónoma, como el 99% del valor de régimen permanente.

Tabla 2 . Número máximo de casos confirmados por Comunidad Autónoma.

Si hacemos lo mismo, pero para las fechas, ya tenemos toda la información que nos habíamos propuesto abarcar con este análisis.

Tabla 3 . Fecha pico de casos confirmados por Comunidad Autónoma.

Conclusiones

Podemos decir que los datos estimados son coherentes con lo que está sucediendo a día de hoy en relación al virus en España puesto que Madrid está siendo la más perjudicada y en base a nuestros cálculos sería la que mayor número de infectados va a tener y la que más tiempo va a tardar en alcanzar el pico pero aunque esto sea una estimación y en ningún caso se ha de tomar al pie de la letra, el pico se alcanzaría en menos de un mes, ¡No queda nada! ¡Ánimo a todos!

¡Te animamos a que desarrolles el modelo para tu CCAA si no está entre estas 5!

--

--

Mario Trapiello Mendoza
Covid-19 | Inteligencia Artificial, Machine Learning, Python y esas cosas

Data Solutions Architect @ JAKALA IBERIA. Ingeniero de Telecomunicaciones por la Universidad Carlos III de Madrid.