knitr::opts_chunk$set( collapse = TRUE, comment = "#>", echo=FALSE, warning=FALSE, message=FALSE, fig.height=8, fig.width=10 )
library(covid19br) library(tidyverse) library(covid19br) library(geobr) library(cowplot) library(knitr) library(DT) library(plotly) # Data for comparisons: used_date <- max(covid_br$date) n_sus <- covid_br %>% filter(date == used_date) %>% pull(suspected_cases) n_des <- covid_br %>% filter(date == used_date) %>% pull(not_confirmed_cases) n_total <- covid_br %>% filter(date == used_date) %>% pull(confirmed_cases) n_death <- covid_br %>% filter(date == used_date) %>% pull(deaths) # raw data tab_stat <- covid_states %>% filter(date == used_date) %>% dplyr::select(Estado = state, "Casos suspeitos" = suspected_cases, "Casos confirmados" = confirmed_cases, "Casos descartados" = not_confirmed_cases) %>% arrange(Estado) %>% as.data.frame()
# Function to generate predictions from (log(2) regression models) #' @export predic_covid <- function(model, date_interval){ future <- data.frame( date = date_interval, by = 1) pred <-exp(predict(model, newdata = future, interval = "confidence")) future <- cbind(future, pred) return(future) } # Function to generate predicted vs observed trends in covid #' @export plot_future <- function(obs, pred, pred_lab = "Previsto", obs_lab = "Observado", ylab = "Casos confirmados covid-19", xlab = "Data", title = "covid-19 | Brazil", subtitle = "Corona virus spreads exponentially", caption = "Data source: Minstério da Saúde | Predicted on 2020-03-15") { gpred <- ggplot(pred, aes(y = fit, x = date)) + geom_ribbon(data = pred, aes(ymax = upr, ymin = lwr, x = date), fill = "gray", alpha = .5) + geom_line(data = pred, aes(y = fit, color = pred_lab), lty = "dashed") + geom_line(data = obs, aes(y = confirmed_cases, x = date, color = obs_lab)) + geom_point(data = obs, aes(y = confirmed_cases, x = date, color = obs_lab)) + scale_color_manual(values = c(2,1), name = "") + scale_x_date(date_breaks = "7 days", date_labels = "%d %b") + theme_cowplot(font_size = 20) + labs(y = ylab, x = xlab, title = title, subtitle = subtitle, caption = caption) + theme( plot.title = element_text(size = 22), plot.subtitle = element_text(size = 18), plot.caption = element_text(size = 12, hjust = 1)) return(gpred) }
NOTAS:
As análises abaixo representam apenas o número de casos confirmados pelo Ministério da Saúde, portanto, não se pode concluir uma relação direta destes números com o número real de pessoas infectadas por covid-19.
Os resultados apresentados abaixo foram atualizados na data:r used_date
r n_sus
r n_total
r n_des
r n_death
library(covid19br) # calculate doubling time: mod10 <- lm(log10(confirmed_cases + 1) ~ date, covid_br) modlog <- lm(log(confirmed_cases + 1) ~ date, covid_br) dtime <- log(2)/modlog$coef[2] # time to double dtime10 <- 1/mod10$coef[2] # time to x 10 # Predictions (next 10 days) mod15 <- lm(log(confirmed_cases + 1) ~ date, covid_br %>% filter(date < "2020-03-16")) future <- predic_covid(mod15, date_interval = seq(as.Date("2020-03-10"), as.Date("2020-03-26"), 1)) gpred <- plot_future(obs = covid_br, pred = future, title = "covid-19 | Brasil", subtitle = "Corona se espalha exponencialmente", caption = "Data source: Minstério da Saúde | Predicted on 2020-03-16") + scale_y_continuous(limits = c(0, 7000), breaks = seq(0, 7000, 1000), labels = c(0, paste(seq(1,7,1), "mil"))) gpred
future %>% mutate(fit = round(fit, 0), lwr = round(lwr, 0), upr = round(upr, 0)) %>% select(Data = date, Esperado = fit, Mínimo = lwr, "Máximo" = upr) %>% datatable(rownames = FALSE, options = list(pageLength = 30))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.