## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.width = 6,
  fig.height = 4
)

## ----setup--------------------------------------------------------------------
library(triageR)
library(mlbench)

## -----------------------------------------------------------------------------
data(PimaIndiansDiabetes)

pima <- PimaIndiansDiabetes
pima$id <- seq_len(nrow(pima))

pima$glucose[pima$glucose == 0]   <- NA
pima$pressure[pima$pressure == 0] <- NA
pima$triceps[pima$triceps == 0]   <- NA
pima$insulin[pima$insulin == 0]   <- NA
pima$mass[pima$mass == 0]         <- NA

pima_loaded <- tr_load_clinical(pima, id_col = "id")
pima_loaded

## -----------------------------------------------------------------------------
tr_check_missing(pima_loaded)

## ----message = FALSE, results = "hide"----------------------------------------
pima_for_impute <- pima_loaded[, setdiff(names(pima_loaded), "id")]
pima_imputed <- tr_impute(pima_for_impute, method = "mice", m = 5)

## -----------------------------------------------------------------------------
sum(is.na(pima_imputed))

## -----------------------------------------------------------------------------
set.seed(42)
n <- nrow(pima_imputed)
train_idx <- sample(seq_len(n), size = floor(0.7 * n))

pima_train <- pima_imputed[train_idx, ]
pima_test  <- pima_imputed[-train_idx, ]

pima_model <- tr_fit(pima_train, outcome = "diabetes", engine = "logistic_reg")

## -----------------------------------------------------------------------------
pima_model_rf  <- tr_fit(pima_train, outcome = "diabetes", engine = "random_forest")
pima_model_xgb <- tr_fit(pima_train, outcome = "diabetes", engine = "boost_tree")

## -----------------------------------------------------------------------------
pima_validation     <- tr_validate(pima_model, newdata = pima_test)
pima_validation_rf  <- tr_validate(pima_model_rf, newdata = pima_test)
pima_validation_xgb <- tr_validate(pima_model_xgb, newdata = pima_test)

## -----------------------------------------------------------------------------
pima_validation$roc_plot

## -----------------------------------------------------------------------------
engine_comparison <- dplyr::bind_rows(
  dplyr::mutate(pima_validation$metrics, engine = "logistic_reg"),
  dplyr::mutate(pima_validation_rf$metrics, engine = "random_forest"),
  dplyr::mutate(pima_validation_xgb$metrics, engine = "boost_tree")
)

tidyr::pivot_wider(engine_comparison, names_from = .metric, values_from = .estimate)

## -----------------------------------------------------------------------------
pima_validation_rf$roc_plot
pima_validation_xgb$roc_plot

## -----------------------------------------------------------------------------
tr_explain(pima_model, method = "permutation")

## -----------------------------------------------------------------------------
pima_review <- tr_agent_review(pima_train, pima_model, use_agent = FALSE)

## -----------------------------------------------------------------------------
pima_sensitivity <- tr_sensitivity(pima_train, pima_model)

## ----eval = FALSE-------------------------------------------------------------
# tr_tripod_report(
#   model = pima_model,
#   validation = pima_validation,
#   review = pima_review,
#   sensitivity = pima_sensitivity,
#   output_file = file.path(tempdir(), "pima_diabetes_report"),
#   format = "html"
# )

## ----eval = FALSE-------------------------------------------------------------
# tr_recommend_method(
#   pima_train,
#   outcome = "diabetes",
#   context = "predicting diabetes onset in adult women"
# )

