Skip to content

Commit 1167343

Browse files
Fix sorting
1 parent c372822 commit 1167343

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

pipeline/04-interpret.R

+20-7
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,15 @@ if (shap_enable || comp_enable) {
3535
# shap values and comps based on the generated prediction for multi-card pins.
3636
# More details in multi-card handling in the assess stage.
3737
# https://github.com/ccao-data/model-res-avm/issues/358
38-
assessment_data <- assessment_data %>%
38+
39+
# Persist sort order
40+
assessment_data_ordered <- assessment_data %>%
41+
group_by(meta_pin) %>%
42+
arrange(desc(char_bldg_sf), meta_card_num) %>%
43+
mutate(sqft_card_num_sort = row_number()) %>%
44+
ungroup()
45+
46+
assessment_data <- assessment_data_ordered %>%
3947
mutate(
4048
char_bldg_sf = ifelse(
4149
ind_pin_is_multicard & meta_pin_num_cards %in% c(2, 3),
@@ -44,10 +52,11 @@ if (shap_enable || comp_enable) {
4452
),
4553
.by = meta_pin
4654
)
55+
4756
# Run the saved recipe on the assessment data to format it for prediction
4857
assessment_data_prepped <- recipes::bake(
4958
object = lgbm_final_full_recipe,
50-
new_data = assessment_data,
59+
new_data = assessment_data %>% select(-sqft_card_num_sort),
5160
all_predictors()
5261
)
5362
}
@@ -91,16 +100,19 @@ if (shap_enable) {
91100
select(
92101
meta_year, meta_pin, meta_card_num,
93102
meta_pin_num_cards,
94-
township_code = meta_township_code
103+
township_code = meta_township_code,
104+
sqft_card_num_sort
95105
) %>%
96106
bind_cols(shap_values_tbl) %>%
97107
select(
98-
meta_year, meta_pin, meta_card_num,
108+
meta_year, meta_pin, meta_card_num, sqft_card_num_sort,
99109
meta_pin_num_cards, pred_card_shap_baseline_fmv,
100110
all_of(params$model$predictor$all), township_code
101111
) %>%
102112
group_by(meta_pin) %>%
103-
arrange(desc(char_bldg_sf), meta_card_num) %>%
113+
# Replicate sort used in the assess stage to ensure the same card's chars
114+
# are used accross the assess stage and interpret stage
115+
arrange(sqft_card_num_sort) %>%
104116
group_modify(~ {
105117
shap_cols <- c("pred_card_shap_baseline_fmv", params$model$predictor$all)
106118
# If the first row indicates 2 or 3 cards,
@@ -154,7 +166,8 @@ if (comp_enable) {
154166

155167
# Filter target properties for only the current triad, to speed up the comps
156168
# algorithm
157-
comp_assessment_data_preprocess <- assessment_data %>% filter(
169+
comp_assessment_data_preprocess <- assessment_data %>%
170+
filter(
158171
meta_township_code %in% (
159172
ccao::town_dict %>%
160173
filter(triad_name == tools::toTitleCase(params$assessment$triad)) %>%
@@ -172,7 +185,7 @@ if (comp_enable) {
172185

173186
selected_cards <- multicard_props %>%
174187
group_by(meta_pin) %>%
175-
arrange(desc(char_bldg_sf), meta_card_num) %>%
188+
arrange(sqft_card_num_sort) %>%
176189
slice(1) %>%
177190
ungroup()
178191

0 commit comments

Comments
 (0)