Skip to contents

Quantile Regression with generalized additive models for fitting a learner on multiple quantiles simultaneously. Calls qgam::mqgam() from package qgam.

Form

For the form parameter, a gam formula specific to the Task is required (see example and ?mgcv::formula.gam). If no formula is provided, a fallback formula using all features in the task is used that will make the Learner behave like Linear Quantile Regression. The features specified in the formula need to be the same as columns with col_roles "feature" in the task.

Quantile

The quantiles for the Learner, i.e. qu parameter from qgam::mqgam(), is set using the values specified in learner$quantiles. The response quantile can be specified using learner$quantile_response.

Dictionary

This Learner can be instantiated via lrn():

lrn("regr.mqgam")

Meta Information

  • Task type: “regr”

  • Predict Types: “response”, “se”, “quantiles”

  • Feature Types: “logical”, “integer”, “numeric”, “factor”

  • Required Packages: mlr3, qgam

Parameters

IdTypeDefaultLevelsRange
formuntyped--
lsignumeric-\((-\infty, \infty)\)
errnumeric-\([0, 1]\)
clusteruntypedNULL-
multicorelogical-TRUE, FALSE-
ncoresnumeric-\((-\infty, \infty)\)
paroptsuntypedlist()-
linkuntyped"identity"-
argGamuntyped--
discretelogicalFALSETRUE, FALSE-

References

Fasiolo, Matteo, Wood, N. S, Zaffran, Margaux, Nedellec, Raphael, Goude, Yannig (2017). “Fast Calibrated Additive Quantile Regression.” Journal of the American Statistical Association, 116, 1402–1412. doi:10.1080/01621459.2020.1725521 .

See also

Author

lona-k

Super classes

mlr3::Learner -> mlr3::LearnerRegr -> LearnerRegrMQGam

Methods

Inherited methods


Method new()

Creates a new instance of this R6 class.

Usage


Method clone()

The objects of this class are cloneable with this method.

Usage

LearnerRegrMQGam$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

# Define the Learner
learner = mlr3::lrn("regr.mqgam")
learner$param_set$values$form = mpg ~ cyl + am + s(disp) + s(hp)
learner$quantiles = c(0.05, 0.5, 0.95)
learner$quantile_response = 0.5
print(learner)
#> <LearnerRegrMQGam:regr.mqgam>: Regression Quantile Generalized Additive Model Learner
#> * Model: -
#> * Parameters: form=<formula>
#> * Packages: mlr3, qgam
#> * Predict Types:  response, se, [quantiles]
#> * Feature Types: logical, integer, numeric, factor
#> * Properties: weights

# Define a Task
task = mlr3::tsk("mtcars")
task$select(c("cyl", "am", "disp", "hp"))

# Create train and test set
ids = mlr3::partition(task)

# Train the learner on the training ids
learner$train(task, row_ids = ids$train)
#> Estimating learning rate. Each dot corresponds to a loss evaluation. 
#> qu = 0.5.................done 
#> qu = 0.95....................done 
#> qu = 0.05...................done 

# Make predictions for the test rows
predictions = learner$predict(task, row_ids = ids$test)

# Score the predictions
predictions$score()
#> regr.mse 
#> 9.497234