The basic idea of the ROC curves for regression is to show model asymmetry. The RROC is a plot where on the x-axis we depict total over-estimation and on the y-axis total under-estimation.

plot_rroc(object, ...)

plotRROC(object, ...)

## Arguments

object An object of class 'auditor_model_residual' created with model_residual function. Other 'auditor_model_residual' objects to be plotted together.

A ggplot object.

## Details

For RROC curves we use a shift, which is an equivalent to the threshold for ROC curves. For each observation we calculate new prediction: $$\hat{y}'=\hat{y}+s$$ where s is the shift. Therefore, there are different error values for each shift: $$e_i = \hat{y_i}' - y_i$$

Over-estimation is calculated as: $$OVER= \sum(e_i|e_i>0)$$.

Under-estimation is calculated as: $$UNDER = \sum(e_i|e_i<0)$$.

The shift equals 0 is represented by a dot.

The Area Over the RROC Curve (AOC) equals to the variance of the errors multiplied by $$frac{n^2}{2}$$.

## References

Hernández-Orallo, José. 2013. ‘ROC Curves for Regression’. Pattern Recognition 46 (12): 3395–3411.

 plot_roc, plot_rec

## Examples

dragons <- DALEX::dragons[1:100, ]

# fit a model
model_lm <- lm(life_length ~ ., data = dragons)

# use DALEX package to wrap up a model into explainer
exp_lm <- DALEX::explain(model_lm, data = dragons, y = dragons$life_length)#> Preparation of a new explainer is initiated #> -> model label : lm (default) #> -> data : 100 rows 8 cols #> -> target variable : 100 values #> -> predict function : yhat.lm will be used (default) #> -> predicted values : numerical, min = 585.8311 , mean = 1347.787 , max = 2942.307 #> -> residual function : difference between y and yhat (default) #> -> residuals : numerical, min = -88.41755 , mean = -1.489291e-13 , max = 77.92805 #> A new explainer has been created! # validate a model with auditor library(auditor) mr_lm <- model_residual(exp_lm) # plot results plot_rroc(mr_lm)plot(mr_lm, type = "rroc") library(randomForest) model_rf <- randomForest(life_length~., data = dragons) exp_rf <- DALEX::explain(model_rf, data = dragons, y = dragons$life_length)#> Preparation of a new explainer is initiated
#>   -> model label       :  randomForest  (default)
#>   -> data              :  100  rows  8  cols
#>   -> target variable   :  100  values
#>   -> predict function  :  yhat.randomForest  will be used (default)
#>   -> predicted values  :  numerical, min =  757.2392 , mean =  1342.454 , max =  2458.824
#>   -> residual function :  difference between y and yhat (default)
#>   -> residuals         :  numerical, min =  -188.4792 , mean =  5.333135 , max =  439.597
#> A new explainer has been created!mr_rf <- model_residual(exp_rf)
plot_rroc(mr_lm, mr_rf)plot(mr_lm, mr_rf, type="rroc")