Using cal_apply() with pred_class doesn't work if the factor levels use non-syntactic levels which need to be wrapped in backticks.
library(probably)
#>
#> Attaching package: 'probably'
#> The following objects are masked from 'package:base':
#>
#> as.factor, as.ordered
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
library(forcats)
seg1 <- segment_logistic %>%
mutate(.pred_class = ifelse(.pred_poor >= 0.5, "poor", "good"))
calib1 <- cal_estimate_isotonic(seg1, Class)
cal_apply(seg1, calib1, pred_class = .pred_class)
#> # A tibble: 1,010 × 4
#> .pred_poor .pred_good Class .pred_class
#> <dbl> <dbl> <fct> <fct>
#> 1 1 0 poor poor
#> 2 0.946 0.0538 poor poor
#> 3 0.254 0.746 good good
#> 4 0.254 0.746 good good
#> 5 1 0 poor poor
#> 6 0.667 0.333 good poor
#> 7 0.919 0.0815 good poor
#> 8 0 1 good good
#> 9 1 0 poor poor
#> 10 0.919 0.0815 poor poor
#> # ℹ 1,000 more rows
seg2 <- segment_logistic %>%
rename_with(~ paste0(.x, "-1"), matches(".pred")) %>%
mutate(
Class = fct_relabel(Class, ~ paste0(.x, "-1")),
.pred_class = ifelse(`.pred_poor-1` >= 0.5, "poor-1", "good-1")
)
calib2 <- cal_estimate_isotonic(seg2, Class)
cal_apply(seg2, calib2, pred_class = .pred_class)
#> Error in `res[, col_names]`:
#> ! Can't subset columns that don't exist.
#> ✖ Column `\`.pred_poor-1\`` doesn't exist.
Created on 2024-05-17 by the reprex package (v0.3.0)
Using
cal_apply()withpred_classdoesn't work if the factor levels use non-syntactic levels which need to be wrapped in backticks.Created on 2024-05-17 by the reprex package (v0.3.0)