Introducción

Las correlaciones cruzadas entre diferentes variables nos indican cómo influyen una en la otra, y si una precede o va detrás de la otra. Aunque correlación nunca indica causalidad, al menos sí puede dar, en general, una cierta idea de qué va a suceder en el futuro: una correlación cruzada fuerte entre dos variables a uno, dos o tres días vista permite averiguar qué es lo que puede suceder, y con hipótesis adicionales se puede establecer relación causa-efecto.

Utilizaremos autocorrelaciones y correlaciones cruzadas en R, usando las funciones acf y ccf. En estos gráficos se indican con barras de diferente longitud la correlación; líneas punteadas indican la zona a partir de la cual la correlación es significativa. A la izquierda del cero, la variable X antecede o predice la y, a la derecha es justo al contrario; por encima de la barra serían correlaciones positivas y por debajo negativas, es decir que cuando crece una variable, la otra disminuye.

Autocorrelación de casos

Esta es la autocorrelación de casos, es decir, la relación que hay entre los casos un día y el siguiente:

acf(data$casos,lag.max = 28)

Pero también puede ser interesante ver cuál es la autocorrelación de esta serie temporal, como influyen los casos de los que se informa cada día en los siguientes.

acf(data$Casos.nuevos,na.action = na.pass, lag=28)

Realmente este dato es poco fiable, porque no se sabe cuantas altas hay ni cuantos tests se están haciendo. El dato más fiable es el número de personas hospitalizadas y su cambio cada día. Veamos su autocorrelación.

acf(data$Hospitalizaciones.nuevas,na.action = na.pass, lag=28)

Correlaciones de nuevos casos reportados.

¿Cuanto se tarda en llegar a una salida de la situación? Trazaremos los casos frente al las altas y fallecimientos.

Cabe notar que las primeras salidas no se dieron hasta pasar más de dos semanas desde los primeros casos, lo que posiblemente quiere decir que hay muchas altas que no se están teniendo en cuenta (o fallecimientos).

ccf(data$casos,data$salidas,na.action = na.pass, lag.max = 28)

Este diagrama de correlación indica que es positiva entre casos en lags de -5 a 0, es decir, nuevos casos se convierten en salidas (fallecimientos o altas) hasta 5 días más tarde; los casos preceden a las salidas hasta por 5 días, y luego una negativa entre salidas y casos que era inicialmente entre 4 y 8 días, y ahora es entre 7 y 12 dias. Ni el desplazamiento ni la correlación negativa es fácil de interpretar; a más salidas, menos casos aproximadamente 8 días más tarde. Es posible que, al ser o altas o muertes, cuantas más personas haya en esa situación menos infecciones se van a producir una semana más tarde.

Por otro lado, observando la gráfica de altas en (Merelo 2020) se observa cierta periodicidad, al menos inicialmente

acf(data$Altas.nuevas,na.action = na.pass,lag.max = 28)

Mientras que hasta el día 20 aparecía una cierta periodicidad de unos dos días, a partir del día 21 prácticamente ha desaparecido y sólo hay periodicidad de un sólo día. Esta periodicidad también aparece en los fallecimientos, como se puede ver en el siguiente gráfico de correlación

acf(data$Fallecimientos.nuevos,na.action = na.pass,lag.max = 28)

Esta es de uno y hasta 3 días, pero la situación puede cambiar en el futuro, aunque en los últimos días es bastante estable.

Esta es la correlación entre casos y fallecimientos

ccf(data$casos,data$fallecimientos,na.action = na.pass,lag.max = 28)

Parece que el el lag, que era inicalmente entre uno y dos días, se ha ampliado ahora hasta los 4 días. El hecho de que los fallecimientos predigan los casos futuros parece indicar que unas infecciones causan otras, o que las personas empiezan a testearse cuando sienten un fallecimiento cerca.

Y entre casos y altas hospitalarias

ccf(data$casos,data$altas,na.action = na.pass,lag.max = 28)

En este caso hay también un lag de un día; los casos de cada día están correlacionados con las altas del siguiente.

Una veremos como se correlaciona los datos de ingresos en la UCI

ccf(data$casos,data$ingresos_uci,na.action = na.pass,lag.max = 28)

Y entre ingresos en la UCI y fallecimientos

ccf(data$ingresos_uci,data$fallecimientos,na.action = na.pass,lag.max = 28)

Correlación entre diferencias

Quizás sea más interesante establecer correlaciones entre diferencias, porque los datos acumulados tienen más información.

ccf(data$Casos.nuevos,data$Fallecimientos.nuevos,na.action = na.pass,lag.max = 28)

ccf(data$Casos.nuevos,data$Hospitalizaciones.nuevas,na.action = na.pass,lag.max = 28)

ccf(data$Casos.nuevos,data$Uci.nuevos,na.action = na.pass,lag.max = 28)

ccf(data$Casos.nuevos,data$Altas.nuevas,na.action = na.pass,lag.max = 28)

Las hospitalizaciones nuevas y su correlación con otras deltas

ccf(data$Hospitalizaciones.nuevas,data$Uci.nuevos,na.action = na.pass,lag.max = 28)

ccf(data$Hospitalizaciones.nuevas,data$Fallecimientos.nuevos,na.action = na.pass,lag.max = 28)

ccf(data$Hospitalizaciones.nuevas,data$Altas.nuevas,na.action = na.pass,lag.max = 28)

Las hospitalizaciones parecen ir en sentido contrario que las altas entre 6 y 7 días antes, pero en el mismo sentido dos o tres días antes. Quizás viene a decir que las personas a las que les dan el alta pasan esos días en el hospital, si no van a resultar en altas pasan más días, o simplemente que si hay muchas hospitalizaciones en una fecha, habrá menos altas una semana más tarde.

Quizás el dato más revelador:

ccf(data$Uci.nuevos,data$Fallecimientos.nuevos,na.action = na.pass,lag.max = 28)

Los fallecimientos predicen ingresos en la UCI durante los días siguientes, hasta 6 días, y al revés. Aparentemente, esa es la duración de tiempo en la UCI.

Reconocimientos

Este fichero está generado a partir de los datos elaborados por Datadista y tiene una licencia libre. Se puede generar con nuevos datos usando el script en este repositorio.

Merelo, JJ. 2020. “Evolución Casos Covid19 En España.” LibreLabGRX. https://rpubs.com/jjmerelo/covid-19-es-evolucion.