@@ -35,7 +35,7 @@ test_that("epi_slide_opt_archive_one_epikey works as expected", {
35
35
),
36
36
tibble(
37
37
version = 13 , time_value = 8 : 10 , value = c(9 , 9 , 10 ),
38
- slide_value = frollmean(c(6 , 7 , 9 , 9 , 10 ), 3 , algo = " exact" )[- (1 : 2 )]
38
+ slide_value = frollmean(c(6 , 7 , 9 , 9 , 10 ), 3 , algo = " exact" )[- (1 : 2 )]
39
39
),
40
40
tibble(
41
41
version = 14 , time_value = 11 : 13 , value = c(NA , 12 , 13 ), slide_value = rep(NA_real_ , 3L )
@@ -89,7 +89,6 @@ test_that("epi_slide_opt.epi_archive is not confused by unique(DT$version) unsor
89
89
})
90
90
91
91
test_that(" epi_slide_opt.epi_archive is not confused by unique(DT$time_value) unsorted" , {
92
-
93
92
start_date <- as.Date(" 2020-01-01" )
94
93
tibble(
95
94
geo_value = c(1 , 1 , 2 , 2 ),
@@ -109,26 +108,77 @@ test_that("epi_slide_opt.epi_archive is not confused by unique(DT$time_value) un
109
108
) %> %
110
109
as_epi_archive()
111
110
)
112
-
113
111
})
114
112
115
- test_that(" epi_slide_opt.epi_archive is equivalent to epix_slide reconversion on example data" , {
116
-
117
- case_death_rate_archive %> %
118
- epi_slide_opt(case_rate , frollmean , .window_size = 7
119
- # , algo = "exact"
120
- ) %> %
121
- . $ DT %> %
122
- as.data.frame() %> %
123
- as_tibble() %> %
124
- filter(! approx_equal(case_rate_7dav , case_rate_7d_av , 1e-6 , TRUE )) %> %
125
- dplyr :: transmute(version , geo_value , time_value , case_rate_7dav , case_rate_7d_av ,
126
- abs_diff = abs(case_rate_7dav - case_rate_7d_av )) %> %
127
- {}
128
-
129
- # TODO finish tests on example data sets
130
-
131
- })
132
-
113
+ test_that(" epi_slide_opt.epi_archive gives expected results on example data" , {
114
+ # vs. built-in case_rate_7d_av column.
115
+ #
116
+ # If we were to compare the keyset vs.
117
+ # the original, it changes, as the original contains some tiny deviations in
118
+ # values that don't seem achievable with available sliding functions. E.g., in
119
+ # the recomputed result, geo "ak" version "2020-11-01" changes time 2020-03-13
120
+ # from 0 to 0.138 and time 2020-03-14 from a slightly different value of 0.138
121
+ # to 0, while nearby times remained stable; in the original, this resulted in
122
+ # a tiny update to the 7d_av for 2020-03-14 but not following times somehow,
123
+ # while in the recomputation there are also minute updates to 2020-03-15 and
124
+ # 2020-03-16; 2020-03-17 onward have other case_rate changes factoring in.
125
+ # Compactifying and comparing with tolerances would help account for some of
126
+ # these differences, but only through writing this was it realized that both
127
+ # archives would need the recompactification with tolerance; it's not just
128
+ # epi_slide_opt.epi_archive's very rigid compactification that's the cause.
129
+ # (Side note: allowing configurable compactification tolerance in
130
+ # epi_slide_opt.epi_archive wasn't included due to either feeling strange
131
+ # applying the compactification tolerance to all columns rather than just
132
+ # computed columns, and a slowdown when using one approach to compactify just
133
+ # the new columns + also awkward not matching what's possible with just
134
+ # construction functions.)
135
+ #
136
+ # --> just compare essentially an epix_merge of the original & the recomputation:
137
+ case_death_rate_archive_time <- system.time(
138
+ case_death_rate_archive_result <- case_death_rate_archive %> %
139
+ epi_slide_opt(case_rate , frollmean , algo = " exact" , .window_size = 7 )
140
+ )
141
+ expect_equal(
142
+ case_death_rate_archive_result $ DT $ case_rate_7dav ,
143
+ case_death_rate_archive_result $ DT $ case_rate_7d_av
144
+ )
145
+
146
+ # vs. computing via epix_slide:
147
+
148
+ mini_case_death_rate_archive <- case_death_rate_archive %> %
149
+ {
150
+ as_tibble(as.data.frame(. $ DT ))
151
+ } %> %
152
+ filter(geo_value %in% head(unique(geo_value ), 4L )) %> %
153
+ as_epi_archive()
154
+
155
+ mini_case_death_rate_archive_time_opt <- system.time(
156
+ mini_case_death_rate_archive_result <- mini_case_death_rate_archive %> %
157
+ epi_slide_opt(case_rate , frollmean , .window_size = 7 )
158
+ )
159
+
160
+ mini_case_death_rate_archive_time_gen <- system.time(
161
+ mini_case_death_rate_archive_expected <- mini_case_death_rate_archive %> %
162
+ epix_slide(~ .x %> % epi_slide_opt(case_rate , frollmean , .window_size = 7 )) %> %
163
+ select(names(mini_case_death_rate_archive $ DT ), everything()) %> %
164
+ as_epi_archive()
165
+ )
166
+
167
+ expect_equal(mini_case_death_rate_archive_result , mini_case_death_rate_archive_expected )
168
+
169
+ archive_cases_dv_subset_time_opt <- system.time(
170
+ archive_cases_dv_subset_result <- archive_cases_dv_subset %> %
171
+ epi_slide_opt(percent_cli , frollmean , .window_size = 7 )
172
+ )
173
+
174
+ archive_cases_dv_subset_time_gen <- system.time(
175
+ archive_cases_dv_subset_expected <- archive_cases_dv_subset %> %
176
+ epix_slide(~ .x %> % epi_slide_opt(percent_cli , frollmean , .window_size = 7 )) %> %
177
+ select(geo_value , time_value , version , everything()) %> %
178
+ as_epi_archive()
179
+ )
180
+
181
+ expect_equal(archive_cases_dv_subset_result , archive_cases_dv_subset_expected )
182
+ })
133
183
134
184
# TODO grouped behavior checks
0 commit comments