## -----------------------------------------------------------------------------
library("pre")

## -----------------------------------------------------------------------------
airq <- na.omit(airquality)
set.seed(42)
airq.ens <- pre(Ozone ~ ., data = airq)
airq.ens ## equivalent to print(airq.ens)

## -----------------------------------------------------------------------------
airq.shaps <- shap(airq.ens, newdata = airq)

## -----------------------------------------------------------------------------
str(airq.shaps)

## -----------------------------------------------------------------------------
plot.shap <- \(object, shaps, variable, ...) {
  plot(object$data[ , variable], shaps$marginal[ , variable], 
     xlab = variable, ylab = "SHAP", ...)
}

## -----------------------------------------------------------------------------
par(mfrow = c(1, 2))
plot.shap(airq.ens, airq.shaps, "Wind")
plot.shap(airq.ens, airq.shaps, "Month")

## -----------------------------------------------------------------------------
library("shapviz")
baseline <- mean(predict(airq.ens, newdata = airq))
sv <- shapviz(object = airq.shaps$marginal, 
              X = airq, 
              baseline = baseline)

## ----fig.width=5.5,fig.height=4-----------------------------------------------
sv_importance(sv, kind = "bee")

## -----------------------------------------------------------------------------
sv_waterfall(sv, row_id = 1)

## -----------------------------------------------------------------------------
airq.shaps <- shap(airq.ens, newdata = airq, interactions = TRUE)
str(airq.shaps)

## -----------------------------------------------------------------------------
airq.shaps$interactions[1, , ]

## -----------------------------------------------------------------------------
rowSums(airq.shaps$interactions[1, , ])
colSums(airq.shaps$interactions[1, , ])
airq.shaps$marginal[1, ]

## ----fig.width=7,fig.height=4-------------------------------------------------
baseline <- mean(predict(airq.ens, newdata = airq))
sv_int <- shapviz(object = airq.shaps$marginal, 
                  X = airq, 
                  baseline = baseline,
                  S_inter = airq.shaps$interactions)
sv_interaction(sv_int)

## ----echo=FALSE---------------------------------------------------------------
sessionInfo()

