Coronavirus: cómo hacer tus propios análisis

19/03/2020 – by Pedro Mas

COVID-19: el virus que ninguno nos quitamos de la cabeza desde hace semanas. Vamos a aprovechar la avalancha de datos generada a raíz de la pandemia para proponeros un par de ejemplos prácticos de iniciación al uso de Python y Qlik Sense, utilizando datos reales que lo harán mucho más interesante. ¡Vamos a sacarle partido a este tiempo en casa!

Fuentes de datos

Lo primero que necesitas es encontrar una fuente de datos fiable, así que vamos a ver dos de ellas que nos van a permitir hacer un buen análisis del Coronavirus a nivel mundial y local:

  • EpData: es una plataforma creada por Europa Press con el objetivo de facilitar el uso de datos públicos por parte de los periodistas. Aquí podrás encontrar multitud de gráficos sobre la evolución del Coronavirus en España y a nivel mundial, y descargarte los datos en formato JSON y csv.
  • Github: por supuesto, Github no podía fallar y nos ofrece este enlace con todos los datos del Coronavirus a nivel mundial y actualizados diariamente, en formato csv. En función del tipo de análisis que quieras llevar a cabo, aquí podrás a acceder a los datos a través de informes diarios (con el número de muertes, recuperaciones y casos confirmados para cada país) o a través de series temporales que muestran la evolución de las muertes, recuperaciones o casos confirmados para cada país a lo largo de los días.
  • A continuación vamos a ver un ejemplo para cada una de ellas.

    Análisis predictivo con Python del número de casos registrados por Coronavirus en España

    Para este análisis, lo primero que haremos es entrar en la plataforma EpData y descargarnos en formato csv los datos correspondientes a la evolución temporal (a nivel diario) de los casos registrados por Coronavirus en España. Una vez tengamos el archivo cargado en Python, va a ser necesario un rápido proceso de limpieza y formateo de los datos.


    python
    Limpieza y formateo de los datos procedentes de EpData

    Nuestro objetivo en este estudio va a ser utilizar los datos de los primeros días de la epidemia para tratar de predecir el número de casos que se registrarán en los días siguientes, y posteriormente comparar esta predicción con los datos reales que vayan saliendo cada día.

    En este tipo de eventos, el número de casos registrados evoluciona siguiendo una tendencia exponencial, por lo que para realizar nuestra predicción vamos a seleccionar los días comprendidos entre el 22 de febrero (días antes de que comience el crecimiento exponencial) y el 12 de marzo y vamos a tratar de ajustar los datos correspondientes a este periodo a una función exponencial de la forma N = N0eλt, donde t es el tiempo en días, N0 es el número inicial de casos y lambda es la variable de ajuste:


    python
    Ajuste exponencial a los datos descritos

    Una vez hecho esto, vamos a realizar una predicción del número de casos que se registrarán en la semana siguiente (verde), si la epidemia continua con esta tendencia, y vamos a comparar estos valores con los datos reales que vayan saliendo cada día (azul):


    python
    Comparación entre los datos predichos por el modelo y los datos reales

    A primera vista, parece que el número de casos registrados ha abandonado la evolución exponencial para tomar una tendencia más lineal. Sin embargo, esta disminución en el porcentaje de incremento de casos diarios se debe seguramente a que el número de casos registrados es significativamente menor que el número de casos reales, ya que no se le están realizando las pruebas a todos los pacientes que muestran síntomas, por lo que no todos los casos reales de Coronavirus están siendo diagnosticados como tal.

    Un indicador mucho más fiable del estado de la epidemia a nivel local será la evolución del número de muertes, ya que en este caso el número registrado es mucho más próximo al número real. Iremos a por ello en otro artículo.

    Análisis descriptivo con Qlik Sense de los datos del Coronavirus a nivel mundial

    Ahora, vamos a utilizar Qlik Sense, para realizar un análisis descriptivo del Coronavirus a nivel mundial. Para ello, vamos a conectarnos directamente a las url en las que Github proporciona los datos correspondientes a la evolución temporal de los casos, muertes y recuperaciones para cada país. Este tipo de conexión es muy sencilla con Qlik Sense, simplemente en “Create new connection” seleccionamos “Web file” e incluimos la url deseada.

    Una vez nos hemos traído los datos, tenemos que realizar el formateo necesario para el tipo de estudio que queramos realizar. En nuestro caso, necesitamos almacenar la cabecera de las columnas (días) en el campo de atributo (fecha) y los datos de columna (valor correspondiente a cada día) en el campo de datos. Repetiremos este proceso para casos registrados, muertes y recuperaciones e iremos concatenando los datos en una tabla maestra, introduciendo Flags para distinguir entre las tres opciones.


    qlik sense
    Formateo de los datos para los casos registrados

    qlik sense
    Tabla maestra del modelo de datos final

    Una vez cargados los datos, ya podemos sumergirnos en ellos y visualizar cualquier tipo de análisis que se nos venga a la mente. Por ejemplo, podemos estudiar la situación actual para los 10 países con más casos registrados (excluyendo a China):


    qlik sense
    Ratios de recuperación y muerte para los 10 países con más casos registrados (excluyendo a China), así como la evolución temporal de estos casos.

    Así, vemos por ejemplo el elevado ratio de muerte en Italia y cómo el número de casos registrados sigue aumentando sin freno en este país, o el éxito que ha tenido Corea del Sur a la hora de contener el número de casos registrados.

    Y ahora, ¡a practicar!

    Por supuesto, el objetivo de estos análisis no es sustituir ni complementar de ningún modo a las informaciones oficiales, sino familiarizarnos con el uso de herramientas del mundo de análisis de datos, utilizando como hilo conductor un caso real del máximo interés.

    ¡Esperamos que te haya resultado útil!