R/partial_dependence.R

Defines functions partial_dependence

Documented in partial_dependence

#' Get partial variable dependences.
#'
#' @param data A data frame with columns "model" and "train" containing the model objects and training data, respectively.
#' @param pred_vars Names of predictors for which partial dependence should be computed.
#' @param ... Arguments passed on to pdp::partial.
#' @param long Boolean. Whether output should be as "long" table suited for plotting. Default is FALSE.
#'
#' @return Input data frame with added column "pdp" containing the partial variable dependence.
#' @export


partial_dependence <- function(data, pred_vars, long= FALSE, ...) {

  out <- dplyr::mutate(data, pdp = purrr::map2(model, train, function(model, train){

    model_dat <- train %>% st_set_geometry(NULL)

    map_dfr(pred_vars, function(pred_var) {
      out <- pdp::partial(model,
                   pred.var = pred_var,
                   train = model_dat)

      out[["var"]] <- colnames(out)[1]
      colnames(out)[1] <- "value"

      return(out)

    })

  }))

  if(long){
    out <- suppressWarnings(tidyr::unnest(out, pdp) %>% dplyr::select(dplyr::one_of(c("value",
                                                                                      "yhat",
                                                                                      "var",
                                                                                      "data_name",
                                                                                      "predictor_name",
                                                                                      "sampling_name",
                                                                                      "resampling_name",
                                                                                      "model_name"))))
  }

  return(out)

}
juoe/sdmflow documentation built on Feb. 23, 2020, 7:38 p.m.