# knitr::spin("acumula22_hist.R", knit = FALSE) # Crea .Rmd
# knitr::purl("acumula22_hist.Rmd", documentation = 2) # Crea .R spin
# PENDIENTE:
# Generar un fichero de cambios:
# Bucle last:2 / Empezar solo con last
# AƱadir ficheros 2:(last - 1) a files[last] y calcular diferencia/error y lag/horizonte
# AnĆ”lisis descriptivo: dispersiĆ³n/boxplot error|lag
library(dplyr, warn.conflicts = FALSE)
library(tidyr)
files <- dir(pattern = paste0('^acumula22_\\d{2}_\\d{2}_\\d{2}\\.RData'))
# Los nombres de los archivos contienen las fechas de reporte (datos del dĆa anterior)
fechas.txt <- substr(files, 11, 18)
fechas <- as.Date(fechas.txt, format = "%y_%m_%d")
last <- length(files)
semanas <- 6
fechas.semanas <- fechas[last] - 7*(semanas:1) - 1
fecha.ini <- fechas.semanas[1]
colors <- gray((last - seq_along(files))/last)
# Cargar datos
datos <- lapply(files, function(f) {
load(f)
return(acumula22)
})
names(datos) <- fechas
# Obtener niveles
load("../ccaas.RData")
iso <- names(datos[[1]]) # names(ccaas)
respuestas <- c("confirmados", "hospitalizados", "uci", "fallecidos") # names(datos[[1]][[1]])
En la web https://covid19.citic.udc.es/ se pueden consultar grĆ”ficos dinĆ”micos seleccionando Cambios en los valores reportados:2021 en la pestaƱa PredicciĆ³n cooperativa: InformaciĆ³n.
A continuaciĆ³n se muestra un grĆ”fico, para cada combinaciĆ³n de CCAA y variable, con toda la serie hasta 2022-01-11 y otro de las Ćŗltimas 6 semanas (desde 2021-11-30).
El color de las lĆneas se corresponde con la fecha en la que se reportaron los datos (se muestra tambiĆ©n el dĆa del mes en el segundo grĆ”fico).
xlim2 <- c(fecha.ini, max(fechas) + 1)
plot(NULL ,xaxt='n', yaxt='n', bty='n', ylab='', xlab='', xlim=0:1, ylim=0:1)
legend("top", rev(substr(names(datos),3, 10)), lty = 1, lwd = 5, col = rev(colors), ncol = 8)
for (ca in iso) { # ca <- "ES"
cat("\n\n# ", ccaas[ca], "\n\n")
for (r in respuestas) { # r <- "confirmados"
cat("\n\n## ", r, "\n\n")
ymax <- max(sapply(datos, function(d) max(d[[ca]][[r]]$observado)))
old.par <- par(mfrow = c(1, 2))
plot(observado ~ fecha, data = datos[[last]][[ca]][[r]],
type = "l", main = paste(ccaas[ca], r), xlab = "Fecha", ylab = r,
col = colors[last], ylim = c(0, ymax))
lapply(1:(last-1), function(i)
lines(observado ~ fecha, data = datos[[i]][[ca]][[r]],
col = colors[i]))
# legend("topleft", rev(names(datos)), lty = 1, col = rev(colors))
d <- filter(datos[[last]][[ca]][[r]], fecha > fecha.ini - 1)
ymin <- min(d$observado) * 0.95
plot(observado ~ fecha, data = d,
type = "l", main = paste(ccaas[ca], r), xlab = "Fecha", ylab = r,
lwd = 2, col = colors[last],
xlim = xlim2, ylim = c(ymin, ymax))
abline(v = fechas.semanas, lty = 3, col = "lightgray")
lapply(1:(last-1), function(i)
lines(observado ~ fecha, data = datos[[i]][[ca]][[r]],
col = colors[i], subset = fecha > fecha.ini - 1))
# legend("topleft", rev(names(datos)), lty = 1, col = rev(colors))
lapply(1:last, function(i) {
d <- datos[[i]][[ca]][[r]]
text(d[nrow(d), c("fecha", "observado")],
labels = format(fechas[i], "%d"), pos = 4)
})
par(old.par)
} # for (r in respuestas)
} # for (ca in iso)