Plots waterfall break down for objects of the break_down
class.
plotD3(x, ...)
# S3 method for break_down
plotD3(
x,
...,
baseline = NA,
max_features = 10,
digits = 3,
rounding_function = round,
bar_width = 12,
margin = 0.2,
scale_height = FALSE,
min_max = NA,
vcolors = NA,
chart_title = NA,
time = 0,
max_vars = NULL,
reload = FALSE
)
an explanation created with break_down
other parameters.
if numeric then veritical line will start in baseline
.
maximal number of features to be included in the plot. By default it's 10
.
number of decimal places (round
) or significant digits (signif
) to be used.
See the rounding_function
argument.
a function to be used for rounding numbers.
This should be signif
which keeps a specified number of significant digits or round
(which is default) to have the same precision for all components.
width of bars in px. By default it's 12px
extend x axis domain range to adjust the plot. Usually value between 0.1 and 0.3, by default it's 0.2
if TRUE
, the height of the plot scales with window size
a range of OX axis. By deafult NA
therefore will be extracted from the contributions of x
.
But can be set to some constants, usefull if these plots are used for comparisons.
If NA
(default), DrWhy colors are used.
a character. Set custom title
in ms. Set the animation length
alias for the max_features
parameter.
Reload the plot on resize. By default it's FALSE
.
a r2d3
object.
Explanatory Model Analysis. Explore, Explain and Examine Predictive Models. https://ema.drwhy.ai
library("DALEX")
library("iBreakDown")
set.seed(1313)
model_titanic_glm <- glm(survived ~ gender + age + fare,
data = titanic_imputed, family = "binomial")
explain_titanic_glm <- explain(model_titanic_glm,
data = titanic_imputed,
y = titanic_imputed$survived,
label = "glm")
#> Preparation of a new explainer is initiated
#> -> model label : glm
#> -> data : 2207 rows 8 cols
#> -> target variable : 2207 values
#> -> predict function : yhat.glm will be used ( default )
#> -> predicted values : No value for predict function target column. ( default )
#> -> model_info : package stats , ver. 4.1.2 , task classification ( default )
#> -> predicted values : numerical, min = 0.1490412 , mean = 0.3221568 , max = 0.9878987
#> -> residual function : difference between y and yhat ( default )
#> -> residuals : numerical, min = -0.8898433 , mean = 4.198546e-13 , max = 0.8448637
#> A new explainer has been created!
bd_glm <- local_attributions(explain_titanic_glm, titanic_imputed[1, ])
bd_glm
#> contribution
#> glm: intercept 0.322
#> glm: gender = male -0.107
#> glm: fare = 7.11 -0.018
#> glm: age = 42 -0.014
#> glm: class = 3rd 0.000
#> glm: embarked = Southampton 0.000
#> glm: sibsp = 0 0.000
#> glm: parch = 0 0.000
#> glm: survived = 0 0.000
#> glm: prediction 0.183
plotD3(bd_glm)
# \dontrun{
## Not run:
library("randomForest")
m_rf <- randomForest(status ~ . , data = HR[2:2000,])
new_observation <- HR_test[1,]
new_observation
#> gender age hours evaluation salary status
#> 1 male 57.72683 42.31527 2 2 fired
p_fun <- function(object, newdata){predict(object, newdata=newdata, type = "prob")}
bd_rf <- local_attributions(m_rf,
data = HR_test,
new_observation = new_observation,
predict_function = p_fun)
bd_rf
#> contribution
#> randomForest.formula.fired: intercept 0.379
#> randomForest.formula.fired: hours = 42.32 0.220
#> randomForest.formula.fired: evaluation = 2 0.054
#> randomForest.formula.fired: salary = 2 -0.152
#> randomForest.formula.fired: age = 57.73 0.204
#> randomForest.formula.fired: gender = male 0.164
#> randomForest.formula.fired: status = fired 0.000
#> randomForest.formula.fired: prediction 0.868
#> randomForest.formula.ok: intercept 0.280
#> randomForest.formula.ok: hours = 42.32 -0.030
#> randomForest.formula.ok: evaluation = 2 0.089
#> randomForest.formula.ok: salary = 2 0.154
#> randomForest.formula.ok: age = 57.73 -0.206
#> randomForest.formula.ok: gender = male -0.160
#> randomForest.formula.ok: status = fired 0.000
#> randomForest.formula.ok: prediction 0.128
#> randomForest.formula.promoted: intercept 0.341
#> randomForest.formula.promoted: hours = 42.32 -0.189
#> randomForest.formula.promoted: evaluation = 2 -0.144
#> randomForest.formula.promoted: salary = 2 -0.002
#> randomForest.formula.promoted: age = 57.73 0.002
#> randomForest.formula.promoted: gender = male -0.004
#> randomForest.formula.promoted: status = fired 0.000
#> randomForest.formula.promoted: prediction 0.004
plotD3(bd_rf)
# }