Skip to content

Commit 089fd10

Browse files
authored
Merge pull request #45 from cmu-delphi/lcb-day1-regression
Add NCHS regression model slides
2 parents d428894 + d7edbab commit 089fd10

File tree

5 files changed

+397
-596
lines changed

5 files changed

+397
-596
lines changed

_casestudies/forecast-covid/forecast-covid.Rmd

+18-21
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ Now, use `epi_slide_mean()`, to calculate trailing 7 day averages of cases and d
7070
```{r trailing-averages}
7171
ca <- ca %>%
7272
epi_slide_mean(c(cases, deaths), .window_size = 7) %>%
73-
epi_slide_mean(deaths, .window_size = 7) %>%
7473
select(-cases, -deaths) %>%
7574
rename(cases = cases_7dav, deaths = deaths_7dav)
7675
```
@@ -431,7 +430,7 @@ head(test %>% select(pred_trailing_cv, time_value))
431430
```
432431

433432
The method fitting on all past data up to the forecasting date can be
434-
implemented by changing `before = Inf` in `epi_slide`.
433+
implemented by changing `.before = Inf` in `epi_slide`.
435434

436435
```{r epipredict-cv}
437436
# slide an arx_forecaster with appropriate outcome, predictions and lags
@@ -443,8 +442,8 @@ epi_pred_cv <- epi_slide(
443442
trainer = linear_reg() %>% set_engine("lm"),
444443
args_list = arx_args_list(lags = k-1, ahead = 1L)
445444
)$predictions,
446-
before = Inf,
447-
ref_time_values = fc_time_values,
445+
.before = Inf,
446+
.ref_time_values = fc_time_values,
448447
.new_col_name = "fc"
449448
) |>
450449
unpack(fc, names_sep = "_")
@@ -484,8 +483,8 @@ epi_pred_cv_7 <- epi_slide(
484483
trainer = linear_reg() %>% set_engine("lm"),
485484
args_list = arx_args_list(lags = k-n_ahead, ahead = n_ahead)
486485
)$predictions,
487-
before = Inf,
488-
ref_time_values = fc_time_values_7,
486+
.before = Inf,
487+
.ref_time_values = fc_time_values_7,
489488
.new_col_name = "fc"
490489
) |>
491490
unpack(fc, names_sep = "_")
@@ -725,8 +724,8 @@ ar_all_past <- epi_slide(
725724
trainer = linear_reg() %>% set_engine("lm"),
726725
args_list = arx_args_list(lags = 0L, ahead = 1L)
727726
)$predictions,
728-
before = Inf,
729-
ref_time_values = fc_time_values,
727+
.before = Inf,
728+
.ref_time_values = fc_time_values,
730729
.new_col_name = "all_past"
731730
) |>
732731
unpack(all_past, names_sep = "_")
@@ -739,8 +738,8 @@ ar_trailing <- epi_slide(
739738
trainer = linear_reg() %>% set_engine("lm"),
740739
args_list = arx_args_list(lags = 0L, ahead = 1L)
741740
)$predictions,
742-
before = w,
743-
ref_time_values = fc_time_values,
741+
.before = w,
742+
.ref_time_values = fc_time_values,
744743
.new_col_name = "trailing"
745744
) |>
746745
unpack(trailing, names_sep = "_")
@@ -952,8 +951,8 @@ arx_all_past <- epi_slide(
952951
args_list = arx_args_list(lags = list(0, k-1),
953952
ahead = 1L)
954953
)$predictions,
955-
before = Inf,
956-
ref_time_values = fc_time_values,
954+
.before = Inf,
955+
.ref_time_values = fc_time_values,
957956
.new_col_name = "all_past"
958957
) |>
959958
unpack(all_past, names_sep = "_")
@@ -967,8 +966,8 @@ arx_trailing <- epi_slide(
967966
args_list = arx_args_list(lags = list(0, k-1),
968967
ahead = 1L)
969968
)$predictions,
970-
before = (w+k-1),
971-
ref_time_values = fc_time_values,
969+
.before = (w+k-1),
970+
.ref_time_values = fc_time_values,
972971
.new_col_name = "trailing"
973972
) |>
974973
unpack(trailing, names_sep = "_")
@@ -1552,8 +1551,8 @@ fc_time_values <- seq(
15521551
15531552
data_archive <- data_archive %>%
15541553
epix_slide(
1555-
before = Inf,
1556-
ref_time_values = fc_time_values,
1554+
.before = Inf,
1555+
.versions = fc_time_values,
15571556
function(x, gk, rtv) {
15581557
x %>%
15591558
epi_slide_mean(case_rate, .window_size = 7L, .suffix = "_7d_av") %>%
@@ -1585,7 +1584,7 @@ pred_all_past = pred_trailing <- matrix(NA, ncol = 4, nrow = 0)
15851584
w <- 30 # trailing window size
15861585
15871586
for (fc_date in fc_time_values) {
1588-
data <- epix_as_of(ca_archive, max_version = as.Date(fc_date))
1587+
data <- epix_as_of(ca_archive, as.Date(fc_date))
15891588
data$lagged_deaths <- dplyr::lag(data$deaths, 1)
15901589
data$lagged_cases <- dplyr::lag(data$cases, k)
15911590
@@ -1729,14 +1728,12 @@ forecaster <- function(x) {
17291728
17301729
arx_preds <- data %>%
17311730
epix_slide(~ forecaster(.x),
1732-
before = 120, ref_time_values = fc_time_values,
1733-
names_sep = NULL
1731+
.before = 120, .versions = fc_time_values
17341732
) %>%
17351733
mutate(engine_type = quantile_reg()$engine) %>%
17361734
mutate(ahead_val = target_date - forecast_date)
17371735
1738-
x_latest <- epix_as_of(data,
1739-
max_version = max(data$versions_end))
1736+
x_latest <- epix_as_of(data, data$versions_end)
17401737
```
17411738

17421739

_code/cover-image.R

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ library(epiprocess)
22
library(tidyverse)
33
primary <- "#941120"
44
x <- archive_cases_dv_subset
5-
x_latest <- epix_as_of(x, max_version = max(x$DT$version))
5+
x_latest <- epix_as_of(x, max(x$DT$version))
66
self_max = max(x$DT$version)
77
versions = seq(as.Date("2020-06-01"), self_max - 1, by = "1 month")
88
snapshots_all <- map_dfr(versions, function(v) {
9-
epix_as_of(x, max_version = v) %>% mutate(version = v)}) %>%
9+
epix_as_of(x, v) %>% mutate(version = v)}) %>%
1010
bind_rows(x_latest %>% mutate(version = self_max)) %>%
1111
mutate(latest = version == self_max)
1212
snapshots <- snapshots_all %>%

_code/weekly_hhs.R

+2-3
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ if (!file.exists(file_path)) {
8080
day_of_week_end = 7L) {
8181
agg_method <- arg_match(agg_method)
8282
keys <- key_colnames(epi_arch, exclude = "time_value")
83-
ref_time_values <- epi_arch$DT$version %>%
83+
versions <- epi_arch$DT$version %>%
8484
unique() %>%
8585
sort()
8686
if (agg_method == "sum") {
@@ -90,8 +90,7 @@ if (!file.exists(file_path)) {
9090
}
9191
too_many_tibbles <- epix_slide(
9292
epi_arch,
93-
.before = 99999999L,
94-
.versions = ref_time_values,
93+
.versions = versions,
9594
function(x, group, ref_time) {
9695
ref_time_last_week_end <-
9796
floor_date(ref_time, "week", day_of_week_end - 1) # this is over by 1

0 commit comments

Comments
 (0)