Seguramente, en los próximos dÃas, habrá un evento del que quieras participar. Ya sea con muchas o pocas personas, siempre habrá un riesgo de contagio de COVID-19. De forma general, cuando los casos van en aumento es mala señal y deberÃas minimizar tu exposición.
A continuación se presenta un sencillo modelo predictivo de la tendencia de casos dÃarios de COVID-19 en El Salvador. Por favor, tome en cuenta que esta predicción asume que los casos nuevos por dÃa pueden ser modelados como una serÃe de tiempo. Siempre siga todas las medidas de bioseguridad y los lineamientos del ministerio de salud.
Los datos utilizados en este análisis han sido obtenidos de la página de la organización mundial de la salud. Puede accederlos haciendo clic en este vÃnculo: https://covid19.who.int/info
Los datos de WHO se presentan en panel de datos para todos los paÃses miembros, es decir, observaciones de todos los paÃses en el tiempo. El primer paso consiste en filtrar los datos para tener un subgrupo con únicamente las observaciones de El Salvador. A continuación se prosenta el código de importación, filtrado y un gráfico interactivo de la evolución de los casos diarios.
covid.data <- fread("https://covid19.who.int/WHO-COVID-19-global-data.csv")
covid.esa.nr <- covid.data %>%
filter(Country == "El Salvador")
plot_ly(data = covid.esa.nr, x = ~Date_reported, y = ~New_cases) %>%
add_lines()
El objetivo es estimar un modelo sencillo, asà que se estimará y evaluará un modelo autoregresivo y un modelo de media móvil. Debido a que en los dÃas que El Salvador no reporta datos estos se expresan como ceros en la base de datos, se hizo un filtrado adicional para incluir únicamente dÃas con valores mayores a cero. Adicionalmente, únicamente se contamplan datos del mes en curso y el anterior.
Al utilizar los criterios AIC y BIC, se puede observar que ambos modelos son muy similares, asà que se decide por el modelo auto-regresivo para darle un poco más de tendencia a la predicción.
datos <- covid.esa.nr %>%
filter(Date_reported > "2021-11-30") %>%
filter(New_cases > 0)
modelo.ar <- arima(datos$New_cases, order = c(1,0,0))
modelo.ma <- arima(datos$New_cases, order = c(0,0,1))
AIC(modelo.ar)
## [1] 350.1033
AIC(modelo.ma)
## [1] 349.1393
BIC(modelo.ar)
## [1] 353.0905
BIC(modelo.ma)
## [1] 352.1265
modelo.ar
##
## Call:
## arima(x = datos$New_cases, order = c(1, 0, 0))
##
## Coefficients:
## ar1 intercept
## 0.4392 795.1043
## s.e. 0.1929 503.7677
##
## sigma^2 estimated as 1717824: log likelihood = -172.05, aic = 350.1
El modelo que se usa en la predicción es auto-regrivo con un horizonte de 10 dÃas.
prediccion <- predict(modelo.ar, n.ahead = 10)
prediccion$pred
## Time Series:
## Start = 21
## End = 30
## Frequency = 1
## [1] 864.8991 825.7616 808.5705 801.0193 797.7025 796.2456 795.6056 795.3245
## [9] 795.2010 795.1468
ar.pred <- prediccion$pred
ar.pred.se <- prediccion$se
ts.plot(datos$New_cases, xlim = c(1,30))
points(ar.pred, type = "l", col = 2)
points(ar.pred - 2*ar.pred.se, type = "l", col = 2, lty = 2)
points(ar.pred + 2*ar.pred.se, type = "l", col = 2, lty = 2)