## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----------------------------------------------------------------------------- library(dplyr) library(ViroReportR) library(ggplot2) library(purrr) library(tidyr) ## ----------------------------------------------------------------------------- data <- simulate_data(days=365, #days spanning simulation peaks = c("flu_a"=90,"rsv"=110,"sars_cov2"=160), #peak day for each disease amplitudes=c("flu_a"=50,"rsv"=40,"sars_cov2"=20), #amplitude of peak for each disease scales = c("flu_a"=-0.004,"rsv"=-0.005,"sars_cov2"=-0.001), # spread of peak for each disease time_offset = 0, #number of days to offset start of simulation noise_sd = 5, #noise term start_date = "2024-01-07" #starting day (Sunday) ) ## ----------------------------------------------------------------------------- data$date <- lubridate::ymd(data$date) vri_data <- data %>% pivot_longer(cols = -date, # all columns except 'date' names_to = "disease_type", values_to = "confirm") # <-- need ot be called confirm # VRI data set-up vri_name_list <- vri_data %>% dplyr::group_by(disease_type) %>% dplyr::group_keys() %>% dplyr::pull() vri_data_list <- vri_data %>% dplyr::group_by(disease_type) %>% dplyr::group_map(~.x) names(vri_data_list) <- vri_name_list ## ----------------------------------------------------------------------------- #parameters set-up start_date <- min(vri_data$date) + 13 forecast_horizon <- 7 smooth <- FALSE validate_window_size <- 7 forecasts_results <- tibble( vri_data_list, forecasts = map2( vri_data_list, vri_name_list, ~ generate_forecast( data = .x, smooth_data = smooth, type = .y, n_days = forecast_horizon, start_date = start_date ) ) ) names(forecasts_results$forecasts) <- vri_name_list names(forecasts_results$vri_data_list) <- vri_name_list ## ----validation-plots, echo=FALSE, results='asis'----------------------------- validation_results <- tibble( vri_data_list, validation = map2( vri_data_list, vri_name_list, ~ generate_validation( data = .x, type = .y, n_days = forecast_horizon, start_date = min(.x$date, na.rm = T), validate_window_size = validate_window_size, window_size = 7, smooth_data = smooth, smoothing_cutoff = 10 ) ) ) names(validation_results$validation) <- vri_name_list names(validation_results$vri_data_list) <- vri_name_list for (vri in vri_name_list) { cat("\n\n") # spacing cat(glue::glue("#### {vri}\n\n")) # subheading for each disease print( plot_validation( data = vri_data_list[[vri]], validation_results$validation[[vri]], pred_plot = "ribbon" ) ) cat("\n\n") } ## ----eval = FALSE------------------------------------------------------------- # tmp_dir <- tempdir() # # # Save the simulated data # data_path <- file.path(tmp_dir, "simulated_data.csv") # write.csv(vri_data, data_path, row.names = FALSE) # # output_path <- tempdir() # generate_forecast_report(input_dir = data_path, # output_dir = output_path, # n_days = 7, # validate_window_size = 7, # smooth = TRUE) # # cat("Report saved to:", output_path, "\n") # # if (interactive() && file.exists(output_path)) { # utils::browseURL(output_path) # } #