View source: R/light_interaction.R
light_interaction | R Documentation |
This function provides Friedman's H statistic for overall interaction strength per covariable as well as its version for pairwise interactions, see the reference below.
light_interaction(x, ...)
## Default S3 method:
light_interaction(x, ...)
## S3 method for class 'flashlight'
light_interaction(
x,
data = x$data,
by = x$by,
v = NULL,
pairwise = FALSE,
type = c("H", "ice"),
normalize = TRUE,
take_sqrt = TRUE,
grid_size = 200L,
n_max = 1000L,
seed = NULL,
use_linkinv = FALSE,
...
)
## S3 method for class 'multiflashlight'
light_interaction(x, ...)
x |
An object of class "flashlight" or "multiflashlight". |
... |
Further arguments passed to or from other methods. |
data |
An optional |
by |
An optional vector of column names used to additionally group the results. |
v |
Vector of variable names to be assessed. |
pairwise |
Should overall interaction strength per variable be shown or
pairwise interactions? Defaults to |
type |
Are measures based on Friedman's H statistic ("H") or on "ice" curves?
Option "ice" is available only if |
normalize |
Should the variances explained be normalized?
Default is |
take_sqrt |
In order to reproduce Friedman's H statistic,
resulting values are root transformed. Set to |
grid_size |
Grid size used to form the outer product. Will be randomly
picked from data (after limiting to |
n_max |
Maximum number of data rows to consider. Will be randomly picked
from |
seed |
An integer random seed used for subsampling. |
use_linkinv |
Should retransformation function be applied? Default is |
As a fast alternative to assess overall interaction strength, with type = "ice"
,
the function offers a method based on centered ICE curves:
The corresponding H* statistic measures how much of the variability of a c-ICE curve
is unexplained by the main effect. As for Friedman's H statistic, it can be useful
to consider unnormalized or squared values (see Details below).
Friedman's H statistic relates the interaction strength of a variable (pair)
to the total effect strength of that variable (pair) based on partial dependence
curves. Due to this normalization step, even variables with low importance can
have high values for H. The function light_interaction()
offers the option
to skip normalization in order to have a more direct comparison of the interaction
effects across variable (pairs). The values of such unnormalized H statistics are
on the scale of the response variable. Use take_sqrt = FALSE
to return
squared values of H. Note that in general, for each variable (pair), predictions
are done on a data set with grid_size * n_max
, so be cautious with
increasing the defaults too much. Still, even with larger grid_size
and n_max
, there might be considerable variation across different runs,
thus, setting a seed is recommended.
The minimum required elements in the (multi-) flashlight are a "predict_function", "model", and "data".
An object of class "light_importance" with the following elements:
data
A tibble containing the results. Can be used to build fully customized
visualizations. Column names can be controlled by
options(flashlight.column_name)
.
by
Same as input by
.
type
Same as input type
. For information only.
light_interaction(default)
: Default method not implemented yet.
light_interaction(flashlight)
: Interaction strengths for a flashlight object.
light_interaction(multiflashlight)
: for a multiflashlight object.
Friedman, J. H. and Popescu, B. E. (2008). "Predictive learning via rule ensembles." The Annals of Applied Statistics. JSTOR, 916–54.
light_ice()
v <- c("Petal.Length", "Petal.Width")
fit_add <- stats::lm(Sepal.Length ~ Petal.Length + Petal.Width, data = iris)
fit_nonadd <- stats::lm(Sepal.Length ~ Petal.Length * Petal.Width, data = iris)
fl_add <- flashlight(model = fit_add, label = "additive")
fl_nonadd <- flashlight(model = fit_nonadd, label = "nonadditive")
fls <- multiflashlight(list(fl_add, fl_nonadd), data = iris)
plot(st <- light_interaction(fls, v = v), fill = "darkgreen")
plot(light_interaction(fls, v = v, pairwise = TRUE), fill = "darkgreen")
plot(st <- light_interaction(fls, v = v, by = "Species"), fill = "darkgreen")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.