## ----------------------------------------------------------------------------- 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()