22
22
# ' rq_spec <- quantile_reg(quantile_levels = c(.2, .8)) %>% set_engine("rq")
23
23
# ' ff <- rq_spec %>% fit(y ~ ., data = tib)
24
24
# ' predict(ff, new_data = tib)
25
- quantile_reg <- function (mode = " regression" , engine = " rq" , quantile_levels = 0.5 ) {
25
+ quantile_reg <- function (mode = " regression" , engine = " rq" , quantile_levels = 0.5 , method = " br " ) {
26
26
# Check for correct mode
27
27
if (mode != " regression" ) {
28
28
cli_abort(" `mode` must be 'regression'" )
@@ -35,7 +35,7 @@ quantile_reg <- function(mode = "regression", engine = "rq", quantile_levels = 0
35
35
cli :: cli_warn(" Sorting `quantile_levels` to increasing order." )
36
36
quantile_levels <- sort(quantile_levels )
37
37
}
38
- args <- list (quantile_levels = rlang :: enquo(quantile_levels ))
38
+ args <- list (quantile_levels = rlang :: enquo(quantile_levels ), method = rlang :: enquo( method ) )
39
39
40
40
# Save some empty slots for future parts of the specification
41
41
parsnip :: new_model_spec(
@@ -54,9 +54,6 @@ make_quantile_reg <- function() {
54
54
parsnip :: set_new_model(" quantile_reg" )
55
55
}
56
56
parsnip :: set_model_mode(" quantile_reg" , " regression" )
57
-
58
-
59
-
60
57
parsnip :: set_model_engine(" quantile_reg" , " regression" , eng = " rq" )
61
58
parsnip :: set_dependency(" quantile_reg" , eng = " rq" , pkg = " quantreg" )
62
59
@@ -68,6 +65,14 @@ make_quantile_reg <- function() {
68
65
func = list (pkg = " quantreg" , fun = " rq" ),
69
66
has_submodel = FALSE
70
67
)
68
+ parsnip :: set_model_arg(
69
+ model = " quantile_reg" ,
70
+ eng = " rq" ,
71
+ parsnip = " method" ,
72
+ original = " method" ,
73
+ func = list (pkg = " quantreg" , fun = " rq" ),
74
+ has_submodel = FALSE
75
+ )
71
76
72
77
parsnip :: set_fit(
73
78
model = " quantile_reg" ,
@@ -78,7 +83,6 @@ make_quantile_reg <- function() {
78
83
protect = c(" formula" , " data" , " weights" ),
79
84
func = c(pkg = " quantreg" , fun = " rq" ),
80
85
defaults = list (
81
- method = " br" ,
82
86
na.action = rlang :: expr(stats :: na.omit ),
83
87
model = FALSE
84
88
)
@@ -101,7 +105,6 @@ make_quantile_reg <- function() {
101
105
object <- parsnip :: extract_fit_engine(object )
102
106
type <- class(object )[1 ]
103
107
104
-
105
108
# can't make a method because object is second
106
109
out <- switch (type ,
107
110
rq = dist_quantiles(unname(as.list(x )), object $ quantile_levels ), # one quantile
@@ -117,7 +120,6 @@ make_quantile_reg <- function() {
117
120
return (data.frame (.pred = out ))
118
121
}
119
122
120
-
121
123
parsnip :: set_pred(
122
124
model = " quantile_reg" ,
123
125
eng = " rq" ,
0 commit comments