## ----setup, include = FALSE----------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) old_options <- options(width = 70) ## ----load----------------------------------------------------------- library(deriva) ## ----quickstart----------------------------------------------------- # Simulate a stream: 500 stable observations, then 500 with higher error rate stream <- sim_drift_stream(n_pre = 500, n_post = 500, p_pre = 0.05, p_post = 0.30, seed = 42) result <- detect_drift(stream, .col = error, method = "ddm") # Where was drift flagged? subset(result, .drift) ## ----spec----------------------------------------------------------- spec <- drift_detector("ddm", min_instances = 30) spec ## ----fit------------------------------------------------------------ baseline <- sim_drift_stream(n_pre = 300, n_post = 0, seed = 1) fitted <- fit(spec, baseline, signal = error) fitted ## ----advance-------------------------------------------------------- batch1 <- sim_drift_stream(n_pre = 200, n_post = 0, seed = 2) batch2 <- sim_drift_stream(n_pre = 0, n_post = 300, p_post = 0.35, seed = 3) fitted2 <- advance(fitted, batch1) fitted3 <- advance(fitted2, batch2) fitted3 ## ----augment-------------------------------------------------------- history <- augment(fitted3) tail(history[, c("t", "error", ".phase", ".warning", ".drift")], 10) ## ----tidy----------------------------------------------------------- tidy(fitted3) ## ----glance--------------------------------------------------------- glance(fitted3) ## ----autoplot, eval = requireNamespace("ggplot2", quietly = TRUE), fig.width = 6.5, fig.height = 3.5---- library(ggplot2) autoplot(fitted3) ## ----bridge--------------------------------------------------------- # Simulate tidymodels augment() output for a classifier predictions <- data.frame( time = 1:8, truth = factor(c("yes","no","yes","yes","no","yes","no","yes")), .pred_class = factor(c("yes","no","yes","no" ,"no","no" ,"no","yes")) ) add_prediction_error(predictions, truth = truth) ## ----kswin---------------------------------------------------------- cont_stream <- sim_dist_stream( n_pre = 500, n_post = 500, mean_pre = 0, mean_post = 2, seed = 99 ) detect_drift(cont_stream, .col = value, method = "kswin") |> subset(.drift) |> head() ## ----cleanup, include = FALSE------------------------------------------------- options(old_options)