@@ -39,19 +39,25 @@ flatline_forecaster <- function(
39
39
ek <- kill_time_value(keys )
40
40
outcome <- rlang :: sym(outcome )
41
41
42
+ args_list $ forecast_date <- args_list $ forecast_date %|| % max(epi_data $ time_value )
43
+ if (is.null(args_list $ ahead ) && is.null(args_list $ target_date )) {
44
+ args_list $ ahead <- 7L
45
+ args_list $ target_date <- args_list $ forecast_date + args_list $ ahead
46
+ } else if (is.null(args_list $ ahead )) {
47
+ args_list $ ahead <- as.integer(difftime(args_list $ target_date , args_list $ forecast_date , units = " days" ))
48
+ } else if (is.null(args_list $ target_date )) {
49
+ args_list $ target_date <- args_list $ forecast_date + args_list $ ahead
50
+ }
42
51
43
52
r <- epi_recipe(epi_data ) %> %
44
53
step_epi_ahead(!! outcome , ahead = args_list $ ahead , skip = TRUE ) %> %
45
54
recipes :: update_role(!! outcome , new_role = " predictor" ) %> %
46
55
recipes :: add_role(tidyselect :: all_of(keys ), new_role = " predictor" ) %> %
47
56
step_training_window(n_recent = args_list $ n_training )
48
57
49
- forecast_date <- args_list $ forecast_date %|| % max(epi_data $ time_value )
50
- target_date <- args_list $ target_date %|| % (forecast_date + args_list $ ahead )
51
-
52
58
latest <- get_test_data(
53
59
epi_recipe(epi_data ), epi_data , TRUE , args_list $ nafill_buffer ,
54
- forecast_date
60
+ args_list $ forecast_date
55
61
)
56
62
57
63
f <- frosting() %> %
@@ -61,8 +67,8 @@ flatline_forecaster <- function(
61
67
symmetrize = args_list $ symmetrize ,
62
68
by_key = args_list $ quantile_by_key
63
69
) %> %
64
- layer_add_forecast_date(forecast_date = forecast_date ) %> %
65
- layer_add_target_date(target_date = target_date )
70
+ layer_add_forecast_date(forecast_date = args_list $ forecast_date ) %> %
71
+ layer_add_target_date(target_date = args_list $ target_date )
66
72
if (args_list $ nonneg ) f <- layer_threshold(f , dplyr :: starts_with(" .pred" ))
67
73
68
74
eng <- parsnip :: linear_reg() %> % parsnip :: set_engine(" flatline" )
@@ -87,7 +93,6 @@ flatline_forecaster <- function(
87
93
}
88
94
89
95
90
-
91
96
# ' Flatline forecaster argument constructor
92
97
# '
93
98
# ' Constructs a list of arguments for [flatline_forecaster()].
@@ -108,7 +113,7 @@ flatline_forecaster <- function(
108
113
# ' flatline_args_list(symmetrize = FALSE)
109
114
# ' flatline_args_list(quantile_levels = c(.1, .3, .7, .9), n_training = 120)
110
115
flatline_args_list <- function (
111
- ahead = 7L ,
116
+ ahead = NULL ,
112
117
n_training = Inf ,
113
118
forecast_date = NULL ,
114
119
target_date = NULL ,
@@ -119,11 +124,11 @@ flatline_args_list <- function(
119
124
nafill_buffer = Inf ,
120
125
... ) {
121
126
rlang :: check_dots_empty()
122
- arg_is_scalar(ahead , n_training )
127
+ arg_is_scalar(n_training )
123
128
arg_is_chr(quantile_by_key , allow_empty = TRUE )
124
129
arg_is_scalar(forecast_date , target_date , allow_null = TRUE )
125
130
arg_is_date(forecast_date , target_date , allow_null = TRUE )
126
- arg_is_nonneg_int(ahead )
131
+ arg_is_nonneg_int(ahead , allow_null = TRUE )
127
132
arg_is_lgl(symmetrize , nonneg )
128
133
arg_is_probabilities(quantile_levels , allow_null = TRUE )
129
134
arg_is_pos(n_training )
0 commit comments