Ayer escribí sobre la obtención de los datos del coronavirus con R y después me disponía a escribir sobre modelos de regresión no lineal, hacer una estimación del coronavirus en España… Pero estuve hablando con una amiga residente en Italia y allí el número de casos está dos semanas por delante de España; bueno, dos semanas exactamente no, 10 días:
library(lubridate)
library(ggplot2)
library(dplyr)
library(reshape2)
datos <- read.csv2("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv",
sep = ',')
fechas <- seq(as.Date("2020/01/22"), as.Date(today() - 1), "days")
fechas_chr <- substr(as.character.Date(fechas), 6, 10)
# Se asume que el csv tiene el formato adecuado para asignar estos nombres
# En este caso, simplificamos la lógica de nombres para el ejemplo
names(datos) <- c("Provincia", "Pais", "Latitud", "Longitud", fechas_chr)
esp_ita <- data.frame(fecha = fechas_chr)
esp_ita$Espania <- as.numeric(t(datos %>% filter(Pais == "Spain") %>% select(all_of(fechas_chr))))
esp_ita$Italia <- as.numeric(t(datos %>% filter(Pais == "Italy") %>% select(all_of(fechas_chr))))
p <- ggplot(esp_ita, aes(x = fecha)) +
geom_line(aes(y = Espania, group = 1, color = "España")) +
geom_line(aes(y = Italia, group = 1, color = "Italia")) +
scale_color_manual(values = c("España" = "red", "Italia" = "blue")) +
xlab("") + ylab("") +
theme(axis.text.x = element_text(angle = 90))
p

A la vista de las dos evoluciones, hace pensar que el número de casos en España siga la misma evolución que sigue en Italia; por eso, en este caso, en vez de manejar fechas vamos a manejar días de evolución y al dato de España vamos a quitarle 10 días:
Italia_df <- data.frame(Italia = as.numeric(t(datos %>% filter(Pais == "Italy") %>% select(all_of(fechas_chr)))))
Italia_df <- Italia_df %>% mutate(dia = row_number())
Espania_df <- data.frame(Espania = as.numeric(t(datos %>% filter(Pais == "Spain") %>% select(all_of(fechas_chr)))))
# Desplazamos 10 días
Espania_df <- Espania_df %>%
filter(row_number() >= 10) %>%
mutate(dia = row_number())
esp_ita_v2 <- Italia_df %>% left_join(Espania_df, by = "dia")
p2 <- ggplot(esp_ita_v2, aes(x = dia)) +
geom_line(aes(y = Espania, color = "España")) +
geom_line(aes(y = Italia, color = "Italia")) +
scale_color_manual(values = c("España" = "red", "Italia" = "blue")) +
xlab("Día de evolución") + ylab("Casos confirmados")
p2

Mi estimación para los próximos 10 días sobre la evolución del coronavirus en España está clara; ahora sólo queda que no salga el ejército a la calle como en Milán.